<p>GRANT命令用于授予用户数据库权限,确保安全访问。例如:GRANT ALL ON mydb. TO ‘user1’@’localhost’; 授予本地用户对mydb的所有权限;GRANT select ON mydb.users TO ‘user2’@’192.168.1.%’; 允许远程用户查询users表;GRANT INSERT, UPDATE ON mydb.orders TO ‘user3’@’%’; 赋予任意主机用户插入和更新orders表的权限;GRANT ALL ON .* TO ‘admin’@’%’ IDENTIFIED BY ‘securepass’; 赋予管理员全局权限并设置密码;执行FLUSH PRIVILEGES; 刷新权限使更改立即生效;使用SHOW GRANTS for ‘用户名’@’主机地址’; 查看指定用户权限,合理配置可提升数据库安全性。</p>

在 mysql 中,GRANT 命令用于给用户授予数据库权限。正确使用 GRANT 可以确保用户只能访问被授权的资源,提升数据库安全性。
基本语法结构
GRANT 的基本格式如下:
GRANT 权限类型 [(列名)] ON 数据库名.表名 TO ‘用户名’@’主机地址’ [IDENTIFIED BY ‘密码’];
说明:
- 权限类型:如 SELECT、INSERT、UPDATE、delete、ALL 等
- 数据库名.表名:用 * 表示所有数据库或所有表
- ‘用户名’@’主机地址’:主机地址可以是 localhost、IP 地址或 %(表示任意主机)
常见权限示例
以下是几种常用的授权场景:
- 授予本地用户对某个数据库的所有权限:
GRANT ALL ON mydb.* TO ‘user1’@’localhost’; - 授予远程用户查询权限:
GRANT SELECT ON mydb.users TO ‘user2’@’192.168.1.%’; - 授予用户插入和更新权限:
GRANT INSERT, UPDATE ON mydb.orders TO ‘user3’@’%’; - 授予全局所有权限(谨慎使用):
GRANT ALL ON *.* TO ‘admin’@’%’ IDENTIFIED BY ‘securepass’;
刷新权限
执行 GRANT 后,需要让权限立即生效:
FLUSH PRIVILEGES;
注意:大多数情况下 GRANT 会自动刷新权限,但在某些手动修改场景下建议手动执行。
查看用户权限
可以用以下命令检查某个用户的权限:
SHOW GRANTS FOR ‘用户名’@’主机地址’;
例如:
SHOW GRANTS FOR ‘user1’@’localhost’;
基本上就这些。合理使用 GRANT 能有效控制访问权限,避免权限过大带来的安全风险。


