mysql如何在虚拟机中安装mysql_mysql虚拟环境部署指南

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

虚拟机里装 MySQL,先看系统和版本匹配不匹配

MySQL 官方不再为旧系统提供新版本支持,比如 CentOS 7 默认源里的

mysql
包其实是 MariaDB;Ubuntu 22.04 之后默认仓库也只带
mariadb-server
,不是 MySQL。直接
apt install mysql-server
yum install mysql
很可能装错,或者装的是阉割版。

实操建议:

查清虚拟机系统发行版和版本号:
cat /etc/os-release
去 MySQL 官网下载页 找对应平台的
MySQL Community Server
(注意选
Linux - Generic
或具体发行版的
deb
/
rpm
优先用官方 APT/YUM 源(比本地包更易升级),比如 Ubuntu 添加
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 password 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
或具体 IP
确认用户有远程权限:
CREATE USER 'root'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;
虚拟机防火墙必须放行 3306:
ufw allow 3306
(Ubuntu)或
firewall-cmd --add-port=3306/tcp --permanent
(CentOS)

磁盘空间小、IO 差?别用默认
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 最容易被忽略的,其实是资源限制和网络绑定逻辑——它不像物理机那样“默认能通”,也不像容器那样自带隔离约束,很多问题表面是配置错,根子在虚拟化层的资源可见性没对齐。

相关推荐