MySQL用户授权
什么是数据库
- 数据库概述:数据库是按照一定的数据结构将数据存储在存储器的集合
- 常见数据库软件
软件名 | 开源 | 跨平台 | 厂 商 |
---|---|---|---|
Oracle | 否 | 是 | 甲骨文 |
MySQL | 是 | 是 | 甲骨文 |
SQL Server | 否 | 否 | 微软 |
DB2 | 否 | 是 | IBM |
MongoDB | 是 | 是 | MongoDB Inc. |
Redis | 是 | 是 | 开源软件 |
Memcached | 是 | 是 | 开源软件 |
- DB (DataBase)
- 数据库
- 依照某种数据模型进行组织并存放到存储器的数据集合
- DBMS (DataBase Management System)
- 数据库管理系统
- 用来操纵和管理数据库的服务软件
- DBS (DataBase System)
- 数据库系统:即 DB+DBMS
- 指带有数据库并整合了数据库管理软件的计算机系统
MySQL介绍
-
MySQL是一个开源的关系型数据库管理系统(RDBMS),由瑞典公司 MySQL AB 开发,后被 Sun Microsystems 收购,并最终被 Oracle Corporation 收购。MySQL 因其高性能、易用性、可扩展性和稳定性而广受欢迎,并被广泛应用于各种规模的应用程序中,从个人项目到大型企业级应用。
-
主要特点
- 适用于中小规模、关系型数据库系统
- 支持Linux、Unix、Windows等多种操作系统
- 支持Python、Java、Perl、PHP等编程语言
- LAMP平台,与Apache HTTP Server组合
- LNMP平台,与Nginx组合
安装MySQL
mysql主机操作
[root@mysql ~]# dnf -y install mysql-server mysql
[root@mysql ~]# systemctl start mysqld #启动服务
[root@mysql ~]# systemctl enable mysqld #将服务设置为开机自启
[root@mysql ~]# ss -utnlp | grep :3306 #查看服务信息
[root@mysql ~]#mysqladmin -uroot password '123qqq...A' #修改mysql的root用户的密码
软件相关的目录与文件等
文件 | 说明 |
---|---|
主配置文件 | /etc/my.cnf.d/mysql-server.cnf |
数据库目录 | /var/lib/mysql |
端口号 | 3306 |
进程名 | mysqld |
传输协议 | TCP |
进程所有者 | mysql |
进程所属组 | mysql |
错误日志文件 | /var/log/mysql/mysqld.log |
用户授权
- 创建用户
- CREATE USER 用户名@‘主机’ IDENTIFIED BY ‘密码’;
- 授权
- GRANT 权限列表 ON 库名.表名 TO 用户名@‘主机’;
mysql> CREATE USER root@'%' IDENTIFIED BY '123qqq...A'; #创建root@'%'用户
mysql> GRANT ALL ON *.* to root@'%' WITH GRANT OPTION; #授予所有权限
mysql> FLUSH PRIVILEGES; #刷新授权表
使用SQLyog连接MySQL
创建库tedugame(SQLyog中执行)
CREATE DATABASE tedugame; #创建tedugame库
SHOW TABLES FROM tedugame; #查看tedugame库中有哪些表格
创建tedugame.submarine表
- 包含字段
- id字段:INT类型
- name字段:CHAR()类型,10个宽度
- level字段:INT类型
- zone字段:VARCHAR类型,50个宽度
CREATE TABLE tedugame.submarine(
id INT,
NAME CHAR(10),
LEVEL INT,
zone VARCHAR(50)
);
SELECT * FROM tedugame.submarine; #查询表中数据为空
写入数据
INSERT INTO tedugame.submarine VALUES
(1,"mark",1,"Beijing"),
(2,"sam",2,"Shanghai"),
(3,"PaoPao",2,"Shanghai"),
(4,"Lucy",3,"Chengdu");
SELECT * FROM tedugame.submarine; #查询表中数据为空
创建表tedugame.ylgy
- 包含字段
- id字段:INT类型
- name字段:CHAR()类型,10个宽度
- goldcoin:INT类型
CREATE TABLE tedugame.ylgy(
id INT,
NAME CHAR(10),
goldcoin INT
);
SHOW TABLES FROM tedugame;
写入数据
INSERT INTO tedugame.ylgy VALUES
(1,"jack",10000),
(2,"sam",10540),
(3,"lucy",88888),
(4,"mark",66666);
SELECT * FROM tedugame.ylgy; #查询数据
授权用户
- 授权用户tom,能够对tedugame库里的所有表拥有所有权限
- 允许tom用户在网络中所有主机登录(%)
- tom用户的密码为:123qqq…A
CREATE USER tom@'%' IDENTIFIED BY '123qqq...A'; #创建用户及密码
GRANT ALL PRIVILEGES ON tedugame.* TO 'tom'@'%'; #授权tom用户
FLUSH PRIVILEGES; #刷新权限列表
测试验证
- SQLyog工具新建连接,使用tom用户登录验证
SHOW DATABASES; #查看所有库
#只能看到information_schema库,此库占用内存,无需授权
#还能看到tedugame库
SELECT * FROM tedugame.submarine; #查询tedugame.submarine表数据
SELECT * FROM tedugame.ylgy; #查询tedugame.ylgy表数据
向tedugame.submarine表写入数据
INSERT INTO tedugame.submarine VALUES (5,'tom',2,'Beijing');
修改tedugame.submarine表中的数据,name为tom的用户zone字段改为’Shanghai’
UPDATE tedugame.submarine SET zone='Shanghai' WHERE NAME='tom';
删除名字为tom的整行
DELETE FROM tedugame.submarine WHERE NAME='tom';
SELECT * FROM tedugame.submarine; #查看tedugame.submarine数据
授权用户
- 授权用户wwc,能够对tedugame.submarine拥有查询(SELECT)和写入(INSERT)权限
- 允许wwc用户在网络中所有主机登录(%)
- wwc用户的密码为:123qqq…A
使用root@'%'连接数据库
CREATE USER wwc@'%' IDENTIFIED BY '123qqq...A'; #创建用户
GRANT SELECT,INSERT ON tedugame.submarine to wwc@'%'; #授权
FLUSH PRIVILEGES; #刷新授权表
SHOW GRANTS FOR wwc@'%'; #查看授权
验证权限,使用wwc@'%'连接数据库
SHOW TABLES FROM tedugame; #查看表
SELECT * FROM tedugame.submarine; #验证查询表记录权限,成功
INSERT INTO tedugame.submarine VALUES(6,'wwc',6,'Beijing'); #验证写入表记录权限,成功
DELETE FROM tedugame.sunbmarine #验证删除表记录权限,失败
撤销权限
- REVOKE 权限列表E ON 库名.表名 FROM 用户@‘主机’;
root@'%‘用户操作,撤销wwc@’%'用户对tedgame.subarine表的插入(INSERT)权限
REVOKE INSERT ON tedugame.submarine FROM wwc@'%';
测试验证
使用wwc@'%'连接数据库
INSERT INTO tedugame.submarine VALUES(7,'dcc',6,Shanghai'); #验证写入表记录权限,失败