Yakstは、海外の役立つブログ記事などを人力で翻訳して公開するプロジェクトです。
9年以上前投稿 修正あり

MySQL 5.7におけるCREATE USERコマンドの改善(MySQL Server Blogより)

MySQL 5.6までユーザーを作成する時にいくつかの制約があり実現可能でも複雑であったりするものがいくつかあった。MySQL 5.7ではCREATE USERコマンドが改良され、パスワードと認証プラグインの同時設定、ユーザーの無効化、個別のパスワード期限切れポリシ設定、SSL必須化、リソース制限が簡易にできるようになった。

原文
Building a Better CREATE USER Command | MySQL Server Blog (English)
翻訳依頼者
B5aa4f809000b9147289650532e83932
翻訳者
B5aa4f809000b9147289650532e83932 taka-h
原著者への翻訳報告
未報告


免責事項

この記事はTodd Farmer氏によるMySQL Server Blogの投稿(2015/6/24)をユーザが翻訳したものであり、Oracle公式の文書ではありません。


MySQL 5.7より前は、CREATE USERコマンドにはたくさんの制約があった。

  • 認証プラグインとパスワードの両方を設定する方法がない
  • ユーザーを無効化する方法がない
  • ユーザーに対するリソース制限を行う方法がない
  • デフォルト以外のパスワード期限切れポリシを設定する方法がない
  • SSL/x509を必須とする方法がない

これらの全ては他の方法で実現することができたが、通常GRANTコマンドなどの他の構文を使う必要があった。 MySQL 5.7.6からは、これらは新しくかつ改良されたCREATE USERコマンドで実現できる。

パスワードと認証プラグイン

セキュリティーの観点から、最も私にとって重要なのは、ユーザーアカウントをデフォルト以外の認証プラグイン(例えばsha256_papssword)を利用し、かつ空でないパスワードを持つユーザーを作成できることだ。

mysql> CREATE USER new@localhost
-> IDENTIFIED WITH sha256_password
-> BY 'pwd';
Query OK, 0 rows affected (0.00 sec)

パスワードは後続する構文で指定可能だが、ユーザーに最初の段階でパスワードがないアカウントを作ることを強いるのは確実にセキュリティー上のバッドプラクティスである。

ユーザーの無効化

これまでにエンドユーザーからは直接アクセスできないアカウントのユースケースについて述べてきた。 このユースケースをサポートする為に、MySQL 5.6でmysql_no_login認証プラグインも実装した。 今や、はるかに良い方法がある - ただ単純にアカウントをロック状態にすればよい。

mysql> CREATE USER d@localhost ACCOUNT LOCK;
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
D:\mysql-5.7.7-rc-winx64>bin\mysql -ud -P3309
ERROR 3118 (HY000): Access denied for user 'd'@'localhost'. Account is locked.

その他の新たなアカウントのオプション

もう1つの便利な機能追加は、新しいアカウントを標準以外のパスワード期限切れポリシで作成することができるものである。

mysql> CREATE USER p@localhost
-> IDENTIFIED BY 'pwd'
-> PASSWORD EXPIRE INTERVAL 1 DAY;
Query OK, 0 rows affected (0.00 sec)

同じように、SSLを必須とした新規アカウントを作成するのに、もはや複数のクエリを発行する必要がなくなった。

mysql> CREATE USER s@localhost
-> REQUIRE SSL;
Query OK, 0 rows affected (0.00 sec)

また、新規ユーザーに対するリソース制限についても同様に指定できる。

myql> CREATE USER r@localhost
-> WITH MAX_QUERIES_PER_HOUR 5;
Query OK, 0 rows affected (0.00 sec)

これは 大いに ユーザーアカウント作成の操作やスクリプトを簡易化するだろう。 これらの切望していた改良を我々に提供してくれたSatish氏とこれに関わった他の全てのメンバに大いに感謝! 新しい構文について何か疑問点があれば、ここにコメントして欲しい。 関連するバグを見つけたら、またここのコメントで我々に知らせ、バグ表をオープンしていただきたい。 あるいはサポートご契約のお客様である場合は、サポートチケットをオープンし、知らせて欲しい。

今のところは以上である。MySQLを使ってくれてありがとう

次の記事
SQLにおけるIPアドレスの比較
前の記事
PostgreSQL 9.5でリリースされるUPSERT以外の注目機能

Feed small 記事フィード

新着記事Twitterアカウント