《MySQL数据库》MySQL用户赋权

用户权限管理:

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权限。

《MySQL数据库》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'   -- 查询赋权的实际情况(列级别)

《MySQL数据库》MySQL用户赋权

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。

其他:

6. mysql.db 表字段说明:

《MySQL数据库》MySQL用户赋权

参考:

https://www.cnblogs.com/xibuhaohao/p/10935815.html

https://blog.csdn.net/diyhzp/article/details/63683475