通过GRANT和REVOKE语句可精确管理mysql用户权限,如授予或回收select、INSERT等操作权限,使用FLUSH PRIVILEGES使更改生效,并通过SHOW GRANTS查看权限,确保数据库安全。

在 MySQL 中管理用户权限是数据库安全的重要部分。通过 GRANT 和 REVOKE 语句,可以精确控制用户对数据库、表或特定操作的访问权限。
授予用户权限(GRANT)
使用 GRANT 语句为用户分配权限。基本语法如下:
GRANT 权限类型 ON 数据库名.表名 TO ‘用户名’@’主机’ [IDENTIFIED BY ‘密码’];
常见权限包括:
- SELECT:读取数据
- INSERT:插入数据
- UPDATE:修改数据
- delete:删除数据
- CREATE:创建表或数据库
- DROP:删除表或数据库
- ALL PRIVILEGES:所有权限
示例:
- 授予用户 testuser 从本地访问 testdb 数据库中所有表的查询权限:
- 授予用户远程访问并拥有 testdb 所有权限:
- 刷新权限使更改生效:
GRANT SELECT ON testdb.* TO ‘testuser’@’localhost’;
GRANT ALL PRIVILEGES ON testdb.* TO ‘testuser’@’%’ IDENTIFIED BY ‘password‘;
FLUSH PRIVILEGES;
回收用户权限(REVOKE)
使用 REVOKE 语句收回已授予的权限。语法与 GRANT 类似:
REVOKE 权限类型 ON 数据库名.表名 FROM ‘用户名’@’主机’;
示例:
- 收回 testuser 在 testdb 上的 INSERT 权限:
- 收回所有权限:
REVOKE INSERT ON testdb.* FROM ‘testuser’@’localhost’;
REVOKE ALL PRIVILEGES ON testdb.* FROM ‘testuser’@’localhost’;
注意:REVOKE 不会删除用户账户本身,仅移除权限。
查看用户权限
检查用户当前权限可避免重复授权或遗漏:
- 查看当前用户的权限:
- 查看指定用户的权限:
SHOW GRANTS;
SHOW GRANTS for ‘testuser’@’localhost’;
基本上就这些。合理使用 GRANT 和 REVOKE 能有效控制数据库访问,提升安全性。操作后记得执行 FLUSH PRIVILEGES,确保权限立即生效。


