文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


B.3.3.2 如何重設 Root 密碼

如果您從未為 MySQL 指派 root 密碼,則伺服器根本不需要密碼即可使用 root 連線。但是,這是不安全的。如需有關指派密碼的指示,請參閱第 2.9.4 節,「保護初始 MySQL 帳戶」

如果您知道 root 密碼並想變更它,請參閱第 15.7.1.1 節,「ALTER USER 陳述式」第 15.7.1.10 節,「SET PASSWORD 陳述式」

如果您先前指派了 root 密碼但忘記了,您可以指派一個新的密碼。以下章節提供 Windows 和 Unix 及類 Unix 系統的指示,以及適用於任何系統的通用指示。

B.3.3.2.1 重設 Root 密碼:Windows 系統

在 Windows 上,使用下列程序來重設 MySQL 'root'@'localhost' 帳戶的密碼。若要變更具有不同主機名稱部分的 root 帳戶的密碼,請修改指示以使用該主機名稱。

  1. 以管理員身分登入您的系統。

  2. 如果 MySQL 伺服器正在執行,請停止它。對於作為 Windows 服務執行的伺服器,請前往服務管理員:從開始功能表,選取控制台,然後選取系統管理工具,然後選取服務。在清單中找到 MySQL 服務並停止它。

    如果您的伺服器不是作為服務執行,您可能需要使用工作管理員來強制停止它。

  3. 建立一個文字檔案,其中包含單一行的密碼指派陳述式。將密碼替換為您想要使用的密碼。

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
  4. 儲存該檔案。此範例假設您將檔案命名為 C:\mysql-init.txt

  5. 開啟主控台視窗以進入命令提示字元:從開始功能表,選取執行,然後輸入 cmd 作為要執行的命令。

  6. 啟動 MySQL 伺服器,並將 init_file 系統變數設定為命名檔案(請注意選項值中的反斜線會加倍)

    C:\> cd "C:\Program Files\MySQL\MySQL Server 9.0\bin"
    C:\> mysqld --init-file=C:\\mysql-init.txt

    如果您將 MySQL 安裝到不同的位置,請相應地調整 cd 命令。

    伺服器會在啟動時執行 init_file 系統變數命名的檔案內容,從而變更 'root'@'localhost' 帳戶密碼。

    若要讓伺服器輸出顯示在主控台視窗中,而不是在記錄檔中,請將 --console 選項新增至 mysqld 命令。

    如果您使用 MySQL 安裝精靈安裝 MySQL,則可能需要指定 --defaults-file 選項。例如

    C:\> mysqld
             --defaults-file="C:\\ProgramData\\MySQL\\MySQL Server 9.0\\my.ini"
             --init-file=C:\\mysql-init.txt

    可以使用服務管理員找到適當的 --defaults-file 設定:從開始功能表,選取控制台,然後選取系統管理工具,然後選取服務。在清單中找到 MySQL 服務,按一下滑鼠右鍵,然後選擇 內容 選項。可執行檔路徑欄位包含 --defaults-file 設定。

  7. 伺服器成功啟動後,刪除 C:\mysql-init.txt

您現在應該能夠使用新密碼以 root 身分連線到 MySQL 伺服器。停止 MySQL 伺服器並正常重新啟動它。如果您將伺服器作為服務執行,請從 Windows 服務視窗啟動它。如果您手動啟動伺服器,請使用您通常使用的任何命令。

B.3.3.2.2 重設 Root 密碼:Unix 和類 Unix 系統

在 Unix 上,使用下列程序來重設 MySQL 'root'@'localhost' 帳戶的密碼。若要變更具有不同主機名稱部分的 root 帳戶的密碼,請修改指示以使用該主機名稱。

