MySQL主机掩码与用户权限问题:局域网无法连接数据库求助
问题分析与解决步骤
1. 确认用户账号的本质区别
MySQL的用户是用户名+主机/IP标识的组合,root@%和root@127.0.0.1是两个完全独立的账号。你当前只创建了root@localhost、root@%、dad@%、Elefteria@%这四个账号,不存在root@127.0.0.1、root@192.168.1.11这类指定IP的账号,所以用这些账号登录会直接报错。
先执行以下命令查看所有已存在的用户:
SELECT user, host FROM mysql.user;
2. 解决指定IP用户查询权限报错的问题
如果确实需要使用root@127.0.0.1或root@192.168.1.11这类账号登录,需要先创建对应账号并完成授权:
-- 创建root@127.0.0.1账号并授予全权限(可根据需求调整权限范围) CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '你的账号密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION; -- 创建root@192.168.1.11账号并授权 CREATE USER 'root'@'192.168.1.11' IDENTIFIED BY '你的账号密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.11' WITH GRANT OPTION; -- 刷新权限使配置立即生效 FLUSH PRIVILEGES;
操作完成后,用这些指定IP的账号登录就能正常查询权限。
3. 解决局域网无法连接的问题
调整MySQL绑定地址
找到MySQL的配置文件(Windows系统一般是my.ini,Linux系统为my.cnf),定位到[mysqld]段落:
- 将
bind-address的值修改为0.0.0.0(允许所有IP地址访问),或者直接指定你的局域网IP(比如192.168.1.x) - 修改完成后重启MySQL服务
检查防火墙设置
确保Windows防火墙或第三方防火墙允许MySQL默认端口(3306)的入站连接,避免局域网请求被拦截。
重新确认远程账号权限
重新执行授权命令,确保root@%、dad@%这类通配符账号的远程权限生效:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'dad'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
4. 验证局域网连接
在局域网内的其他机器上,打开MySQL Workbench:
- 主机地址填写MySQL服务器的局域网IP(比如
192.168.1.x) - 端口保持默认3306
- 用户名选择
root@%或dad@%,输入对应密码后测试连接
内容的提问来源于stack exchange,提问作者Dimitris
相关产品推荐
相关产品推荐

