web-dev-qa-db-ja.com

'password'を指定したuser @ HostがMySQL 8.0以降に存在するかどうかを確認するにはどうすればよいですか?

アプリケーションの健全性チェックスクリプトを記述します。テストの1つは、MySQLに「パスワード」のあるuser @ Hostが存在することを確認することです。単純なネイティブハッシュパスワードを使用しています。 MySQL5.7にはPASSWORD()関数があり、これを使用して_mysql.user_をクエリし、ユーザーが存在し、パスワードが一致することを確認できます。 MySQL8.0以降でこれを達成する方法はありますか? MySQL 5.7のPASSWORD()のドキュメントページには代替手段がなく、関数はMySQL 8.0で削除されています。

ユーザーをもう一度追加することもできますが、スクリプトではユーザーが見つからないというイベントを認識し、予期される資格情報で登録する必要があると思います。

必ずしもパスワードハッシュを生成する必要はないことに注意してください。指定したユーザー/パスワードが存在することを確認したいだけです。これは自動化する必要があるため、「ser/password from Host machine」でログインを試行するなどのソリューションは、私がホストマシン

1
matt

実際、MySQL(実際にはOracle)が言及していない代替案があります。

  • Apr 22, 2015に戻って、投稿した パスワード機能のアルゴリズム
  • Mysql_native_passwordプラグインを使用してユーザーを作成した場合、MySQL 8.0は引き続きPASSWORD関数の出力をauthentication_string列に格納します。

これがアルゴリズムです

SET @plaintextpassword = 'whatever password you want';
SELECT CONCAT('*',UPPER(SHA1(UNHEX(SHA1(@plaintextpassword)))));

クレジットを与える

私は最初、PalominoDBという会社のブログからこれを学びました。彼らは彼らの名前をクロウタドリに変えた。ピティアンはクロウタドリを購入した。 Pythianは現在、このアルゴリズムをブログの投稿として持っています: MySQLのハッシュアルゴリズムPASSWORD()

2
RolandoMySQLDBA