MySQL版本:5.6.36-log
用例 IP 172.30.10.12
;数据库 testdb
;数据表 t_test
;用户 test
;
赋予权限:
- GRANT 是赋予权限的 关键字,后面接赋予的权限种类常见的有
ALL PRIVILEGES
,INSERT
,DELETE
,UPDATE
,SELECT
,CREATE
,DROP
等。 - ON 指将 哪个数据库 的权限赋予用户,格式为
testdb.t_test
。*
为表通配符,*.*
代表所有库所有表,testdb.*
代表 testdb 数据库下所有表。 - TO 指将权限赋予 哪个用户,格式为
test@'172.30.10.12'
,%
为IP通配符:test@'%'
。
ps:@
前面可以加''
,也可以不加,后面必须加,test@'172.30.10.12'
test@'localhost'
'test'@'%'
。 - WITH GRANT OPTION 指定该用户能够对其他用户进行权限管理。
全部权限
GRANT ALL PRIVILEGES ON *.* TO test@'localhost';
指定数据库增删改查数据权限
GRANT INSERT, DELETE, UPDATE, SELECT ON testdb.* TO test@'localhost';
创建表和删除表的权限
GRANT CREATE, DROP ON testdb.* TO test@'localhost';
赋予权限同时指定该用户能够给其他用户进行权限管理。
GRANT ALL PRIVILEGES ON testdb.* TO user@'localhost' WITH GRANT OPTION;
解除权限:
- REVOKE 是解除权限的 关键字,后面接赋予的权限种类,对应赋予权限的 GRANT。
- ON 指将 哪个数据库 的权限移除。
- FROM 指将权限从 哪个用户 移除,对应赋予权限的 TO。
如果你想移除 test 用户的所有权限,可以执行一下命令:
REVOKE ALL PRIVILEGES, GRANT OPTION FROM test;
解除指定数据库权限
REVOKE ALL PRIVILEGES ON testdb.* from test@'localhost';
其他:
- 如果使用了
IDENTIFIED BY PASSWORD
或IDENTIFIED BY
,指定的密码就会变成这个用户的新密码,即使这个用户已经存在且设置了密码。
MySQL 5.7.2 之后的版本 使用就不会修改密码,因为 GRANT 设计用户单一用途权限管理。 - USAGE 权限的用户等于没权限,创建用户就会分配 USAGE 权限,只能给自己改密码。
- 设置权限之后要使用
FLUSH PRIVILEGES
。 - 已连接的用户需要重新连接,权限才能生效。
网友评论