MySQL学习第三篇:权限相关

MySQL权限总结(“--”表示说明)


MySQL权限控制通过表进行控制,分多个层次:
第一层登录控制表:mysql.user 控制IP、账号是否有登录权限;
第二层库控制表:mysql.db 控制账号是否有访问某数据库的权限;
第三层对象级别控制表:mysql.tables_priv / columns_priv / procs_priv / proxies_priv  控制账号对表、表的列、存储过程、代理用户的权限。
账号通过mysql.user表的权限验证之后,进行权限分配时的顺序 user->db->tables_priv->columns_priv ,具体验证逻辑可参考官方文档或者自行琢磨。

grant语法:
grant {[权限1]...[权限n]} on [数据库].[数据库对象] to [用户名]@[登录IP] identified by [密码] [with grant option];--第一次添加账号并授权。
grant {[权限1]...[权限n]} on [数据库].[数据库对象] to [用户名]@[登录IP];--为已有账号添加权限。
说明:{[权限1]...[权限n]} 包含所有权限可用all privileges代替;如果将让授权的用户,也可以将其所具有的权限grant给其他用户,需要 with grant option选项

实例:
1、 mysql> show privileges;  -- 查看能够被授予的权限,显示结果为三列内容:privilege 权限;Context 可授予对象;Comment说明。

2、 mysql> show grants for root; --查看root账号具有的权限

3、 关于超级用户root : grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option; 
--解释:
grant 
all privileges  --授予所有权限
on 
*.*   --所有库的所有对象
to 
'root'@'%'   --root账号可通过任何IP地址访问
identified by 
'password'  --root账号可通过任何IP地址访问时候的密码
with 
grant option;   --root账号可给其他账号赋权限

4、 针对阿里云RDS MySQL数据库的高权限用户的解释

mysql> show grants for dba_admin; --RDS MySQL 高权限账号,下面是结果。
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'dba_admin'@'%' IDENTIFIED BY PASSWORD '*****' WITH GRANT OPTION

--截断解释
GRANT 
SELECT, --select table 权限
INSERT, --insert table 权限 
UPDATE, --update table 权限 
DELETE, --delete table 权限 
CREATE, --create table 权限 
DROP,   --drop table 权限 
RELOAD, --执行flush tables|logs|privileges 的权限
PROCESS, --执行SHOW PROCESSLIST和KILL命令。默认情况下,每个用户都可以执行SHOW PROCESSLIST命令,但是只能查询本用户的进程
REFERENCES, --将其它表的一个字段作为某一个表的外键约束的权限,即设置外键的权限
INDEX, --create|drop index权限
ALTER, --alter table 权限
CREATE TEMPORARY TABLES,  --创建临时表的权限
LOCK TABLES, --lock table权限
EXECUTE, --执行sp和fun权限
REPLICATION SLAVE, --查看从服务器,从主服务器读取二进制日志权限,注主从复制账号需要这个权限
REPLICATION CLIENT, --查询master server、slave server状态的权限,注主从复制账号需要这个权限
CREATE VIEW,  --创建视图权限
SHOW VIEW,  --执行show create view权限
CREATE ROUTINE, --create|alter|drop 存储过程和函数权限(此权限自动包含EXECUTE 和 ALTER ROUTINE权限)
ALTER ROUTINE,  --alter|drop 存储过程和函数权限
CREATE USER, --创建用户的权限,即具有mysql库的全局create user权限
EVENT, --查看event权限
TRIGGER --游标权限
ON 
*.* 
TO 
'dbax_admin'@'%' 

注:第一次添加账号权限时需要IDENTIFIED BY 'password' ;给已有账号授予更多权限,则不需要此项。

5、 撤销权限
revoke {[权限1]...[权限n]} on [数据库].[数据库对象] from [用户名]@[登录IP];  -- 语法跟grant 差不多,把to 换成from即可
例子: 
revoke all privileges on *.* from dbax_admin@'%';
revoke create user,insert on mytest.* from dbax_admin@'192.168.100.103';

6、 其他事项 
grant usage on 一般被授予权限的账号,都默认有grant usage on 的权限,没什么卵用,就是用于连接的,并没有任何权限,也不能使用revoke收回。
给表的列授权的语法稍有不同,如下:grant select(id, name, age) on mytest.userlist to dev@'%';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值