介绍
用户权限是管理和控制数据库访问的重要组成部分。权限常见的有行级和列级权限,通过合理设置用户权限,可以确保数据库安全性,并限制用户对数据库的操作范围。
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'@'%';