Ubuntu MariaDB故障排查步骤
首先确认MariaDB服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mariadb
若服务未运行,会显示具体错误信息(如“failed”或“inactive”);若已运行,则跳过后续服务启动步骤。
错误日志是定位故障的关键,Ubuntu下MariaDB的默认错误日志路径为/var/log/mysql/error.log。使用以下命令查看最近50条日志:
sudo tail -n 50 /var/log/mysql/error.log
日志中会明确提示启动失败、连接拒绝或配置错误等具体原因(如“Port 3306 is already in use”或“Access denied for user”)。
MariaDB的主配置文件通常位于/etc/mysql/mariadb.conf.d/50-server.cnf(部分系统可能在/etc/mysql/my.cnf)。重点检查以下配置项:
bind-address:若需允许远程连接,需将其设置为0.0.0.0(监听所有IP);若仅本地使用,保持127.0.0.1。port:确保端口为3306(默认端口),避免与其他服务冲突。sudo systemctl restart mariadb。MariaDB的数据目录(默认/var/lib/mysql)及其子目录必须属于mysql用户和组,否则会导致启动失败。使用以下命令修复权限:
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod -R 755 /var/lib/mysql
若数据目录不存在,需手动创建并设置正确权限。
netstat或ss命令检查3306端口是否被其他进程占用:sudo netstat -tulnp | grep 3306port配置。ufw防火墙,需允许3306端口:sudo ufw allow 3306/tcpsudo ufw reloadiptables,需添加对应规则:sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT。--skip-grant-tables参数跳过权限检查(用于重置密码或修复权限):sudo mysqld_safe --skip-grant-tables &sudo apt-mark hold mariadb-server mariadb-client mariadb-common。sudo systemctl stop mariadbsudo mysqld_safe --skip-grant-tables &FLUSH PRIVILEGES;ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';sudo systemctl restart mariadb。sudo aa-disable /usr/sbin/mysqld/etc/apparmor.d/usr.sbin.mysqld),添加允许访问的路径,然后重启AppArmor:sudo systemctl restart apparmor。完成上述步骤后,测试MariaDB是否可正常连接:
mysql命令登录:mysql -u root -pmysql命令指定服务器IP:mysql -h server_ip -u remote_user -p