1. 程式人生 > >首次安裝mysql服務,無法啟動服務&登陸被拒ERROR 1045 (28000)解決方法

首次安裝mysql服務,無法啟動服務&登陸被拒ERROR 1045 (28000)解決方法

2.10.4保護初始MySQL帳戶(複製於MySQL官網)

MySQL安裝過程涉及初始化資料目錄,包括mysql包含定義MySQL帳戶的授權表的資料庫。有關詳細資訊,請參見第2.10節“安裝後設置和測試”。

本節介紹如何為rootMySQL安裝過程中建立的初始帳戶分配密碼 (如果尚未這樣做)。


注意

  • 在Windows上,您還可以在使用MySQL Installer進行安裝期間執行本節中描述的過程(請參見 第2.3.3節“適用於Windows的MySQL安裝程式”)。在所有平臺上,MySQL發行版都包含 mysql_secure_installation,這是一個命令列實用程式,可以自動完成保護MySQL安裝的大部分過程。MySQL Workbench可在所有平臺上使用,並且還提供管理使用者帳戶的功能(請參閱 第30章,MySQL Workbench)。

在這些情況下,密碼可能已經分配給初始帳戶:

  1. 在Windows上,使用MySQL Installer執行的安裝為您提供了分配密碼的選項。

  2. 使用macOS安裝程式進行安裝會生成一個初始隨機密碼,安裝程式會在對話方塊中向用戶顯示該密碼。

  3. 使用RPM軟體包進行安裝會生成一個初始隨機密碼,該密碼將寫入伺服器錯誤日誌。

  4. 使用Debian軟體包的安裝為您提供了分配密碼的選項。

  5. 對於使用mysqld --initialize手動執行的資料目錄初始化 , mysqld生成初始隨機密碼,將其標記為已過期,並將其寫入伺服器錯誤日誌。有關詳細資訊,請參見 第2.10.1.1節“使用mysqld手動初始化資料目錄”。

  6. 該mysql.user授權表定義了初始MySQL使用者賬戶和訪問許可權。MySQL的安裝只會建立一個’root’@‘localhost’ 具有所有許可權且可以執行任何操作的超級使用者帳戶。如果該root帳戶的密碼為空,則您的MySQL安裝不受保護:任何人都可以在root 沒有密碼的情況下連線到MySQL伺服器並獲得所有許可權。

  7. 該’root’@‘localhost’帳戶在mysql.proxies_priv表中還有一行,用於為所有使用者和所有主機授予PROXY許可權 ‘’@’’。這樣可以root設定代理使用者,以及委託其他帳戶設定代理使用者的許可權。請參見第6.3.11節“代理使用者”。


要為初始MySQL root 帳戶分配密碼,請使用以下過程。new_password在示例中替換 您要使用的密碼。

如果伺服器未執行,請啟動它。有關說明,請參見 第2.10.2節“啟動伺服器”。

初始root帳戶可能有也可能沒有密碼。選擇以下適用的程式:

如果root帳戶存在初始隨機密碼已過期,請root使用該密碼連線到伺服器,然後選擇新密碼。如果資料目錄是使用mysqld --initialize初始化的,則可以手動或使用安裝程式在安裝操作期間無法指定密碼。由於密碼存在,您必須使用它來連線到伺服器。但由於密碼已過期,除了選擇新密碼之外,您不能將該帳戶用於任何其他目的,直到您選擇一個密碼。

如果您不知道初始隨機密碼,請檢視伺服器錯誤日誌。

就是安裝目錄下data資料夾中的ERR檔案,開啟搜尋password,就能找到初始隨機密碼 (這是重點,其他都不重要)


  • root使用密碼 連線到伺服器:
    shell> mysql -u root -p
    Enter password: (enter the random root password here)

  • 選擇一個新密碼來替換隨機密碼:
    mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;

    • 如果root帳戶存在但沒有密碼,請root 使用無密碼連線到伺服器,然後分配密碼。如果使用mysqld初始化資料目錄,則會出現這種情況–initialize-insecure。
  • root使用無密碼 連線到伺服器:
    shell> mysql -u root --skip-password


  • 分配密碼:
    mysql> ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘new_password’;
  • 為root帳戶分配密碼後,只要您使用該帳戶連線到伺服器,就必須提供該密碼。例如,要使用mysql客戶端連線到伺服器 ,請使用以下命令:
    shell> mysql -u root -p
    Enter password: (enter root password here)

  • 要使用mysqladmin關閉伺服器,請使用以下命令:
    shell> mysqladmin -u root -p shutdown
    Enter password: (enter root password here)