介绍
用户权限是管理和控制数据库访问的重要组成部分。权限常见的有行级和列级权限,通过合理设置用户权限,可以确保数据库安全性,并限制用户对数据库的操作范围。
Mysql 用户管理网址:https://dev.mysql.com/doc/refman/8.0/en/account-management-statements.html
Mysql 权限管理网址:https://dev.mysql.com/doc/refman/8.0/en/roles.html
创建、修改和删除用户
# 创建用户
create user if not exists 'user_test1'@'%' identified by 'test1';
create user if not exists 'user_test2'@'%' identified by 'test2',
'user_test3'@'%' identified by 'test3'; -- 创建多个用户
# 修改用户
rename user 'user_test1'@'%' to 'user_test4'@'%',
'user_test2'@'%' to 'user_test5'@'%';
# 删除用户
drop user if exists 'user_test4'@'%','user_test5'@'%';
查看用户权限
-- 查看当前用户
select user();
-- 查看指定用户权限
show grants for 'root'@'%';
-- 通过user表查看用户权限
select *
from mysql.user
where user = 'dmp_dev';
select *
from information_schema.user_privileges
where grantee = '\'dmp_dev\'@\'%\''; -- 通过user_privileges表查看用户权限,注意需要转义引号
授权权限给用户
-- 授权所有库表的操作权限
grant all privileges on *.* to 'user_test1'@'%';
-- 授权指定数据库所有表操作权限,如sql_test库所有表所有操作权限
grant all on sql_test.* to 'user_test2'@'%';
-- 授权指定数据库所有表所有操作权限
grant all on sql_test1.* to 'user_test2'@'%';
-- 授权指定数据库所有表查询操作权限
grant select on sql_test1.* to 'user_test3'@'%';
-- 授权指定数据库指定表所有操作权限
grant all on sql_test1.product to 'user_test4'@'%';
-- 授权指定数据库指定表‘增删改查’操作权限
grant select,insert,delete,update on sql_test1.product to 'user_test5'@'%';
-- 授权指定数据库指定表字段查询权限
grant select(prod_id,prod_name) on sql_test1.produce to 'user_test6'@'%'
移除用户权限
-- 移除用户所有权限
revoke all privileges on sql_test.* from 'user_test2'@'%';
-- 移除用户指定权限
revoke insert,delete on sql_test1.product from 'user_test5'@'%';