安装mysql虚拟机前须确认内存≥1.5g、根分区≥2gb、架构为x86_64;ubuntu/centos用原生包管理器安装并立即执行mysql_secure_installation;连接失败时重点检查bind-address、防火墙、socket路径及认证插件;配置需精简,如调低innodb_buffer_pool_size、禁用performance_schema等。

MySQL 虚拟机安装前必须确认的三件事
直接装 mysql-server 很可能失败,不是因为命令不对,而是虚拟机环境缺基础依赖或资源不足。先检查:free -h 看内存是否 ≥1.5G;df -h / 确保根分区剩余 ≥2GB;uname -m 确认是 x86_64(ARM 架构的 MySQL 官方包支持有限)。
Ubuntu/CentOS 虚拟机中安装 MySQL 8.0 的最小可行命令
跳过图形化安装器和 snap,用原生包管理器直装最稳:
- Ubuntu 22.04+:
sudo apt update && sudo apt install mysql-server -y,装完自动启动,无需额外systemctl start - CentOS 7:
sudo yum install mysql-community-server -y(需先配置 MySQL 官方 repo,否则默认只有 5.7) - CentOS 8+/Rocky 8+:
sudo dnf install mysql-server -y,但注意默认启用mysql.service而非mysqld.service
装完立刻执行 sudo mysql_secure_installation,否则 root 默认空密码 + 允许远程登录,虚拟机里等于裸奔。
发卡宝是一个专业的软件卡密等虚拟商品在线交易平台,拥有多种兑换方式,费率低,结算快,正规企业平台一直稳定运营,24小时不间断提供自动发卡服务。【模板说明】试用版自带一套模板(响应式)【环境支持】PHP环境 / 200M或以上空间大小 / 开启父路径 / 设置index.php为默认首页 / 目录写入权限需要开启【数据库】MySQL【安装步骤】将文件上传至空间目录,运行“http://域名/inst
连接不上 localhost:3306?重点查这四个位置
虚拟机里 MySQL 启动了但连不上,90% 出在绑定地址、防火墙、socket 路径或认证插件上:
-
sudo grep "bind-address" /etc/mysql/mysql.conf.d/mysqld.cnf—— 如果是127.0.0.1,宿主机用localhost能连,但用虚拟机 IP 就拒绝;改成0.0.0.0才允许外部访问(仅测试环境) -
sudo ufw status(Ubuntu)或sudo firewall-cmd --list-ports(CentOS)—— 检查 3306 是否开放,没开就加规则 -
mysql -u root -S /var/run/mysqld/mysqld.sock—— 如果提示Can't connect to local MySQL server,先确认 socket 文件是否存在,再看ps aux | grep mysqld进程是否真在跑 -
SELECT user, host, plugin FROM mysql.user WHERE user='root';—— 若 plugin 是auth_socket,本地 socket 登录没问题,但用密码登录会失败,需执行ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpass';
别把虚拟机当开发机:MySQL 配置要精简
虚拟机资源有限,MySQL 默认配置(尤其 innodb_buffer_pool_size)容易吃光内存导致 OOM 或卡死:
- 编辑
/etc/mysql/mysql.conf.d/mysqld.cnf,在[mysqld]下加:innodb_buffer_pool_size = 256M(1G 内存虚拟机)或512M(2G) - 注释掉或删掉
skip-networking(它会让 MySQL 只监听 socket,不启 TCP 端口) - 避免启用
performance_schema或slow_query_log(调试阶段可关,省 100MB+ 内存) - 如果只做本地测试,把
max_connections = 50(默认 151),防止并发高时撑爆虚拟机
改完配置必须 sudo systemctl restart mysql,且建议用 sudo systemctl status mysql 看日志末尾有没有 ready for connections,而不是只看 active (running)。









