用户与权限
# 用户与权限
-- 创建用户
create user 用户名 [IDENTIFIED BY 'password'] [,用户2 [IDENTIFIED BY 'password'],...];
-- 修改用户名
update mysql.user set user='用户名' where user='用户名';
FLUSH PRIVILEGES; -- 修改完后需要刷新权限才能使用新的用户名
-- 修改密码
alter user user() IDENTIFIED BY 'new_password';
-- 修改当前用户密码
set password='new_password';
-- 查看所有用户
select * from mysql.user;
-- 删除用户
drop user 用户1 [,用户2,...];
delete from mysql.user where host='主机名' and User='用户名';
FLUSH PRIVILEGES; -- 使用delete删除需要刷新权限才生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
权限管理
-- 查看当前数据库所有权限
show privileges;
GRANT 权限1,权限2,...
ON 数据库名称.表名称
TO 用户名1[IDENTIFIED BY '密码'][,用户名2[IDENTIFIED BY '密码',...]]
[WITH with_option [with_option]...];
1
2
3
4
5
6
7
2
3
4
5
6
7
- *:表示当前数据库中的所有表;
- *.* :表示所有数据库中的所有表;
- db_name.* :表示某个数据库中的所有表, db_name 指定数据库名;
- db_name.tbl_name :表示某个数据库中的某个表或视图, db_name 指定数据库名, tbl_name 指定表名或视图名;
- db_name.routine_name :表示某个数据库中的某个存储过程或函数, routine_name 指定存储过程名或函数名;
- TO 子句:如果权限被授予给一个不存在的用户, MySQL 会自动执行一条 CREATE USER 语句来创建这个用户,但同时必须为该用户设置密码。
-- 查看用户权限
show grants;
show grants for 用户名@主机地址;
-- 回收权限
revoke 权限1,权限2,... on 数据名.表名 from 用户1[,用户2,...];
-- 回收所有权限
revoke all privileges on *.* from 用户1[,用户2,...];
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 权限表
MySQL 在安装时会自动创建一个名为 mysql 的数据库, mysql 数据库中存储的都是用户权限表。权限表名有 user 、 db 、 tables_priv 、 columns_priv 、 procs_priv
# user 表
用户列

权限列

安全列

资源控制列

# db 表
用户列

# tables_priv 表
tables_priv 表用来对单个表进行权限设置

# columns_priv 表
columns_priv 表用来对单个数据列进行权限设置

# procs_priv 表
procs_priv 表可以对存储过程和存储函数进行权限设置

# 角色管理
引入角色的目的是便于管理拥有相同权限的用户。设定恰当的权限,可以确保数据的安全性。角色与权限的关系如下图所示。

-- 创建角色
create role 角色1[@主机名] [,角色2[@主机名],...]; -- 主机名可以省略。省略后默认为 %
1
2
2
创建角色之后,默认这个角色是没有任何权限的,根据需要给角色授权
GRANT 权限1,权限2,...
0N 数据库名称.表名称
TO 角色名[@主机名];
-- 给指定用户添加角色
grant 角色1 [,角色2,...] to 用户1 [,用户2,...];
-- 查看角色的权限
show grant for 角色名;
-- 回收角色的权限
revoke 权限1,权限2,...
0N 数据库名称.表名称
from 角色名;
-- 撤销用户角色
revoke 角色 from 用户;
-- 删除角色
drop role 角色1 [,角色2,...];
-- 激活用户角色
set default role all to 用户名@主机名;
-- 激活所有角色
set global activate_all_roles_on_login=ON;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
编辑 (opens new window)
上次更新: 2025/01/01, 10:09:39