跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何在Ubuntu 22.04上通过APT安装MySQL 8.4 LTS_配置官方源存储库

Ubuntu 22.04 官方源仅提供 MySQL 8.0.x,不包含 8.4 LTS;需通过官方 mysql-apt-config 工具添加源并安装,手动装 deb 易因依赖失败,且配置须禁用 validate_password 和调整 sql_mode 才兼容旧应用。 为什么不能直接
apt install mysql-server
装到 8.4 Ubuntu 22.04 官方源默认只提供
mysql-server
8.0.x(如
8.0.32-0ubuntu0.22.04.2
),不包含 8.4 LTS。MySQL 8.4 是官方明确标注的长期支持(LTS)版本,但未被 Ubuntu 自带仓库收录。硬装 deb 包(如知识库中提到的
mysql-server_8.4.8-1ubuntu22.04_amd64.deb
)容易因依赖冲突或缺失
libmysqlclient
版本而失败,
dpkg -i
后常报
unmet dependencies
错误。 添加 MySQL 官方 APT 源的正确步骤 必须用 MySQL 官方提供的
mysql-apt-config
工具配置源,不能手动编辑
/etc/apt/sources.list
—— 官方源地址含架构和发行版代号(如
focal
jammy
),写错会导致
apt update
报 404。 下载最新配置包(截至 2026 年 5 月,推荐
mysql-apt-config_0.8.29-1_all.deb
):
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
安装并交互配置:
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
安装时会弹出 ncurses 界面,用方向键选中
MySQL Server & Cluster
→ 回车 → 用空格选中
mysql-8.4
→ Tab 切到
OK
确认 更新索引:
sudo apt update
成功后应看到类似
Hit: ... https://repo.mysql.com/apt/ubuntu jammy InRelease
的日志
apt install mysql-server
时的关键参数与陷阱 执行安装前务必确认源已生效:
apt-cache policy mysql-server
应显示候选版本为
8.4.x
(如
8.4.8-1ubuntu22.04
)。若仍显示 8.0,说明源未生效或缓存未刷新。 MySQL(Linux) MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。 下载 直接运行:
sudo apt install mysql-server
安装过程会自动创建
root@localhost
用户,并使用
auth_socket
插件(无密码,依赖系统用户权限) 不要加
=8.4.8
这类精确版本号 —— 官方 deb 包命名中含
ubuntu22.04
,但
apt
解析时可能因变体名(如
mysql-community-server
vs
mysql-server
)匹配失败,导致
E: Version '8.4.8' for 'mysql-server' was not found
安装完成后立即检查服务状态:
systemctl status mysql
若卡在
activating
,大概率是
/var/lib/mysql
权限不对或磁盘空间不足(8.4 初始化比 8.0 更严格) 安装后必须改的两个配置项 MySQL 8.4 默认启用强密码策略和严格 SQL 模式,不调整会导致旧应用连接失败或建表报错。 禁用密码强度校验(否则
ALTER USER ... BY '123456'
会因太弱被拒): 在
/etc/mysql/mysql.conf.d/mysqld.cnf
中添加:
validate_password=OFF
放宽 SQL 模式(避免
INSERT INTO t VALUES ()
类语句失败): 在同一文件的
[mysqld]
下添加:
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
注意:不要删掉
STRICT_TRANS_TABLES
,否则可能掩盖数据截断问题 改完重启:
sudo systemctl restart mysql
8.4 的
mysql_native_password
插件默认禁用,远程连接时若用老客户端(如某些 Python MySQL 驱动),必须显式指定认证方式;
CREATE USER
时漏写
IDENTIFIED WITH mysql_native_password
就连不上。

相关文章