Ubuntu MariaDB常見故障及解決方法
sudo systemctl status mariadb查看服務是否運行,若未運行會顯示錯誤信息。sudo tail -n 50 /var/log/mysql/error.log定位具體錯誤(如配置錯誤、權限問題)。/var/lib/mysql)屬主為mysql用戶,執行sudo chown -R mysql:mysql /var/lib/mysql;目錄權限設為755,執行sudo chmod -R 755 /var/lib/mysql。/etc/mysql/mariadb.conf.d/50-server.cnf(或/etc/my.cnf),確認bind-address、port等配置正確(如bind-address設為0.0.0.0允許遠程連接)。df -h查看磁盤使用情況,清理不必要的文件(如/tmp目錄)或擴容磁盤。sudo aa-disable /etc/apparmor.d/usr.sbin.mysqld),或修改/usr/lib/systemd/system/mariadb.service中的ProtectHome為false,然后重啟服務。sudo systemctl status mariadb),未啟動則執行sudo systemctl start mariadb。sudo ufw allow 3306/tcp,然后sudo ufw reload。/etc/mysql/mariadb.conf.d/50-server.cnf中的bind-address,若為127.0.0.1(僅本地連接),改為0.0.0.0(允許遠程連接),重啟服務。ping <服務器IP>測試網絡連通性,telnet <服務器IP> 3306驗證端口是否可達。mysql -u root -p),執行GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' IDENTIFIED BY 'password'(%表示允許所有主機),然后FLUSH PRIVILEGES。sudo systemctl stop mariadb。sudo mysqld_safe --skip-grant-tables &(跳過權限檢查)。mysql -u root),執行FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'(替換new_password為新密碼)。sudo mysqladmin -u root -p shutdown關閉服務,sudo systemctl start mariadb正常啟動。/etc/mysql/mariadb.conf.d/50-server.cnf中的bind-address設為0.0.0.0(允許遠程連接),重啟服務。sudo ufw allow 3306/tcp,sudo ufw reload。CREATE USER 'newuser'@'%' IDENTIFIED BY 'password'(創建遠程用戶),GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@'%'(授權指定數據庫權限),FLUSH PRIVILEGES。ping <服務器IP>測試網絡,telnet <服務器IP> 3306驗證端口可達。STOP SLAVE;),跳過當前錯誤(SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;),重啟同步(START SLAVE;)。SHOW SLAVE STATUS\G,檢查Slave_IO_Running和Slave_SQL_Running是否為Yes,Last_Error字段查看具體錯誤。sudo systemctl status mariadb)。/var/run/mysqld/mysqld.sock是否存在,若不存在則創建符號鏈接(sudo ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock)。SELECT user, host FROM mysql.user;,確保用戶的主機字段包含localhost(本地連接)或%(遠程連接)。LOAD DATA INFILE '/data/file.txt' INTO TABLE table_name CHARACTER SET 'utf8mb4'(指定源文件編碼);導入時確保表字符集與文件一致(如ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4)。/etc/mysql/mariadb.conf.d/50-server.cnf中添加[mysqld]部分,設置character-set-server = utf8mb4、collation-server = utf8mb4_unicode_ci,重啟服務。mysqladmin flush-hosts -u root -p(臨時解決)。SET GLOBAL max_connect_errors = 1000(臨時調整);或在/etc/mysql/mariadb.conf.d/50-server.cnf中添加max_connect_errors = 1000(永久生效),重啟服務。