debian系统上直接运行apt install mysql-server会安装mariadb而非mysql,因自debian 11起官方源已移除mysql包;正确方法是先下载安装mysql官方仓库配置包、更新索引,再执行安装,并注意认证插件兼容性与systemd服务管理细节。

apt install mysql-server 是当前 Debian 系统上安装 MySQL 的推荐方法,但前提是必须先添加 MySQL 官方仓库 —— 否则 apt install mysql-server 实际安装的是 MariaDB,不是 MySQL。
这是因为自 Debian 11 起,官方源已移除 MySQL 包,只保留 MariaDB 作为默认兼容替代。直接运行 apt install mysql-server 不会报错,但装出来的服务进程是 mariadb-server,监听端口、配置路径、甚至 mysql --version 输出都显示 MariaDB。
为什么不能直接 apt install mysql-server?
Debian 默认软件源中没有 MySQL 官方包。系统会 fallback 到 mariadb-server(它提供 mysql-server 虚包),导致你以为装了 MySQL,实际启动的是 MariaDB。验证方式很简单:sudo systemctl status mysql 看到的 Description 是 “MariaDB database server”,或执行 mysql --version 输出包含 mariadb 字样,就说明踩坑了。
正确添加 MySQL 官方仓库的步骤
必须按顺序执行,跳过任一环节都可能失败:
- 下载并安装仓库配置包:
wget https://repo.mysql.com/mysql-apt-config_0.8.36-1_all.deb && sudo dpkg -i mysql-apt-config_0.8.36-1_all.deb;安装时会弹出交互界面,默认选MySQL Server & Cluster,用方向键选中后按 Tab → Enter 确认; - 更新索引:
sudo apt update;此时apt-cache policy mysql-server应显示来自http://repo.mysql.com的候选版本(如8.0.42-1debian12); - 安装:
sudo apt install -y mysql-server;过程中会弹出图形化密码设置界面(Debian 12/13 使用debconf驱动),务必输入符合强度要求的密码(至少含大小写字母+数字+特殊字符);
安装后必须立即处理的兼容性问题
MySQL 8.0+ 默认使用 caching_sha2_password 认证插件,而旧版客户端(如某些 PHP 扩展、Navicat 旧版本、Python mysqlclient)不支持,连接时会报错:Authentication plugin 'caching_sha2_password' cannot be loaded。
解决方法不是降级认证方式,而是针对性修复:
- 若需兼容老客户端,登录 MySQL 后执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';; - 对新创建用户,显式指定插件:
CREATE USER 'appuser'@'%' IDENTIFIED WITH mysql_native_password BY 'pass123';; - 不建议全局修改
default_authentication_plugin,这会影响后续新建用户的默认行为,且削弱安全性;
容易被忽略的 systemd 服务细节
MySQL 在 Debian 上由 systemd 管理,但它的 service 文件(/lib/systemd/system/mysql.service)依赖 mysqld 进程正常退出。如果手动 kill -9 过进程,下次 systemctl start mysql 可能卡在 start-post 阶段,日志里出现 Failed to start MySQL Server 却无具体错误。
真正原因常是 /var/run/mysqld/mysqld.sock 文件残留或权限错乱。安全重启方式是:sudo systemctl stop mysql && sudo rm -f /var/run/mysqld/mysqld.sock && sudo systemctl start mysql。不要依赖 service mysql restart,它在新版 systemd 下已被弃用且行为不可靠。











