mariadb 11.4是截至2026年4月的稳定主力版本,安装需按发行版区分:ubuntu/debian用apt安装后可直接启动,centos/rhel等须手动运行mariadb-install-db初始化;该版本弃用mysql_install_db,推荐使用--auth-root-authentication-method=normal参数以支持密码登录,并注意依赖libaio及systemd服务文件路径适配。

mariadb 11.4 是当前稳定主力版本(截至 2026 年 4 月),安装方式取决于你的发行版和需求场景:包管理器安装最省事,二进制部署最可控,但两者初始化逻辑和默认配置差异明显,混用容易导致 mysqld 启动失败或权限混乱。
用 apt/yum 安装 mariadb-server 时为什么启动不了?
常见现象是 systemctl start mariadb 报错退出,journalctl -u mariadb -n 50 显示 Can't open and lock privilege tables 或 Failed to initialize databases。
根本原因在于:Debian/Ubuntu 的 mariadb-server 包会自动运行 mysql_install_db 初始化,但 CentOS/RHEL 8+ 的 mariadb-server 包默认不初始化,且 systemd 单元文件依赖 /var/lib/mysql 已存在有效数据目录。
- Ubuntu/Debian 系统:安装后直接
systemctl start mariadb即可,初始化由 postinst 脚本完成 - CentOS/RHEL/AlmaLinux:必须手动运行
mysql_install_db或更推荐的mariadb-install-db(11.4+ 推荐) - 若已启动失败又强行删了
/var/lib/mysql,需先systemctl stop mariadb再重初始化,否则 socket 文件残留会导致后续启动卡住
mariadb-install-db 和 mysql_install_db 有什么区别?
mysql_install_db 是旧脚本,11.4 开始已被标记为 deprecated;mariadb-install-db 是官方推荐替代,行为更一致、错误提示更明确,且默认使用 --auth-root-authentication-method=unix_socket(即 root 只能本地系统用户免密登录)。
典型用法:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
./scripts/mariadb-install-db \ --basedir=/apps/mariadb-11.4.5 \ --datadir=/appdata/mysql \ --user=mysql \ --auth-root-authentication-method=normal
-
--auth-root-authentication-method=normal才会让mysql -u root -p生效;不加此参数,root 只能sudo mysql进去 -
--user=mysql必须指定,且该用户需对--datadir有完全读写权限(chown -R mysql:mysql /appdata/mysql) - 若提示
libaio.so.1: cannot open shared object file,说明缺系统依赖:yum install -y libaio(CentOS)或apt install -y libaio1(Debian/Ubuntu)
二进制包安装后怎么让 systemctl 管理?
官方二进制包自带 support-files/mariadb.service,但路径硬编码了 /usr/local/mysql,你解压到 /apps/mariadb-11.4.5 就得改。
正确做法:
- 复制服务文件:
cp /apps/mariadb-11.4.5/support-files/mariadb.service /etc/systemd/system/ - 编辑
/etc/systemd/system/mariadb.service,修改两处:Environment="MYSQL_HOME=/apps/mariadb-11.4.5"和ExecStart=/apps/mariadb-11.4.5/bin/mariadbd ... - 重载配置:
systemctl daemon-reload,再systemctl enable --now mariadb - 注意:不要用
ln -s /apps/mariadb-11.4.5 /usr/local/mysql捷径,systemd 不认软链里的basedir,日志里会报Cannot find mysqld
初始化成功后连不上 root 怎么办?
11.4 默认启用 unix_socket 插件认证,意味着 mysql -u root 成功,但 mysql -u root -p 一定失败——这不是密码错了,是认证方式不匹配。
解决路径只有两条:
- 初始化时加
--auth-root-authentication-method=normal(见上一节) - 初始化后用系统用户进库再切认证方式:
sudo mysql -u root→ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('yourpass');→FLUSH PRIVILEGES; - 别漏掉
FLUSH PRIVILEGES;,否则改完也不生效
真正容易被忽略的是:mariadb 11.4 的 mysql_secure_installation 脚本在二进制部署下默认不带,得自己从源码或包管理器安装的版本里拷一个过来用,否则无法交互式设密码。










