mysql如何授权用户访问数据库_mysql授权语句说明

来源:这里教程网 时间:2026-02-28 20:32:39 作者:

MySQL 授权用户访问数据库,核心是使用

GRANT
语句为用户分配权限,并配合
FLUSH PRIVILEGES
刷新权限表。授权前需确保用户已存在(可用
CREATE USER
创建),否则授权会失败。

创建用户并授权(一步到位)

适用于新用户,直接创建并赋予指定权限:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
—— 创建用户(如
'appuser'@'192.168.1.%'
表示允许该网段连接)
GRANT SELECT, INSERT ON mydb.* TO 'username'@'host';
—— 授予对数据库
mydb
所有表的读写权限
FLUSH PRIVILEGES;
—— 必须执行,使权限立即生效(MySQL 8.0+ 在大多数情况下可省略,但建议保留以兼容和明确生效)

授予常见权限组合

按实际需求选择,避免过度授权:

GRANT SELECT ON mydb.users TO 'reporter'@'localhost';
—— 仅查某张表,适合报表账号
GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'%';
—— 开发环境常用(
%
表示任意主机,生产环境慎用)
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.0.5';
—— 主从复制专用账号,需全局权限

撤销权限与删除用户

权限管理需闭环,及时回收不再需要的权限:

REVOKE INSERT, UPDATE ON mydb.orders FROM 'appuser'@'192.168.1.%';
—— 撤销部分权限
DROP USER 'olduser'@'localhost';
—— 直接删除用户(MySQL 5.7+ 支持,自动清除权限)
注意:
REVOKE
后无需
FLUSH PRIVILEGES
,权限立即失效

查看用户权限

确认授权是否生效,或排查连接/操作失败原因:

SHOW GRANTS FOR 'username'@'host';
—— 查看该用户的全部权限
SELECT user, host, authentication_string FROM mysql.user WHERE user='username';
—— 查看用户是否存在及认证信息(MySQL 8.0+ 密码字段为
authentication_string
权限实际生效以
SHOW GRANTS
结果为准,不是看
mysql.user
表字段

相关推荐