題 在mysql中將密碼設置為預先散列值


如何使用預先哈希的密碼設置mysql用戶的密碼?

=====

我有一個mysql數據庫版本5.1.73。

根據mysql文檔,在較新版本的mysql中,使用預先設置的密碼創建用戶

CREATE USER 'ans'@'localhost'
    IDENTIFIED BY PASSWORD 'hash_string'

已棄用,將在未來的MySQL版本中刪除。

但是,我無法弄清楚實現這一目標的新方法(如果有的話)。

我們使用cobbler來設置我們的數據庫,我想用他們需要的帳戶預先填充我的數據庫,以及他們將使用的密碼,而不需要在我的腳本中使用明文密碼。我原以為

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.

3
2018-04-15 16:06


起源




答案:


當你破解密碼時 mysql.user,你應該跑

mysql> FLUSH PRIVILEGES;

根據 關於FLUSH的MySQL文檔

特權

從mysql數據庫中的授權表重新加載特權。

由於GRANT,CREATE,服務器將信息緩存在內存中   USER,CREATE SERVER和INSTALL PLUGIN語句。這個記憶不是   由相應的REVOKE,DROP USER,DROP SERVER和   UNINSTALL PLUGIN語句,因此對於執行許多的服務器   導致緩存的語句的實例,會有一個   增加內存使用量。可以使用FLUSH釋放此緩存的內存   特權。

現在,您必須重新啟動MySQL才能使密碼生效。


0
2018-04-22 03:49