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