-
查看所有用户及其权限
SELECT * FROM mysql.user\G; #( \G 在命令行中格式化显示)
-
查看当前用户权限
SHOW GRANTS; -- 或 SHOW GRANTS FOR CURRENT_USER; -- 或 SHOW GRANTS FOR CURRENT_USER();
-
查看某个用户的权限
SHOW GRANTS FOR username@host; # 用户名@主机
-
增加用户
语法CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
示例
CREATE USER 'test'@'localhost' IDENTIFIED BY '123456'; FLUSH PRIVILEGES; #创建完用户及权限后,需要使用该命令刷新权限
注意
- 必须拥有mysql数据库的全局CREATE USER权限或拥有INSERT权限。
- 只能创建用户,不能赋予权限。
- 用户名,注意引号:如 ‘user_name’@‘192.168.1.1’
- 密码必须加引号
-
删除用户
DROP USER '用户名'@'主机'
-
重命名用户
RENAME USER '旧用户名'@'旧主机' TO '新用户名'@'新主机';
-
设置修改密码
- 使用SET PASSWORD命令
SET PASSWORD = PASSWORD('密码') -- 为当前用户设置密码 SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码') -- 为指定用户设置密码 flush privileges; -- 需要执行刷新权限
- 使用grant指令(在授权时修改密码)
GRANT SELECT ON 数据库名.数据表名 TO 用户名@主机 IDENTIFIED BY '新密码' WITH GRANT OPTION;
- 运行mysqladmin脚本文件
该文件一般在mysql安装目录下的bin目录中。进入该目录,根据以下两种具体情况输入命令(只有root用户有这个权限)。
(1)用户尚无密码
(2)用户已有密码mysqladmin -u 用户名 password 新密码;
mysqladmin -u 用户名 -p password 新密码;
注意:[root@node00 ~]# mysqladmin -u test -p password HfdD-12345; Enter password: mysqladmin: [Warning] Using a password on the command line interface can be insecure. Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
更改密码时候一定要使用PASSWORD函数(mysqladmin 和 GRANT 两种方式不用写,会自动加上)。
- 使用SET PASSWORD命令
-
分配权限
语法GRANT 权限列表 ON 库名.表名 TO '用户名'@'主机' IDENTIFIED BY '密码' [WITH GRANT OPTION];
示例
GRANT all privileges on *.* to ‘test’@'localhost' identified by 'password' with grant option; -- 或 GRANT all privileges on *.* to ‘test’@'%' identified by 'password'; flush privileges; -- 记得授权后一定要刷新权限
注意
with grant option
表示该用户可以将自己拥有的权限授权给别人,可以不添加all privileges
表示所有权限*.*
表示所有库的所有表%
表示任何主机地址。- 可以使用grant重复给用户添加权限,进行权限叠加
-
刷新权限
FLUSH PRIVILEGES
-
撤消权限
语法REVOKE 权限列表 ON 数据库名.数据表名 FROM 用户名@主机; REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户名@主机; -- 撤销所有权限
示例
revoke drop on *.* from test@localhost;#回收drop权限
注意
其实GRANT语句在执行的时候,如果权限表中不存在目标账号,则创建账号;
如果已经存在,则执行权限的新增。
usage权限不能被回收,也就是说,REVOKE用户权限并不能删除用户
。 -
权限层级
要使用GRANT或REVOKE,您必须拥有GRANT OPTION权限,并且您必须拥有您正在授予或撤销的权限。
- 全局层级
适用于一个给定服务器中的所有数据库
用于授予和撤销全局权限。GRANT ALL ON *.*; REVOKE ALL ON *.*;
- 数据库层级
适用于一个给定数据库中的所有目标
用于授予和撤销数据库权限。GRANT ALL ON db_name.*; REVOKE ALL ON db_name.*;
- 表层级
适用于一个给定表中的所有列
用于授予和撤销表权限。GRANT ALL ON db_name.table_name; REVOKE ALL ON db_name.table_name;
- 列层级:
适用于一个给定表中的单一列
当使用REVOKE时,您必须指定与被授权列相同的列。
- 全局层级
-
权限列表
GRANT和REVOKE的允许
静态权限
权限 说明 ALL [PRIVILEGES] 除GRANTOPTION之外所有简单权限 ALTER 允许使用ALTER TABLE ALTER ROUTINE 允许使用更改或删除存储过程 CREATE 允许使用创建新数据库和表的语句 CREATE ROLE 允许使用该CREATE ROLE语句 ( 8.0版本
)CREATE ROUTINE 允许使用CREATE创建存储过程和函数的语句 CREATE TABLESPACE 允许使用创建,更改或删除表空间和日志文件组的语句 REATE TEMPORARY TABLES 允许使用该CREATE TEMPORARY TABLE 语句创建临时表 CREATE USER 允许使用的ALTER USER,CREATE ROLE, CREATE USER, DROP ROLE, DROP USER, RENAME USER和 REVOKE ALL PRIVILEGES语句 CREATE VIEW 允许使用该CREATE VIEW语句 DELETE 允许从数据库中的表中删除行 DROP 允许使用DROP 删除现有数据库,表和视图的语句 DROP ROLE 允许使用该DROP ROLE 语句 ( 8.0版本
)EVENT 允许使用EVENT 调度程序创建,更改,删除或显示事件的语句 EXECUTE 允许使用执行存储过程和函数的语句 FILE 允许使用LOAD DATA和 SELECT … INTO OUTFILE语句和 LOAD_FILE()函数 GRANT OPTION 允许您向其他用户授予或撤消您自己拥有的权限 INDEX 允许使用CREATE INDEX和DROP INDEX的语句 INSERT 允许使用INSERT将数据插入数据库中的表 LOCK TABLES 允许对您拥有SELECT权限的表使用LOCKTABLES PROCESS 允许使用SHOW [FULL] PROCESSLIST PROXY 允许一个用户模拟或被称为另一个用户 REFERENCES 创建外键约束需要REFERENCES父表的权限 RELOAD 允许使用该FLUSH 语句 REPLICATION CLIENT 允许使用的SHOW MASTER STATUS,SHOW SLAVE STATUS和SHOW BINARY LOGS语句 REPLICATION SLAVE 用于复制型从属服务器(从主服务器中读取二进制日志事件) SELECT 允许使用SELECT SHOW DATABASES 显示所有数据库 SHOW VIEW 允许使用SHOW CREATE VIEW SHUTDOWN 允许使用SHUTDOWN 和RESTART语句,mysqladmin shutdown命令和 mysql_shutdown()函数 SUPER 8.0版本中 SUPER已弃用 TRIGGER 启用触发器操作 UPDATE 允许在数据库中的表中更新行 USAGE 代表"无权限" GRANT和REVOKE的允许
动态权限
(8.0版本)权限 说明 PPLICATION_PASSWORD_ADMIN 双密码功能 AUDIT_ADMIN 启用审核日志配置 BACKUP_ADMIN 允许执行LOCK INSTANCE FOR BACKUP语句并访问Performance Schema log_status表 BINLOG_ADMIN 通过PURGE BINARY LOGS和 BINLOG语句启用二进制日志控制 BINLOG_ENCRYPTION_ADMIN 启用设置系统变量binlog_encryption,激活或取消激活二进制日志文件和中继日志文件的加密 CONNECTION_ADMIN 允许使用KILL statement或mysqladmin kill命令来终止属于其他帐户的线程 ENCRYPTION_KEY_ADMIN 启用InnoDB加密密钥轮换 FIREWALL_ADMIN 允许用户管理任何用户的防火墙规则 FIREWALL_USER 使用户能够更新自己的防火墙规则 GROUP_REPLICATION_ADMIN 使该帐户能够启动和停止组复制 ERSIST_RO_VARIABLES_ADMIN REPLICATION_SLAVE_ADMIN 使帐户能够连接到主服务器,启动和停止复制,以及使用CHANGE MASTER TO和CHANGE REPLICATION FILTER语句 RESOURCE_GROUP_ADMIN 启用资源组管理:创建,更改和删除资源组; 并将线程和语句分配给资源组 RESOURCE_GROUP_USER 允许将线程和语句分配给资源组 ROLE_ADMIN 允许GRANT语句中使用WITH ADMIN OPTION子句 SESSION_VARIABLES_ADMIN 使用户能够设置会话值 SET_USER_ID 允许在执行视图或存储程序时设置有效的授权ID SYSTEM_VARIABLES_ADMIN 运行时启用系统变量和更改全局事务特征 VERSION_TOKEN_ADMIN 允许执行版本标记用户定义的函数 XA_RECOVER_ADMIN 允许执行 XA RECOVER语句
MySQL用户和权限管理
最新推荐文章于 2024-08-20 14:20:11 发布