用官方APT仓库装MySQL 8.0.46、Ondřej Surý PPA装PHP 8.2,可精准控制版本、配置与路径,避开Ubuntu 22.04默认的老旧MySQL 5.7及snap/镜像源的隔离与固化缺陷。

直接上结论:用官方 APT 仓库 + Ondřej Surý PPA 安装 MySQL 8.0 和 PHP8.2,比用腾讯云镜像源或 snap 更稳、更可控,且能避开 Ubuntu 22.04 默认带的老旧 MySQL 5.7。
为什么不用腾讯云一键镜像或 snap install mysql
腾讯云 CVM 的「应用镜像」(如 LNMP 一键包)常固化旧版组件,MySQL 多为 5.7 或未启用 innodb_buffer_pool_size 自动调优;snap install mysql 则受限于 snap 的文件系统隔离,无法直接挂载宿主机数据卷、日志路径难定位、my.cnf 配置修改后易被覆盖。生产环境需要明确掌控配置路径、服务启停逻辑和错误日志位置——这些都指向原生 APT 方式。
Ubuntu 22.04 下安装 MySQL 8.0.46 的关键步骤
以下命令均在 root 或具有 sudo 权限的普通账号下执行:
- 添加 MySQL 官方 APT 源(非 Ubuntu 默认源):
curl -fsSL https://repo.mysql.com/mysql-apt-config_0.8.24-1_all.deb > /tmp/mysql-apt.deb && sudo dpkg -i /tmp/mysql-apt.deb
安装时选择mysql-8.0分支,再运行sudo apt update - 安装服务并跳过交互式配置(避免卡在密码设置界面):
sudo apt install -y mysql-server --no-install-recommends
- 首次启动后,立即获取临时密码:
sudo grep 'temporary password' /var/log/mysql/error.log
- 运行安全初始化(禁用匿名用户、删除 test 库、禁远程 root):
sudo mysql_secure_installation
过程中输入上一步拿到的临时密码,其余按需选 Y
必须改的几项核心配置(/etc/mysql/mysql.conf.d/mysqld.cnf)
不改这几项,MySQL 在 CVM 上跑不满 30% 内存利用率,也扛不住并发连接:
-
bind-address:默认是127.0.0.1,如需内网其他 CVM 访问,改为0.0.0.0,但必须配合腾讯云安全组仅放行 Web 实例内网 IP 段 -
max_connections:CVM 2核4G 起步,建议设为500~1000,而非默认 151 -
innodb_buffer_pool_size:设为内存的 50%~60%,例如 4G 内存就填2G;注意该值不能超过innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances的乘积,否则启动失败 -
character-set-server和collation-server:必须为utf8mb4和utf8mb4_0900_ai_ci,否则 Laravel/ThinkPHP 等框架建表报错
容易被忽略的权限与路径问题
腾讯云 CVM 默认关闭 SELinux,但 AppArmor 仍可能干扰 MySQL 数据目录访问:
- 若你把
datadir改到非默认路径(如/data/mysql),必须确保目录属主为mysql:mysql,且用sudo chown -R mysql:mysql /data/mysql - AppArmor 配置文件
/etc/apparmor.d/usr.sbin.mysqld需同步更新datadir和日志路径,否则systemctl start mysql会静默失败 -
mysql.sock默认在/var/run/mysqld/mysqld.sock,PHP-FPM 连接时若用 socket 方式,php.ini中的mysqli.default_socket必须匹配该路径,不能写成/tmp/mysql.sock



















