使初始MySQL賬戶安全,為匿名賬戶指定密碼或刪掉匿名賬戶 要想為匿名賬戶指定密碼,可以使用 SET PASSWORD 或 UPDATE。 在兩種情況中,一定要使用 PASSWORD() 函數為密碼加密。 在 Windows 中使用 PASSWORD 的方法:
shell> mysql -u root mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
在 Unix 中使用 PASSWORD 的方法:
shell> mysql -u root mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
用服務器主機名替換第二個 SET PASSWORD 語句中的 host_name。 這是指定的 use r表中的 root non-localhost 記錄的 Host 列名。 如果你不知道是哪個主機名,在 SET PASSWORD 之前執行下面的語句:
mysql> SELECT Host, User FROM mysql.user;
查找在 User 列有 root 和在 Host 列沒有 localhost 的記錄。 然後在第二個 SET PASSWORD 語句中使用該 Host 值。 為匿名賬戶指定密碼的另一種方法是使用 UPDATE 直接修改用戶表。 用 root 連接服務器,運行 UPDATE 語句為相應 user 表記錄的 Password 列指定一個值。 在 Windows 和 Unix 中的過程是相同的。下面的 UPDATE 語句同時為兩個匿名賬戶指定密碼:
shell> mysql -u root mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE User = ''; mysql> FLUSH PRIVILEGES;
在 user 表中直接使用 UPDATE 更新密碼後,必須讓服務器用 FLUSH PRIVILEGES 重新讀授權表。 否則,重新啟動服務器前,不會使用更改。 如果你寧願刪除匿名賬戶,操作方法是:
shell> mysql -u root mysql> DELETE FROM mysql.user WHERE User = ''; mysql> FLUSH PRIVILEGES;
可以在 Windows 和 Unix 中使用 DELETE 語句。 在 Windows 中,如果你只想刪掉具有與 root 相同權限的匿名賬戶,方法為:
shell> mysql -u root mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User=''; mysql> FLUSH PRIVILEGES;
該賬戶允許匿名訪問,但是擁有全部的權限,因此刪掉它可以提高安全。