You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地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)连接,需执行以下操作:

  1. 进入Vagrant虚拟机:
vagrant ssh
  1. 登录MySQL(输入root密码):
mysql -u root -p
  1. 执行授权命令:
-- 允许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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 18:31:02