MySQL中授权用GRANT语句并需FLUSH PRIVILEGES刷新;权限粒度细,支持库、表、列级控制;语法为GRANT权限列表ON数据库.表TO'用户'@'主机'[IDENTIFIED BY'密码'];可查权限SHOW GRANTS、回收REVOKE、删用户DROP USER。

在 MySQL 中给用户授权,核心是用 GRANT 语句,配合 FLUSH PRIVILEGES 刷新权限生效。权限控制粒度细(库、表、列、操作类型),需明确指定用户、主机、数据库和具体权限。
基础授权语法格式
标准写法如下:
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'允许连接的主机' [IDENTIFIED BY '密码'];
说明:
- 权限列表可写多个,用逗号分隔,如
SELECT, INSERT, UPDATE;也可用ALL PRIVILEGES表示所有权限(除授权权限) -
数据库名.表名支持通配符:*表示所有库,*.*表示所有库所有表,mydb.*表示 mydb 库下所有表 -
'用户名'@'主机'中主机部分常用'localhost'(仅本机)、'192.168.1.%'(网段)、'%'(任意主机,注意安全性) - 如果用户不存在,MySQL 5.7+ 默认会自动创建(但不设密码);加
IDENTIFIED BY可同时设密码(推荐显式创建再授权更清晰)
常见授权场景示例
实际使用中几个高频例子:
- 授予用户对 testdb 库全部操作权限(不含授权权):
GRANT ALL PRIVILEGES ON testdb.* TO 'devuser'@'localhost'; - 只允许从远程访问、仅查 user 表的 name 和 email 字段:
GRANT SELECT(name,email) ON myapp.user TO 'reporter'@'10.0.2.%'; - 赋予创建、删除数据库权限(属于全局权限,作用于 *.*):
GRANT CREATE, DROP ON *.* TO 'admin'@'%'; - 授权时允许该用户再转授他人(谨慎使用):
GRANT SELECT ON sales.orders TO 'auditor'@'%' WITH GRANT OPTION;
授权后必须刷新权限
执行 GRANT 后权限不会立即生效,需手动刷新:
云模块_YunMOK网站管理系统采用PHP+MYSQL为编程语言,搭载自主研发的模块化引擎驱动技术,实现可视化拖拽无技术创建并管理网站!如你所想,无限可能,支持创建任何网站:企业、商城、O2O、门户、论坛、人才等一块儿搞定!永久免费授权,包括商业用途; 默认内置三套免费模板。PC网站+手机网站+适配微信+文章管理+产品管理+SEO优化+组件扩展+NEW Login界面.....目测已经遥遥领先..
FLUSH PRIVILEGES;
说明:
- 该命令重载 mysql 系统库中的权限表(如 user、db、tables_priv 等)到内存
- 部分新版 MySQL(如 8.0+)在某些情况下可自动刷新,但显式执行仍是稳妥做法
- 不需要重启 MySQL 服务
查看与回收权限
授权不是单向操作,日常还需检查和撤销:
- 查看用户已有权限:
SHOW GRANTS FOR 'username'@'host'; - 回收某类权限:
REVOKE DELETE ON mydb.* FROM 'user'@'host'; - 彻底删除用户(含权限):
DROP USER 'user'@'host';(MySQL 5.7+ 推荐方式)
不复杂但容易忽略









