本地phpMyAdmin连接Vagrant虚拟机中MySQL的问题排查
问题描述
本地运行phpMyAdmin,尝试连接同一机器上Vagrant虚拟机中运行的MySQL实例,已完成以下配置:
- Vagrantfile设置了端口转发与私有网络
- 修改MySQL配置文件
/etc/mysql/my.cnf,将bind-address设为0.0.0.0以允许远程连接
但连接时报错:
mysqli::real_connect(): (HY000/1130): Host '10.0.2.2' is not allowed to connect to this MySQL server
解决步骤
1. 修正phpMyAdmin配置错误
当前config.inc.php中host字段错误混入了Web服务端口8080,需调整为正确的MySQL连接地址:
$j++; // 方案一:使用私有网络IP直接连接(无需端口转发) $cfg['Servers'][$j]['host'] = '192.168.33.10'; $cfg['Servers'][$j]['port'] = '3306'; // 方案二:使用端口转发的本地地址 // $cfg['Servers'][$j]['host'] = '127.0.0.1'; // $cfg['Servers'][$j]['port'] = '33060'; $cfg['Servers'][$j]['user'] = 'root'; $cfg['Servers'][$j]['password'] = 'password'; $cfg['Servers'][$j]['auth_type'] = 'config';
说明:私有网络192.168.33.10是主机与虚拟机的专属网络,可直接访问MySQL默认3306端口;若用端口转发,则需指向本地127.0.0.1和转发后的33060端口。
2. 给MySQL用户添加连接权限
报错核心原因是root用户未被授权从10.0.2.2(Vagrant NAT模式下主机的映射IP)连接,需执行以下操作:
- 进入Vagrant虚拟机:
vagrant ssh
- 登录MySQL(输入root密码):
mysql -u root -p
- 执行授权命令:
-- 允许root从10.0.2.2连接 GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.2.2' IDENTIFIED BY 'password' WITH GRANT OPTION; -- 测试环境可允许root从任意主机连接(生产环境不建议) -- GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
3. 重启MySQL服务(可选)
若修改my.cnf后未重启MySQL,需执行重启命令:
# Debian/Ubuntu系统 sudo systemctl restart mysql # CentOS/RHEL系统 sudo systemctl restart mysqld
内容的提问来源于stack exchange,提问作者Mark Locklear
相关产品推荐
相关产品推荐

