在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”。
應能使用新密碼進行連接。