MySQLパスワードハッシング仕組み

MySQLは暗号化ハッシング使用してユーザーパスワードを安全に保存します。パスワードをプレーンテキストで保存する代わりに、MySQLは一方向数学関数を使用してパスワードを固定長ハッシュ文字列に変換します。ユーザーがログインを試みると、MySQLは提供されたパスワードをハッシュ化し、保存されているハッシュと比較します。一致した場合、認証が成功します。このアプローチにより、誰かがデータベースにアクセスしたとしても、ユーザーパスワードを直接読み取ることができません。

最新のMySQL Native PasswordアルゴリズムはSHA-1ハッシング2回適用します:SHA1(SHA1(password))。このダブルハッシングにより、追加のセキュリティレイヤーが提供されます。結果の40文字の16進数文字列にアスタリスク(*)が接頭辞として付けられ、ハッシュ化されたパスワードであることを示し、*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19のような値が生成されます。

ツール説明

このMySQL Password Hash Generatorは、MySQLおよびMariaDBデータベースと互換性のある認証ハッシュを作成します。任意のパスワードを入力すると、CREATE USERまたはALTER USERなどのSQL文で直接使用できる対応するハッシュが即座に生成されます。このツールは、最新のMySQL Native Passwordフォーマット(MySQL 4.1以降)と、古いシステム向けのレガシーOld Passwordフォーマットの両方をサポートしています。

MySQL Native Password (4.1+):

  • 入力:mypassword
  • 出力:*FABE5482D5AADF36D028AC443D117BE1180B9725

Old Password (4.1以前):

  • 入力:mypassword
  • 出力:162eebfb6477e5d3

SQL使用方法:

-- ハッシュ化されたパスワードでユーザーを作成
CREATE USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

-- 既存ユーザーのパスワードを更新
ALTER USER 'username'@'localhost' IDENTIFIED BY PASSWORD '*FABE5482D5AADF36D028AC443D117BE1180B9725';

機能

  • MySQL Native Password:MySQL 4.1+およびMariaDB用のSHA1(SHA1(password))ハッシュを生成
  • レガシーOld Password:下位互換性のためにMySQL 4.1以前のハッシュフォーマットをサポート
  • リアルタイムハッシング:入力時にハッシュが即座に更新
  • パスワード表示切り替え:パスワード入力の表示/非表示を切り替えて簡単に入力
  • ワンクリックコピー:生成されたハッシュをクリップボードにすばやくコピー

ユースケース

  • デプロイメントスクリプトで事前ハッシュ化されたパスワードを使用してMySQLユーザーアカウントを作成
  • パスワードハッシュを保持しながらMySQL間でユーザーを移行
  • MySQL認証設定をテストおよび検証
  • MySQL互換アプリケーション用のパスワードハッシュを生成
  • 期待されるハッシュと実際のハッシュを比較して認証の問題をトラブルシューティング

サポートされているハッシュフォーマット

フォーマット アルゴリズム MySQLバージョン 出力例
MySQL Native Password SHA1(SHA1(password)) 4.1+ *2470C0C06DEE42FD...
Old Password カスタムハッシュ 4.1以前 6f8c114b58f2ce9e

セキュリティに関する考慮事項

MySQL Native Passwordハッシュは、すべての最新MySQLおよびMariaDBインストール向けの推奨フォーマットです。Old Passwordフォーマットは安全でないと見なされ、アップグレードできない古いシステムとの互換性のためにのみ使用する必要があります。MySQL 8.0は新しいデフォルトとしてcaching_sha2_passwordを導入しましたが、mysql_native_passwordは広くサポートされており、一般的に使用されています。