這些指示假設您從您通常用來執行 MySQL 伺服器的 Unix 登入帳戶啟動它。例如,如果您使用 mysql 登入帳戶執行伺服器,則應該先以 mysql 身分登入,然後再使用這些指示。或者,您可以以 root 身分登入,但在這種情況下,您必須使用 --user=mysql 選項啟動 mysqld。如果您在不使用 --user=mysql 的情況下以 root 身分啟動伺服器,伺服器可能會在資料目錄中建立 root 擁有的檔案,例如記錄檔,而這些檔案可能會導致未來伺服器啟動時出現與權限相關的問題。如果發生這種情況,您必須將檔案的所有權變更為 mysql 或將它們移除。

  1. 以 MySQL 伺服器執行的 Unix 使用者身分登入您的系統(例如,mysql)。

  2. 如果 MySQL 伺服器正在執行,請停止它。找到包含伺服器程序 ID 的 .pid 檔案。此檔案的確切位置和名稱取決於您的發行版本、主機名稱和組態。常見的位置為 /var/lib/mysql//var/run/mysqld//usr/local/mysql/data/。一般而言,檔案名稱的副檔名為 .pid,並以 mysqld 或您系統的主機名稱開頭。

    藉由將正常的 kill(而不是 kill -9)傳送至 mysqld 程序來停止 MySQL 伺服器。在以下命令中使用 .pid 檔案的實際路徑名稱

    $> kill `cat /mysql-data-directory/host_name.pid`

    將反引號(而非前引號)與 cat 命令搭配使用。這些會導致 cat 的輸出被代入 kill 命令中。

  3. 建立一個文字檔案,其中包含單一行的密碼指派陳述式。將密碼替換為您想要使用的密碼。

    ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
  4. 儲存檔案。此範例假設您將檔案命名為 /home/me/mysql-init。此檔案包含密碼,因此請勿將其儲存在其他使用者可讀取的位置。如果您不是以 mysql (伺服器執行的使用者) 身分登入,請確保該檔案具有允許 mysql 讀取的權限。

  5. 使用 init_file 系統變數設定檔名來啟動 MySQL 伺服器

    $> mysqld --init-file=/home/me/mysql-init &

    伺服器會在啟動時執行 init_file 系統變數命名的檔案內容,從而變更 'root'@'localhost' 帳戶密碼。

    根據您通常啟動伺服器的方式,可能還需要其他選項。例如,在 init_file 參數之前可能需要 --defaults-file

  6. 伺服器成功啟動後,請刪除 /home/me/mysql-init

您現在應該能夠使用新密碼以 root 身分連線至 MySQL 伺服器。停止伺服器並正常重新啟動。

B.3.3.2.3 重設 Root 密碼:通用說明

前面的章節提供了專門針對 Windows 和 Unix 以及類 Unix 系統的密碼重設說明。或者,在任何平台上,您可以使用 mysql 客戶端重設密碼(但這種方法安全性較低)

  1. 如有必要,請停止 MySQL 伺服器,然後使用 --skip-grant-tables 選項重新啟動。這會允許任何人在沒有密碼且具有所有權限的情況下連線,並停用帳戶管理語句,例如 ALTER USERSET PASSWORD。由於這是不安全的,如果伺服器使用 --skip-grant-tables 選項啟動,它也會通過啟用 skip_networking 來停用遠端連線。在 Windows 平台上,這表示您還必須啟用 shared_memorynamed_pipe;否則伺服器無法啟動。

  2. 使用 mysql 客戶端連線至 MySQL 伺服器;因為伺服器是使用 --skip-grant-tables 啟動的,所以不需要密碼

    $> mysql
  3. mysql 客戶端中,告知伺服器重新載入授權表,以便帳戶管理語句可以運作

    mysql> FLUSH PRIVILEGES;

    然後變更 'root'@'localhost' 帳戶密碼。將密碼替換為您要使用的密碼。若要變更具有不同主機名稱部分的 root 帳戶的密碼,請修改指示以使用該主機名稱。

    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

您現在應該能夠使用新密碼以 root 身分連線至 MySQL 伺服器。停止伺服器並正常重新啟動(不使用 --skip-grant-tables 選項,也不啟用 skip_networking 系統變數)。