如何在mysql中授权用户权限_mysql权限授权语法说明

5次阅读

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

如何在 mysql 中授权用户权限_mysql 权限授权语法说明

在 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 后权限不会立即生效,需手动刷新:

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+ 推荐方式)

不复杂但容易忽略

星耀云
版权声明:本站原创文章,由 星耀云 2026-01-06发表,共计1186字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources