全部產品
Search
文件中心

Elastic Compute Service:部署MySQL常見問題

更新時間:May 08, 2025

本文匯總瞭解決在部署MySQL資料庫過程中遇到的常見問題及其對應的解決方案,旨在協助使用者順利安裝、配置和管理MySQL資料庫,確保伺服器的穩定運行。

忘記MySQL使用者密碼

如果忘記其他使用者密碼,需使用root許可權直接修改目標使用者密碼。如果忘記root使用者密碼,則需通過停止MySQL服務,以跳過許可權驗證方式啟動MySQL來重設密碼。

忘記其他使用者密碼

  1. 查詢目標使用者的Host值。

    # 替換為實際使用者名稱
    mysql -uroot -p -e "SELECT Host FROM mysql.user WHERE User = '目標使用者名稱';"
  2. 根據Host值修改密碼,如果您有多個Host需要逐個指定Host。

    #替換為實際使用者名稱密碼和Host
    mysql -uroot -p -e "ALTER USER '目標使用者名稱'@'目標Host' IDENTIFIED BY '新密碼'; FLUSH PRIVILEGES;"

忘記root使用者密碼

重要

重設root使用者密碼需要停止MySQL服務。

  1. 運行以下命令以停止MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl stop mysqld

    Ubuntu/Debian

    sudo systemctl stop mysql
  2. 以臨時模式啟動MySQL(需記錄進程ID以便後續終止)。

    說明
    • --skip-grant-tables:跳過許可權驗證,允許無密碼登入。

    • &:在後台運行MySQL進程,終端會返回一個進程ID(PID)(如 [1] 1234,其中 1234 即為PID)。

    sudo -u mysql mysqld --skip-grant-tables &
  3. 伺服器重新載入授權表,並修改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,並執行修改密碼命令。

  4. 關閉MySQL的進程。

    kill <進程ID>
  5. 啟動MySQL服務,運行以下命令可以啟動MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl start mysqld

    Ubuntu/Debian

    sudo systemctl start mysql
  6. 輸入新密碼,若成功進入MySQL命令列則表示密碼修改成功。

    mysql -u root -p

更改MySQL資料目錄

如果需要更改MySQL的資料目錄,可以參考以下操作步驟。

  1. 運行以下命令以停止MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl stop mysqld

    Ubuntu/Debian

    sudo systemctl stop mysql
  2. 修改設定檔,找到my.cnf檔案(通常位於/etc/my.cnf)。開啟檔案並修改datadir欄位,將其值更改為新的資料目錄路徑。

    datadir=/new/data/directory
  3. 拷貝資料,將原資料目錄中的所有檔案和檔案夾拷貝到新的資料目錄中。

    sudo cp -aR /old/data/directory/* /new/data/directory/
  4. 啟動MySQL服務,運行以下命令可以啟動MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl start mysqld

    Ubuntu/Debian

    sudo systemctl start mysql

MySQL無法啟動,提示“Permission denied”錯誤

如果MySQL服務無法啟動,並提示“Permission denied”錯誤,可以參考以下步驟操作。

  1. 通過查看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
  2. 檢查並清理殘留進程,如果存在mysqld進程殘留,運行以下命令可以結束這些進程。

    sudo ps aux | grep mysqld
    sudo kill -9 <進程ID>
  3. 啟動MySQL服務,運行以下命令可以啟動MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl start mysqld

    Ubuntu/Debian

    sudo systemctl start mysql

MySQL無法啟動,提示“File './binlog.index' not found”錯誤

如果MySQL服務無法啟動,並提示“File './binlog.index' not found”錯誤,可以參考以下步驟。

  1. 通過查看MySQL的error.log檔案,可以定位到具體的錯誤資訊。

    說明

    預設位置通常是/var/log/mysqld.log/var/log/mysql/error.log

    mysqld: File './binlog.index' not found (OS errno 13 - Permission denied)
  2. 查看MySQL資料目錄,發現使用者權限不正常。

    說明

    預設資料目錄位置通常是/var/lib/mysql,如果您修改了資料目錄,您需要修改相關命令。

    sudo ls -l /var/lib/mysql

    image

  3. 執行命令,賦予許可權。

    sudo chown -R mysql:mysql <資料目錄>
  4. 啟動MySQL服務,運行以下命令可以啟動MySQL服務。

    Alibaba Cloud Linux/CentOS

    sudo systemctl start mysqld

    Ubuntu/Debian

    sudo systemctl start mysql