如何在虚拟机中快速完成MySQL环境搭建 虚拟机数据库环境搭建与网络互通配置

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

MySQL 在虚拟机中安装失败的常见原因

多数人卡在

apt install mysql-server
yum install mysql-community-server
这一步,不是报依赖冲突,就是服务启动后立刻退出。根本原因通常是系统已预装了 MariaDB(尤其 Ubuntu 22.04+、CentOS 8+),而 MySQL 官方包与之文件路径/服务名冲突。

实操建议:

先运行
systemctl list-unit-files | grep -i sql
确认是否已有
mariadb.service
或残留的
mysql.service
彻底清理:Ubuntu 上执行
sudo apt purge mariadb-server mysql-server
;CentOS 上用
sudo yum remove mariadb-libs mysql-community-server
,再删掉
/var/lib/mysql
/etc/my.cnf
安装前加一条:
sudo apt-mark hold libmariadb3
(Ubuntu)或
sudo yum versionlock mariadb-libs
(CentOS),避免后续系统更新又悄悄拉回 MariaDB

配置 MySQL 允许远程连接但不暴露 root

默认安装后

mysql -u root -p
能本地登录,但宿主机用 Navicat 或 DBeaver 连不上——不是防火墙问题,而是 MySQL 默认只监听
127.0.0.1
,且 root 用户绑定
localhost
主机名。

实操建议:

编辑
/etc/mysql/mysql.conf.d/mysqld.cnf
(Ubuntu)或
/etc/my.cnf
(CentOS),把
bind-address = 127.0.0.1
改成
bind-address = 0.0.0.0
;若该行被注释,取消注释并修改
不要直接给 root 开放远程:登录 MySQL 后执行
CREATE USER 'dev'@'%' IDENTIFIED BY 'StrongPass123!';
,再
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' WITH GRANT OPTION;
必须执行
FLUSH PRIVILEGES;
,否则权限不生效;
%
表示任意 IP,生产环境应换成宿主机具体 IP(如
'dev'@'192.168.56.1'

VirtualBox / VMware 中宿主机与虚拟机网络互通的关键设置

即使 MySQL 配置正确,宿主机仍连不上,大概率是虚拟网卡模式选错了。NAT 模式下虚拟机能上网,但宿主机无法主动访问虚拟机服务;仅 Bridged 模式或 Host-Only + 端口转发能解决。

实操建议:

VirtualBox 推荐用
Host-Only Adapter
:在 VirtualBox 管理器 → “全局设定” → “网络” → 添加 Host-Only 网络(如
vboxnet0
,IP 段设为
192.168.56.1/24
),虚拟机网卡设为此模式,再手动配静态 IP(如
192.168.56.10
VMware 推荐用
Host-Only
模式,并确认 VMware Network Adapter VMnet1 已启用且 IP 是
192.168.11.1
(Windows)或
vmnet1
对应 IP(macOS/Linux)
无论哪种,都要关掉虚拟机防火墙:
sudo ufw disable
(Ubuntu)或
sudo systemctl stop firewalld
(CentOS);MySQL 端口
3306
不需要额外放行,因为防火墙已停

验证连通性时容易忽略的三个检查点

宿主机 ping 得通虚拟机 IP,telnet 也显示

Connected
,但客户端仍报
Access denied for user
Connection refused
——问题往往不在 MySQL 本身。

检查虚拟机内是否真在监听
0.0.0.0:3306
:运行
sudo ss -tlnp | grep :3306
,输出里要有
*:3306
,而不是
127.0.0.1:3306
检查用户主机名匹配:用
SELECT User,Host FROM mysql.user;
确认你创建的用户 Host 列确实是
%
或宿主机 IP,不是
localhost
(它和
127.0.0.1
在 MySQL 中行为不同)
检查客户端驱动兼容性:MySQL 8.0+ 默认用
caching_sha2_password
插件,旧版 Navicat 或某些 JDBC 驱动不支持;临时解决可执行
ALTER USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY 'StrongPass123!';

虚拟机里搭 MySQL 最耗时间的从来不是安装命令,而是反复验证网络路径上哪一环断了——从虚拟网卡模式、bind-address、用户 Host、认证插件,到客户端驱动版本,漏掉任意一个都会卡住。

相关推荐