事前にハッシュされたパスワードを使用して 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