绝大多数情况下不要自己编译安装MySQL,应优先使用云服务器系统自带的包管理器安装;需注意默认仅监听本地、安全组放行、远程用户授权及MySQL 8.0认证插件兼容性问题,并根据云盘性能调优InnoDB关键参数。

云服务器上装 MySQL 到底要不要自己编译?
绝大多数情况下,不要自己编译安装。云服务器(如阿里云、腾讯云、AWS)的 Linux 发行版(Ubuntu/CentOS/Debian)都自带稳定、适配好的 MySQL 包,直接用包管理器装更安全、更新有保障、依赖自动处理。
常见误区是看到“最新版”就去官网下 tar.gz 编译——结果可能缺 libaio、cmake 版本不匹配、SELinux 拦截、或启动失败报 Failed to start mysqld.service: Unit not found。
- Ubuntu/Debian:用
apt install mysql-server(默认装mysql-server-8.0) - CentOS 8+ / Rocky/AlmaLinux:用
dnf install mysql-server - CentOS 7:官方源已弃用 MySQL,改用
yum install mariadb-server或启用 MySQL 官方 repo 后装mysql-community-server
装完连不上?检查这三处网络和权限
装完 mysql-server 默认只监听 127.0.0.1,且 root 用户默认禁止远程登录——这是云服务器上最常卡住的点。
- 确认监听地址:
sudo ss -tlnp | grep :3306,若只显示127.0.0.1:3306,需改/etc/mysql/mysql.conf.d/mysqld.cnf(Ubuntu)或/etc/my.cnf(CentOS),把bind-address改成0.0.0.0或具体内网 IP - 开放云平台安全组:必须在阿里云控制台、腾讯云「安全组」里放行 TCP 3306 端口,仅限可信 IP(比如你办公室 IP),别开 0.0.0.0/0
- 授权远程用户:
mysql -u root -p进去后执行:CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'strong_pass'; GRANT ALL ON mydb.* TO 'app'@'192.168.1.%'; FLUSH PRIVILEGES;——别直接给 root 远程权限
MySQL 8.0 默认认证插件导致客户端连不上
Ubuntu 20.04+/CentOS 8+ 装的 MySQL 8.0 默认用 caching_sha2_password 插件,但老版本 MySQL Workbench、某些 Python 驱动(如 PyMySQL 0.9 以下)、PHP mysqli 扩展会报错:Authentication plugin 'caching_sha2_password' cannot be loaded。
- 临时解决(开发环境):创建用户时指定旧插件:
CREATE USER 'dev'@'%' IDENTIFIED WITH mysql_native_password BY 'pwd'; - 长期方案(生产):升级客户端驱动,比如 Python 改用
mysql-connector-python或 PyMySQL ≥1.0,Java 用 mysql-connector-j ≥8.0.23 - 不建议全局改默认插件(
default_authentication_plugin=mysql_native_password),会削弱密码安全性
云盘 IO 性能差?调这几个关键配置项
云服务器用的通常是网络型云盘(如阿里云 ESSD、腾讯云 CBS),IOPS 和吞吐受规格限制。MySQL 默认配置是为本地 SATA 盘设计的,不调容易写入慢、主从延迟高。
-
innodb_io_capacity:设为云盘实际 IOPS 的 50%~70%,例如 3000 IOPS 的盘,设2000 -
innodb_log_file_size:云盘随机写强,可加大到512M(需先停库、删旧 log、再启) -
innodb_flush_method:云环境推荐O_DIRECT(绕过系统缓存,避免 double buffer) - 别盲目开
query_cache_type=1:MySQL 8.0 已移除,5.7 中在高并发下反而成瓶颈
这些值不是拍脑袋定的,得结合 SHOW ENGINE INNODB STATUS\G 里的 Log sequence number 增速、Buffer pool hit rate 和云监控里的磁盘 await、util 来调。










