虚拟机部署MySQL需注意系统匹配、官方源安装、跳过交互式安全配置、修改bind-address并开放防火墙、调低innodb_buffer_pool_size防OOM;资源与网络配置须适配虚拟化层特性。
MySQL 官方不再为旧系统提供新版本支持,比如 CentOS 7 默认源里的 mysql 包其实是 MariaDB;Ubuntu 22.04 之后默认仓库也只带 mariadb-server,不是 MySQL。直接 apt install mysql-server 或 yum install mysql 很可能装错,或者装的是阉割版。
实操建议:
cat /etc/os-release
MySQL Community Server(注意选 Linux - Generic 或具体发行版的 deb/rpm)mysql-apt-config 工具配置源,CentOS 8+ 用 dnf module reset mysql 再启用 mysql:8.0 流mysql_secure_installation 的坑这个脚本在虚拟机里常卡住,尤其 SSH 连接不稳定或终端不支持交互时,会卡在 “Press y|Y for Yes, any other key for No” 无限等待,导致自动化部署失败。
实操建议:
mysqld --initialize --user=mysql --datadir=/var/lib/mysql
A temporary pass
word is generated 行),再执行 ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_pass';
mysql --defaults-file 配置文件传参,避免交互式命令阻塞bind-address 和防火墙
装完 MySQL 默认只监听 127.0.0.1,宿主机或同网段其他机器连不上,不是端口没开,是根本没对外暴露。
实操建议:
/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或 /etc/my.cnf(CentOS),把 bind-address = 127.0.0.1 改成 0.0.0.0 或具体 IPCREATE USER 'root'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
ufw allow 3306(Ubuntu)或 firewall-cmd --add-port=3306/tcp --permanent(CentOS)innodb_buffer_pool_size
虚拟机往往内存有限(比如 2GB),MySQL 启动后占满内存,系统开始 OOM Killer 杀进程,现象是 mysqld 随机退出,日志里只有 Killed process mysqld,没有报错。
实操建议:
innodb_buffer_pool_size 为总内存的 50%~75%,但最低不少于 128MB;2GB 虚拟机建议设 512M
[mysqld] 段加配置:innodb_buffer_pool_size = 512M,并同步调低 key_buffer_size 和 sort_buffer_size
datadir 放在快照频繁的虚拟磁盘上,尤其是 VMware 的“精简置备”模式,写入放大严重,容易触发 I/O 超时虚拟机部署 MySQL 最容易被忽略的,其实是资源限制和网络绑定逻辑——它不像物理机那样“默认能通”,也不像容器那样自带隔离约束,很多问题表面是配置错,根子在虚拟化层的资源可见性没对齐。