首先通过以下命令确认MariaDB服务的运行状态,若未运行会显示具体错误信息:
sudo systemctl status mariadb.service
若服务未启动,需进一步排查错误原因。
MariaDB的错误日志是排查启动失败的关键,通常位于/var/log/mysql/error.log
。使用以下命令查看最近50条日志:
sudo tail -n 50 /var/log/mysql/error.log
日志中会明确提示失败原因(如权限问题、配置错误、端口冲突等)。
MariaDB的数据目录(默认/var/lib/mysql
)必须属于mysql
用户和组,且权限设置为755
。修复命令:
sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 755 /var/lib/mysql
若权限问题仍存在,可尝试重新初始化数据目录(注意:此操作会清空现有数据,需提前备份):
sudo mysqld --initialize-insecure --user=mysql sudo mysql_secure_installation
检查MariaDB配置文件(/etc/mysql/my.cnf
或/etc/mysql/mariadb.conf.d/*.cnf
),确保无语法错误或不兼容配置。特别注意bind-address
(默认127.0.0.1
,若需远程访问可注释掉或改为0.0.0.0
)、socket
路径(需存在且可写)。修改后重启服务:
sudo systemctl restart mariadb
使用df -h
命令检查磁盘空间,若根分区或/var
分区空间不足(剩余空间小于10%),需清理无用文件(如/tmp
、旧日志)或扩容磁盘。
若系统启用AppArmor,可能阻止MariaDB访问某些文件。可临时禁用MariaDB对应的AppArmor配置:
sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld
然后重启MariaDB服务。
若系统自动更新修改了MariaDB配置文件,可锁定相关软件包版本,防止再次更新:
sudo apt-mark hold mariadb-server mariadb-client mariadb-common
若需回滚更新,可通过apt
历史记录恢复。
检查3306
端口(MariaDB默认端口)是否被其他进程占用:
sudo netstat -tuln | grep 3306
若端口被占用,可修改MariaDB配置文件中的port
参数(如改为3307
),或停止占用进程。
若上述方法均无效,可尝试安全模式启动(跳过权限检查),用于重置root密码或修复权限问题:
sudo mysqld_safe --skip-grant-tables &
启动后无需密码登录,执行mysql -u root
进入数据库,再根据需求重置密码或修复权限。
/var/lib/mysql
目录);