在 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 能有效控制访问权限,避免权限过大带来的安全风险。
