「MySQLのパスワード」の版間の差分
細 |
|||
行1: | 行1: | ||
− | + | [[MySQL]]のDBアカウントの[[パスワード]]は、[[暗号化]]されてDBに保存されます。5.7.4からパスワードの有効期限が導入されました。 | |
− | + | ||
− | + | ||
__TOC__ | __TOC__ | ||
== 概要 == | == 概要 == | ||
− | |||
[[MySQL]] のユーザアカウントは、 mysql データベースの user テーブルに格納されています。 | [[MySQL]] のユーザアカウントは、 mysql データベースの user テーブルに格納されています。 | ||
user テーブルの Password カラムには、[[平文]]テキストではなく、[[パスワード]]の[[ハッシュ値]]が入ります。 | user テーブルの Password カラムには、[[平文]]テキストではなく、[[パスワード]]の[[ハッシュ値]]が入ります。 | ||
行28: | 行25: | ||
| 先頭が * はじまる | | 先頭が * はじまる | ||
| 先頭が * ではない | | 先頭が * ではない | ||
− | |||
− | |||
− | |||
|} | |} | ||
− | |||
== 4.1 より前のパスワード関数 == | == 4.1 より前のパスワード関数 == | ||
− | |||
[[MySQL]] 4.1 から 4.1 より前のパスワードハッシュを求めるには、 OLD_PASSWORD() 関数を利用します。 | [[MySQL]] 4.1 から 4.1 より前のパスワードハッシュを求めるには、 OLD_PASSWORD() 関数を利用します。 | ||
− | |||
== 使い方 == | == 使い方 == | ||
− | |||
<syntaxhighlight lang="mysql"> | <syntaxhighlight lang="mysql"> | ||
mysql> SELECT PASSWORD('test'); | mysql> SELECT PASSWORD('test'); | ||
行57: | 行47: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== 古いパスワードを使うオプション == | == 古いパスワードを使うオプション == | ||
− | |||
my.cnf に old-passowrds と書きます。 | my.cnf に old-passowrds と書きます。 | ||
行72: | 行60: | ||
1 row in set (0.01 sec) | 1 row in set (0.01 sec) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
== MySQL のパスワード変更 == | == MySQL のパスワード変更 == | ||
− | |||
<syntaxhighlight lang="mysql"> | <syntaxhighlight lang="mysql"> | ||
mysql> UPDATE user SET Password=PASSWORD('mynewpassword') | mysql> UPDATE user SET Password=PASSWORD('mynewpassword') | ||
行80: | 行66: | ||
mysql> FLUSH PRIVILEGES; | mysql> FLUSH PRIVILEGES; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | == パスワードの有効期限 == | ||
+ | MySQL 5.7.4では、「パスワードの有効期限」がサポートされました。 | ||
− | + | システム変数 '''default_password_lifetime''' は、グローバルパスワード有効期限ポリシーを定義します。0より大きい値は、[[パスワード]]が N 日のライフタイムを持つことを意味します。値が 0 の場合、自動的なパスワードの有効期限は無効になります。デフォルトでは、 '''360''' です。パスワードは、1年毎に変更されるべきです。 | |
+ | mysql.user テーブルは、個々のアカウントのために、有効期限ポリシーの情報を保存する新しいカラムを追加しました。 | ||
+ | |||
+ | password_last_changed は、最後に[[パスワード]]が変更されたときを示します。サーバは、クライアントが接続してきたときに、このカラムを使用します。 | ||
+ | |||
+ | password_lifetime は、アカウントのパスワードライフタイムを示します。 | ||
+ | ;1以上: パスワードが N 日のライフタイムを持つことを意味します | ||
+ | ;0: 自動的なパスワード有効期限は無効です。 | ||
+ | ;NULL(デフォルト): グローバル有効期限ポリシーを適用します。 | ||
+ | == 関連項目 == | ||
* [[MySQL]] | * [[MySQL]] | ||
* [[mysqlfast]] | * [[mysqlfast]] | ||
+ | * [[パスワード]] | ||
+ | <!-- | ||
+ | vim: filetype=mediawiki | ||
+ | --> |
2015年6月10日 (水) 00:26時点における最新版
MySQLのDBアカウントのパスワードは、暗号化されてDBに保存されます。5.7.4からパスワードの有効期限が導入されました。
概要
MySQL のユーザアカウントは、 mysql データベースの user テーブルに格納されています。 user テーブルの Password カラムには、平文テキストではなく、パスワードのハッシュ値が入ります。
ハッシュ値の計算は、MySQLの PASSWORD() 関数で行われます。 PASSWORD()は、同じ値に対して、常に同じハッシュ値を出力します。
MySQL の 4.1 でパスワードハッシュメカニズムが変更されました。
4.1から | 4.1より前 | |
---|---|---|
パスワード長さ | 41 | 16 |
特徴 | 先頭が * はじまる | 先頭が * ではない |
4.1 より前のパスワード関数
MySQL 4.1 から 4.1 より前のパスワードハッシュを求めるには、 OLD_PASSWORD() 関数を利用します。
使い方
mysql> SELECT PASSWORD('test'); +-------------------------------------------+ | PASSWORD('test') | +-------------------------------------------+ | *94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT OLD_PASSWORD('test'); +----------------------+ | OLD_PASSWORD('test') | +----------------------+ | 378b243e220ca493 | +----------------------+ 1 row in set (0.00 sec)
古いパスワードを使うオプション
my.cnf に old-passowrds と書きます。
確認方法は、 @@old_passwords を select します。
mysql> SELECT @@old_passwords; +-----------------+ | @@old_passwords | +-----------------+ | 0 | +-----------------+ 1 row in set (0.01 sec)
MySQL のパスワード変更
mysql> UPDATE user SET Password=PASSWORD('mynewpassword') -> WHERE User='root'; mysql> FLUSH PRIVILEGES;
パスワードの有効期限
MySQL 5.7.4では、「パスワードの有効期限」がサポートされました。
システム変数 default_password_lifetime は、グローバルパスワード有効期限ポリシーを定義します。0より大きい値は、パスワードが N 日のライフタイムを持つことを意味します。値が 0 の場合、自動的なパスワードの有効期限は無効になります。デフォルトでは、 360 です。パスワードは、1年毎に変更されるべきです。
mysql.user テーブルは、個々のアカウントのために、有効期限ポリシーの情報を保存する新しいカラムを追加しました。
password_last_changed は、最後にパスワードが変更されたときを示します。サーバは、クライアントが接続してきたときに、このカラムを使用します。
password_lifetime は、アカウントのパスワードライフタイムを示します。
- 1以上
- パスワードが N 日のライフタイムを持つことを意味します
- 0
- 自動的なパスワード有効期限は無効です。
- NULL(デフォルト)
- グローバル有効期限ポリシーを適用します。