答案是:只安装了客户端mariadb,未安装服务端mariadb-server包。需执行yum install -y mariadb-server(rhel系)或apt install -y mariadb-server(debian/ubuntu)后,再systemctl start mariadb。

直接用系统包管理器装,除非你明确需要特定小版本(如 10.11.x)或离线部署。其他方式要么多出一堆权限/路径/初始化问题,要么后续升级维护成本陡增。
systemctl start mariadb 报 Unit not found 怎么办
八成是只装了客户端,漏了服务端包。不同发行版的包名不统一,且大小写敏感:
- RHEL/CentOS/AlmaLinux/Rocky Linux 8+:
yum install -y mariadb-server(不是MariaDB-server) - Debian 12 / Ubuntu 22.04+:
apt install -y mariadb-server(mariadb-client是可选的,但mariadb-server必须装) - Arch Linux:
pacman -S mariadb,装完要手动运行mariadb-install-db初始化,否则systemctl start必然失败
装完别忘了启用并启动:systemctl enable --now mariadb。用 --now 一步到位,比分开执行更不容易漏。
mysql_secure_installation 运行卡在第一步或报错
首次运行时,提示 “Enter current password for root (enter for none):”,必须直接按回车——这不是让你输密码,而是告诉脚本“当前没设密码”。如果误输字符或空格,脚本可能中断或跳过关键步骤。
常见报错及应对:
-
ERROR 1698 (28000): Access denied for user 'root'@'localhost':说明认证插件是auth_socket(Ubuntu/Debian 默认),此时不能用密码登录。解决方法是先运行脚本,它会自动切换为unix_socket或设置密码;若已卡住,停服务后加--skip-grant-tables启动再重置 -
Failed! Error: SET PASSWORD has no effect...:这是 MySQL 8.0+ 的提示,但你在跑 MariaDB ——说明环境里混进了 MySQL 包,得清理冲突(如mariadb-libs和mysql-community-common)
Can't connect to local MySQL server through socket 错误
根本原因就一个:客户端默认找的 socket 路径和 mysqld 实际监听的不一致。不是网络问题,也不是权限问题。
两步定位:
- 查服务端实际路径:
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;长期方案是在 [client] 和 [mysqld] 段都显式写 socket = /var/run/mysqld/mysqld.sock,然后重启服务。
想让其他机器连 3306,改完 bind-address 还连不上
改配置只是第一步。必须同步检查两个地方:
- 确认监听状态:
sudo ss -tlnp | grep :3306。如果显示127.0.0.1:3306,才需要改bind-address = 0.0.0.0;如果已经是*:3306,说明已监听所有接口,不用改 - 防火墙是否放行:
firewalld用户执行firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload;ufw用户执行ufw allow 3306 - 远程用户授权必须单独做:
GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;—— 注意'%'是字面量,不是通配符占位符
真正容易被忽略的是:MariaDB 10.4+ 默认禁用远程 root,mysql_secure_installation 第四步就干这事。所以别指望用 root 直接远程连,得建专用用户。











