用户权限管理:
1. 创建用户和设置密码:
create user test@'localhost' IDENTIFIED by 'test';
重点解释一下@'localhost' 在这个语句中的作用(白名单的作用:就是设置哪些网段的人可以才有权限)
test@'10.0.0.%' 分配10.0.0.XXX/24为白名单(24就是255.255.255.0)
test@'%' 分配全部地址为白名单(只要能ping通)
test@'10.0.0.200' 分配唯一地址为白名单
test@'localhost' 分配自己为白名单
test@'db02' 分配主机名为白名单
test@'10.0.0.5%' 分配网段白名单
创建完用户需要执行:FLUSH PRIVILEGES; 作者不执行也可以赋权。
修改密码:alter user test@'10.0.0.%' identified by '456';
2. 删除用户:
drop user test;
3. 授权
grant select, insert, update, delete on work_db.* to test@'%';
4. 查询用户权限:
show privileges; -- 展示mysql权限。
其中 Grant option 权限特殊,是给别人授权的权限,语法为原授权语句后加 with Grant option。
show grants for test; -- 查看赋权语句。
select * from mysql.db where user='test' -- 查询赋权的实际情况(数据库级别)
select * from mysql.user where user='test' -- 查询赋权的实际情况(全局 *.*)
select * from mysql.tables_priv where user='test' -- 查询赋权的实际情况(表级别)
select * from mysql.columns_priv where user='test' -- 查询赋权的实际情况(列级别)
5. mysql赋权级别
5.1.全局层级
全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.* to 和REVOKE ALL ON *.* from 只授予和撤销全局权限。
5.2.数据库层级
数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.* to 和REVOKE ALL ON db_name.* from 只授予和撤销数据库权限。
5.3.表层级
表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。GRANT ALL ON db_name.tbl_name to 和REVOKE ALL ON db_name.tbl_name from 只授予和撤销表权限。
5.4.列层级
列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
5.5.子程序层级
CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。
5. 回收权限:
上述案例的回收权限语句: revoke select, insert, update, delete on work_db.* from test@'%'; 关键字:revoke , from。
其他:
参考: