说说 MySQL 权限

100人浏览   2025-03-30 00:11:05

这篇说说 MySQL 权限管理。

MySQL 从用户、密码和IP三个维度来管理用户链接的。

1. 创建用户

先看一个示例:

# 创建 david 用户,密码为 123, 101.32.19.* 可以访问
mysql> create user 'david'@'101.32.19.%' identified by '123';
# 当然也可以在创建用户时,先不设定密码
mysql> create user 'david'@'101.32.19.%';

以上脚本就是创建 `david` 的用户,密码是 `123`,且只能是 `101.32.19.*` 网段的 IP 能访问。

刚刚创建的用户只有链接权限:

(root@localhost) [mysql]> show grants for 'david'@'101.32.19.%';
+---------------------------------------------+
| Grants for david@101.32.19.% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
+---------------------------------------------+
1 row in set (0.00 sec)

2. 修改用户密码

# 修改用户密码
(root@localhost) [(none)]> alter user 'david'@'101.32.19.%' identified by '456';

3. 授权

授权是指给予 MySQL 用户一定的权限。新创建的用户只有链接权限,无创建表等权限。

mysql> grant select, update, insert, delete on test.* to 'david'@'10.0.4.%' [with grant option];

授予 `'david'@'101.32.19.%'` 用户针对 mysql 库中所有表的增删查改权限。`with grant option` 表示 `david` 用户还可以给其他用户授予他拥有的权限。

再次查看其权限:

(root@localhost) [(none)]> show grants for 'david'@'101.32.19.%';
+----------------------------------------------------------------------------+
| Grants for david@101.32.19.% |
+----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
| GRANT SELECT, INSERT, UPDATE, DELETE ON `mysql`.* TO `david`@`101.32.19.%` |
+----------------------------------------------------------------------------+
2 rows in set (0.00 sec)

4. 回收权限

示例:回收 `david` 用户的增删改查权限:

(root@localhost) [(none)]> revoke select, insert, update, delete on mysql.* from 'david'@'101.32.19.%';
Query OK, 0 rows affected (0.01 sec)
# 也可以回收所有权限,但是不删除用户
mysql> revoke all on *.* from 'david'@'101.32.19.%';
# 仍然具有链接权限
(root@localhost) [(none)]> show grants for 'david'@'101.32.19.%';
+---------------------------------------------+
| Grants for david@101.32.19.% |
+---------------------------------------------+
| GRANT USAGE ON *.* TO `david`@`101.32.19.%` |
+---------------------------------------------+
1 row in set (0.00 sec)

5. 删除用户

mysql> drop user 'david'@'101.32.19.%'; # 删除用户 david

以上是最基本的 MySQL 权限管理,当然 MySQL 的权限管理内容还有很多,权限还可以设置的很细致。具体可以参考 mysql 库中相应的表。附表如下:

序号

作用

1

user

控制用户的链接等权限

2

db

控制用户对于某个数据库的权限

3

tables_priv

控制用户对于某张表的权限

4

columns_priv

控制用户对于表中某列的权限




相关推荐