「MySQLのパスワード」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == MySQL のユーザアカウントは、 mysql データベースの user テーブルに格納されてい...」)
 
 
(同じ利用者による、間の1版が非表示)
行1: 行1:
<!--
+
[[MySQL]]のDBアカウントの[[パスワード]]は、[[暗号化]]されてDBに保存されます。5.7.4からパスワードの有効期限が導入されました。
vim: filetype=mediawiki
+
-->
+
  
 
__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 のパスワード変更 ==
 +
<syntaxhighlight lang="mysql">
 +
mysql> UPDATE user SET Password=PASSWORD('mynewpassword')
 +
    ->            WHERE User='root';
 +
mysql> FLUSH PRIVILEGES;
 +
</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(デフォルト)
グローバル有効期限ポリシーを適用します。

関連項目