如何使用預先雜湊的密碼設定 MySQL 使用者的密碼?
我有一個 MySQL 5.1.73 資料庫伺服器。
根據 MySQL 文檔,在較新版本的 MySQL 中,使用預哈希密碼建立用戶,如下所示:
CREATE USER 'ans'@'localhost'
IDENTIFIED BY PASSWORD 'hash_string'
已棄用並將在未來的 MySQL 版本中刪除。
然而,我不知道什麼(如果有的話)是實現這一目標的新方法。
我們用皮匠設定我們的資料庫,我想用他們需要的帳戶以及他們將使用的密碼預先填充我的資料庫,而無需在我的腳本中使用明文密碼。我以為使用興奮劑就能達到目的:
update mysql.user
set password = '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB'
where user = 'ans';
但我的測試,這其實並沒有改變MySQL登入密碼。
mysql> create user 'ans'@'localhost' identified by 'foo';
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| ans | localhost | *F3A2A51A9B0F2BE2468926B4132313728C250DBF |
+------+-----------+-------------------------------------------+
mysql> update mysql.user set password = password('bar') where user = 'ans';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| ans | localhost | *E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB |
+------+-----------+-------------------------------------------+
mysql> quit
$ mysql -uans -pbar
ERROR 1045 (28000): Access denied for user 'ans'@'localhost' (using password: YES)
$ mysql -uans -pfoo
Welcome to the MySQL monitor. Commands end with ; or \g.
答案1
當你破解密碼時mysql.user
,你應該運行
mysql> FLUSH PRIVILEGES;
特權
從 mysql 資料庫中的授權表重新載入權限。
伺服器將由於 GRANT、CREATE USER、CREATE SERVER 和 INSTALL PLUGIN 語句而產生的資訊緩存在記憶體中。此記憶體不會被對應的 REVOKE、DROP USER、DROP SERVER 和 UNINSTALL PLUGIN 語句釋放,因此對於執行許多導致快取的語句實例的伺服器,記憶體使用量將會增加。可以使用 FLUSH PRIVILEGES 釋放該快取記憶體。
現在,您必須重新啟動 MySQL 才能使密碼生效。
答案2
現在有點舊了,但為了將來的參考,使用該SHOW CREATE USER 'ans'@'localhost'
命令您可以看到新語法的形式為:
CREATE USER 'ans'@'localhost' IDENTIFIED WITH 'mysql_native_password' AS '*E8D46CE25265E545D225A8A6F1BAF642FEBEE5CB' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE CURRENT DEFAULT