mysql远程访问权限设置的核心逻辑
mysql默认情况下只允许本地连接,其用户权限表中会对每个用户的可连接主机做限制,要开启远程访问,本质就是修改用户对应的host字段,或者通过授权语句允许指定主机连接,同时刷新权限让配置生效。

1. 查看当前用户权限信息
首先我们需要查看mysql中已有的用户及其允许连接的主机,确认要修改的目标用户。可以登录mysql后执行以下查询语句:
-- 查看所有用户及其允许连接的主机 SELECT user, host FROM mysql.user;
查询结果中,host字段为localhost表示该用户只允许本地连接,%表示允许所有远程主机连接,也可以是指定的IP地址。
2. 修改用户host允许远程连接
如果要让某个已有用户支持远程访问,可以直接修改该用户的host字段为%,示例代码如下:
-- 将root用户的host修改为%,允许所有远程主机连接,也可以替换为指定IP如'192.168.0.100' UPDATE mysql.user SET host = '%' WHERE user = 'root';
如果需要新建一个专门用于远程访问的用户,可以执行以下语句:
-- 创建用户remote_user,密码为123456,允许所有远程主机连接 CREATE USER 'remote_user'@'%' IDENTIFIED BY '123456';
3. 给用户授予对应权限
仅修改host还不够,需要给用户授予对应的数据库操作权限,授权语句使用GRANT实现,常见授权示例如下:
-- 授予remote_user用户所有数据库的所有权限 GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; -- 如果只允许访问test数据库,且只有查询插入权限,可以执行下面的语句 -- GRANT SELECT, INSERT ON test.* TO 'remote_user'@'%';
4. 刷新权限使配置生效
修改用户信息和授权操作后,需要执行FLUSH PRIVILEGES语句刷新权限表,让配置立即生效:
FLUSH PRIVILEGES;
5. 验证远程连接
配置完成后,可以在远程设备上使用mysql客户端尝试连接,示例连接命令如下:
-- 远程连接mysql,替换为你的mysql服务器IP、端口、用户名 mysql -h 192.168.0.1 -P 3306 -u remote_user -p
常见注意事项
- 如果连接失败,首先检查mysql服务器的3306端口是否对外开放,防火墙是否放行了该端口。
- 修改host为
%会允许所有远程主机连接,生产环境建议替换为具体的可信IP地址,降低安全风险。 - 如果使用了云服务器,还需要检查云服务商的安全组规则,是否允许3306端口的入站流量。
- mysql 8.0及以上版本创建用户和授权需要分开执行,不支持在GRANT语句中同时创建用户。
mysql远程访问用户权限grantflush_privileges修改时间:2026-06-27 07:39:10