如何復位根用戶密碼


若是你從未爲MySQL設置根用戶密碼,服務器在以根用戶身份進行鏈接時不須要密碼。可是,建議你爲每一個帳戶設置密碼。請參見5.6.1節,「通用安全指南」html

若是你之前設置了根用戶密碼,但卻忘記了該密碼,可設置新的密碼。下述步驟是針對Windows平臺的。在本節後面的內容中,介紹了針對Unix平臺的步驟。mysql

Windows平臺下,該步驟是:sql

以系統管理員身份登陸到系統。shell

若是MySQL服務器正在運行,中止它。對於做爲Windows服務運行的服務器,進入服務管理器:安全

開始菜單->控制面板->管理工具->服務

而後在列表中找出MySQL服務器,並中止它。服務器

若是服務器不是做爲服務而運行的,可能須要使用任務管理器來強制中止它。ide

建立1個文本文件,並將下述命令置於單一行中:工具

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

用任意名稱保存該文件。在本例中,該文件爲C:\mysql-init.txtui

打開控制檯窗口,進入DOS命令提示:spa

開始菜單->運行-> cmd

假定你已將MySQL安裝到C:\mysql。若是你將MySQL安裝到了另外一位置,請對下述命令進行相應的調整。

DOS命令提示符下,執行命令:

C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt

在服務器啓動時,執行由「--init-file」選項命名的文件的內容,更改根用戶密碼。當服務器成功啓動後,應刪除C:\mysql-init.txt

若是你使用MySQL安裝嚮導安裝了MySQL,或許須要指定「--defaults-file」選項:

C:\> C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld-nt.exe
         --defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini"
         --init-file=C:\mysql-init.txt

使用服務管理器,可找到恰當的「--defaults-file」設置:

開始菜單->控制面板->管理工具->服務

在列表中找出MySQL服務,右擊,並選擇「屬性」選項。在可執行字段的Path(路徑)中包含「--defaults-file」設置。

中止MySQL服務器,而後在正常模式下重啓它。若是以服務方式運行服務器,應從Windows服務窗口啓動它。若是以手動方式啓動了服務器,可以像正常情形下同樣使用命令。

應能使用新密碼進行鏈接。

Unix環境下,重置根用戶密碼的步驟以下:

Unix根用戶身份、或以運行mysqld服務器的相同身份登陸到系統。

找到包含服務器進程ID.pid文件。該文件的準確位置和名稱取決於你的分發版、主機名和配置。常見位置是/var/lib/mysql//var/run/mysqld//usr/local/mysql/data/通常狀況下,文件名的擴展名爲.pid,並以mysqld或系統的主機名開始。

在下述命令中使用.pid文件的路徑名,向mysqld進程發出正常的kill(而不是kill -9),可中止MySQL服務器:

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

注意,cat命令使用符號「`」而不是「’」:這會使cat的輸出代入到kill命令中。

建立文本文件,並將下述命令放在文件內的1行上:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword');

用任意名稱保存文件。對於本例,文件爲~/mysql-init

用特殊的「--init-file=~/mysql-init」選項重啓MySQL服務器:

shell> mysqld_safe --init-file=~/mysql-init &

文件init-file的內容在服務器啓動時執行,更改根用戶密碼。服務器成功啓動後,應刪除~/mysql-init

應能使用新密碼進行鏈接。

做爲可選方式,在任何平臺上,可以使用mysql客戶端設置新密碼(但該方法不夠安全):

中止mysqld,並用「--skip-grant-tables --user=root」選項重啓它Windows用戶可省略--user=root部分)。

使用下述命令鏈接到mysqld服務器:

shell> mysql -u root

mysql客戶端發出下述語句:

mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd')
    ->                   WHERE User='root';
mysql> FLUSH PRIVILEGES;

用打算使用的實際根用戶密碼替換「newpwd」。

應能使用新密碼進行鏈接。

相關文章
相關標籤/搜索