说说 MySQL 权限
这篇说说 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 | 控制用户对于表中某列的权限 |
相关推荐
-
MySQL 由于 Java 日期 LocalDateTime 数据精度引发的线上问题
MySQL 由于 Java 日期 LocalDateTime 数据精度引发的线上问题2025-04-02 00:59:31 -
MySQL最常用分组聚合函数2025-04-02 00:55:56
-
NGINX: 轮询调度、加权轮询调度、平滑加权轮询调度2025-04-02 00:55:49
-
在Windows平台上安装Nginx并设置开机自动启动服务2025-04-02 00:47:04
-
PHP判断文件或者目录是否可写,兼容windows/linux系统
PHP判断文件或者目录是否可写,兼容windows/linux系统2025-04-02 00:27:54