优先用系统包管理器安装MariaDB,RHEL系用yum install -y mariadb-server,Debian/Ubuntu用apt install -y mariadb-server;安装后需启动服务、运行mysql_secure_installation,并注意socket路径一致性及权限配置。

mariadb 在大多数现代 Linux 发行版中已取代 mysql,但安装方式不统一,选错方法容易卡在初始化、权限或 socket 错误上。直接结论:优先用系统包管理器安装,除非你明确需要特定小版本(如 10.11.x)或离线部署。
用 yum 或 apt 安装最稳,但要注意发行版差异
系统包管理器安装省心,服务单元、默认路径、日志位置都已预设,适合生产环境快速上线。
- RHEL/CentOS/AlmaLinux/Rocky Linux 8+:
yum install -y mariadb-server mariadb(注意不是MariaDB-server,大小写敏感) - Debian 12 / Ubuntu 22.04+:
apt update && apt install -y mariadb-server mariadb-client - 安装后必须运行
systemctl start mariadb和systemctl enable mariadb,否则服务不启动 - 别跳过
mysql_secure_installation—— 它不只是设 root 密码,还会禁用匿名用户、删除 test 库、禁止远程 root 登录,这步漏掉等于裸奔
mysql_install_db 已废弃,新版本必须用 mariadb-install-db 或 systemd 初始化
如果你从二进制包手动部署,或看到老教程里用 scripts/mysql_install_db,请立刻停手。MariaDB 10.2+ 已移除此脚本,强行调用会报错:
ERROR 1045 (28000): Access denied for user 'root'@'localhost'
正确做法是:
- 确保
mysql用户存在:useradd -r -s /sbin/nologin -M mysql - 指定数据目录并赋权:
mkdir -p /appdata/mysql && chown -R mysql:mysql /appdata/mysql - 用新版初始化命令:
mariadb-install-db --datadir=/appdata/mysql --user=mysql - 若提示
libaio.so.1: cannot open shared object file,补装:yum install -y libaio(CentOS)或apt install -y libaio1(Debian/Ubuntu)
socket 连接失败(Can't connect to local MySQL server through socket)八成是路径不一致
这是最常被忽略的细节:客户端默认连 /var/run/mysqld/mysqld.sock 或 /tmp/mysql.sock,而服务端实际监听的可能是 /var/lib/mysql/mysql.sock。不匹配就报错。
- 先查服务端实际 socket 路径:
sudo grep "socket" /etc/my.cnf /etc/mysql/my.cnf 2>/dev/null - 再查客户端默认路径:
mariadb --help | grep "Default options"(看输出里的 socket 行) - 临时解决:加软链,例如服务端在
/var/lib/mysql/mysql.sock,就执行sudo ln -sf /var/lib/mysql/mysql.sock /tmp/mysql.sock - 长期解决:统一改到
/var/run/mysqld/mysqld.sock,并在[client]和[mysqld]段都显式写socket = /var/run/mysqld/mysqld.sock
官方仓库装指定版本时,mariadb_repo_setup 脚本必须带 --mariadb-server-version
直接跑 curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash 默认装最新稳定版,但可能不是你要的 10.11.x —— 官方脚本不会猜你的意图。
- 装 10.11 系列:
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.11 - 装 10.6:
--mariadb-server-version=10.6,不能写成10.6.0或10.6.x - 执行后务必
yum clean all && yum makecache(RHEL系)或apt update(Debian系),否则仍会拉旧包 - 包名大小写敏感:
yum install MariaDB-server(首字母大写),不是mariadb-server;APT 侧则仍是小写
真正麻烦的从来不是“怎么装”,而是“为什么装完连不上”“为什么初始化报错”“为什么改了配置不生效”。这些点全卡在路径、用户、权限、socket 四个地方,盯住它们比反复重装更有效。

















