本文匯總瞭解決在部署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
執行命令,賦予許可權。
sudo chown -R mysql:mysql <資料目錄>啟動MySQL服務,運行以下命令可以啟動MySQL服務。
Alibaba Cloud Linux/CentOS
sudo systemctl start mysqldUbuntu/Debian
sudo systemctl start mysql