本文匯總瞭解決在部署MySQL資料庫過程中遇到的常見問題及其對應的解決方案,旨在協助使用者順利安裝、配置和管理MySQL資料庫,確保伺服器的穩定運行。
忘記MySQL使用者密碼
如果忘記其他使用者密碼,需使用root許可權直接修改目標使用者密碼。如果忘記root使用者密碼,則需通過停止MySQL服務,以跳過許可權驗證方式啟動MySQL來重設密碼。
忘記其他使用者密碼
-
查詢目標使用者的Host值。
# 替換為實際使用者名稱 mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = '目標使用者名稱';" -
根據Host值修改密碼,如果您有多個Host需要逐個指定Host。
#替換為實際使用者名稱密碼和Host mysql -uroot -p -e "ALTER USER '目標使用者名稱'@'目標Host' IDENTIFIED BY '新密碼'; FLUSH PRIVILEGES;"
忘記root使用者密碼
重設root使用者密碼需要停止MySQL服務。
-
運行以下命令以停止MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl stop mysqldUbuntu/Debian
sudo systemctl stop mysql -
以臨時模式啟動MySQL(需記錄進程ID以便後續終止)。
說明-
--skip-grant-tables:跳過許可權驗證,允許無密碼登入。 -
&:在後台運行MySQL進程,終端會返回一個進程ID(PID)(如[1] 1234,其中1234即為PID)。
sudo -u mysql mysqld --skip-grant-tables & -
-
伺服器重新載入授權表,並修改root將密碼,
<password>替換為您要使用的密碼。需遵循以下密碼原則:密碼必須包含至少一個大寫字母、一個小寫字母、一個數字和一個特殊字元,且總長度不少於8個字元。mysql -uroot -e"FLUSH PRIVILEGES;" -e"ALTER USER 'root'@'localhost' IDENTIFIED BY '<password>';"如果執行後輸出錯誤
Your password does not satisfy the current policy requirements。說明您的密碼設定不符合策略要求。您需要關閉MySQL進程,然後跳過許可權驗證啟動MySQL,並執行修改密碼命令。 -
關閉MySQL的進程。
kill <進程ID> -
啟動MySQL服務,運行以下命令可以啟動MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl start mysqldUbuntu/Debian
sudo systemctl start mysql -
輸入新密碼,若成功進入MySQL命令列則表示密碼修改成功。
mysql -u root -p
更改MySQL資料目錄
如果需要更改MySQL的資料目錄,可以參考以下操作步驟。
-
運行以下命令以停止MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl stop mysqldUbuntu/Debian
sudo systemctl stop mysql -
修改設定檔,找到
my.cnf檔案(通常位於/etc/my.cnf)。開啟檔案並修改datadir欄位,將其值更改為新的資料目錄路徑。datadir=/new/data/directory -
拷貝資料,將原資料目錄中的所有檔案和檔案夾拷貝到新的資料目錄中。
sudo cp -aR /old/data/directory/* /new/data/directory/ -
啟動MySQL服務,運行以下命令可以啟動MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl start mysqldUbuntu/Debian
sudo systemctl start mysql
MySQL無法啟動,提示“Permission denied”錯誤
如果MySQL服務無法啟動,並提示“Permission denied”錯誤,可以參考以下步驟操作。
-
通過查看MySQL的
error.log檔案,可以定位到具體的錯誤資訊。說明預設位置通常是
/var/log/mysqld.log或/var/log/mysql/error.log。[ERROR] [MY-010092] [Server] Can't start server: can't create PID file: Permission denied -
檢查並清理殘留進程,如果存在
mysqld進程殘留,運行以下命令可以結束這些進程。sudo ps aux | grep mysqld sudo kill -9 <進程ID> -
啟動MySQL服務,運行以下命令可以啟動MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl start mysqldUbuntu/Debian
sudo systemctl start mysql
MySQL無法啟動,提示“File './binlog.index' not found”錯誤
如果MySQL服務無法啟動,並提示“File './binlog.index' not found”錯誤,可以參考以下步驟。
-
通過查看MySQL的
error.log檔案,可以定位到具體的錯誤資訊。說明預設位置通常是
/var/log/mysqld.log或/var/log/mysql/error.log。mysqld: File './binlog.index' not found (OS errno 13 - Permission denied) -
查看MySQL資料目錄,發現使用者權限不正常。
說明預設資料目錄位置通常是
/var/lib/mysql,如果您修改了資料目錄,您需要修改相關命令。sudo ls -l /var/lib/mysql-rw-r----- 1 root root 56 Mar 19 15:51 auto.cnf -rw-r----- 1 root root 1551 Mar 19 15:51 binlog.000001 -rw-r----- 1 root root 16 Mar 19 15:51 binlog.index -rw------- 1 root root 1680 Mar 19 15:51 ca-key.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 ca.pem -rw-r--r-- 1 root root 1108 Mar 19 15:51 client-cert.pem -
執行命令,賦予許可權。
sudo chown -R mysql:mysql <資料目錄> -
啟動MySQL服務,運行以下命令可以啟動MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl start mysqldUbuntu/Debian
sudo systemctl start mysql