ユーザーを作成する(CREATE USER文)

MySQL では新しいユーザーを作成するときに CREATE USER 文を使用します。ここでは MySQL で新しいユーザーを作成する方法について解説します。

(Last modified: )

新しいユーザーを作成する

ユーザーを作成するには CREATE USER 文を使います。書式は次の通りです。

CREATE USER [IF NOT EXISTS]
    user [auth_option] [, user [auth_option]] ...
    DEFAULT ROLE role [, role ] ...
    [REQUIRE {NONE | tls_option [[AND] tls_option] ...}]
    [WITH resource_option [resource_option] ...]
    [password_option | lock_option] ...

auth_option: {
    IDENTIFIED BY 'auth_string'
  | IDENTIFIED WITH auth_plugin
  | IDENTIFIED WITH auth_plugin BY 'auth_string'
  | IDENTIFIED WITH auth_plugin AS 'hash_string'
}

tls_option: {
   SSL
 | X509
 | CIPHER 'cipher'
 | ISSUER 'issuer'
 | SUBJECT 'subject'
}

resource_option: {
    MAX_QUERIES_PER_HOUR count
  | MAX_UPDATES_PER_HOUR count
  | MAX_CONNECTIONS_PER_HOUR count
  | MAX_USER_CONNECTIONS count
}

password_option: {
    PASSWORD EXPIRE [DEFAULT | NEVER | INTERVAL N DAY]
  | PASSWORD HISTORY {DEFAULT | N}
  | PASSWORD REUSE INTERVAL {DEFAULT | N DAY}
  | PASSWORD REQUIRE CURRENT [DEFAULT | OPTIONAL]
}

lock_option: {
    ACCOUNT LOCK
  | ACCOUNT UNLOCK
}

オプションが色々とありますが、基本となる書式は次の通りです。

CREATE USER user
CREATE USER user IDENTIFIED BY 'auth_string'

1 つ目の構文の場合はユーザー名( user )を指定しパスワードはなしでユーザーを作成します。 2 つ目の構文の場合はユーザー名( user )とパスワード( 'auth_string' )を指定してユーザーを作成します。パスワードはシングルクォーテーション( ' )で囲って指定してください。

ユーザー名は次の書式で指定します。

'user_name'@'host_name'

ユーザーはユーザー名と接続を行うクライアントのホスト名の組み合わせで指定します。指定したホストから指定したユーザー名でログインした場合だけ接続を行えます。

ユーザー名とホスト名は特別な文字(例えば @ など)を含まない限りは引用符で囲う必要はありませんが、特別な文字を含む場合やホスト名にワイルドカードを使用する場合は逆引用符( ` ) 、シングルクォーテーション( ' )、またはダブルクォーテーション( " )で囲って指定して下さい。(引用符で囲む場合はユーザー名とホスト名は別々に囲って下さい)。

username@hlocalhost
`username`@`localhost`
'username'@'localhost'
"username"@"localhost"

ホスト名はホスト名の他に IP アドレスや localhost を指定することができます。

'username'@'host.example.com'
'username'@'192.168.128.1'
'username'@'localhost'

ホスト名にはワイルドカードである '_' と '%' が使用できます。'_'は任意の一文字を表し'%'は任意の長さの文字列に一致します。(ユーザー名ではワイルドカードを使用できません)。

例えば同じドメインに所属する任意のホストや同じCクラス( 192.168.128.0/24 )の全てのホストから接続できるユーザーを作成するには次のように記述します。

'username'@'%.example.com'
'username'@'192.168.128.%'

またホスト名を省略した場合はワイルドカードの '%' が指定されたものとして扱われます。(すべてのホストから接続可能となります)。

'username'@'%'

では実際にユーザーを作成してみます。

create user 'kuma'@'localhost' identified by 'bear';
create user 'kirin'@'%.example.com' identified by 'giraffe';
create user 'kaba' identified by 'hippos';
create user neko@192.168.10.10 identified by 'cat';
create user inu@192.168.10.9 identified by 'dog';

新しいユーザーを作成する(1)

5つのユーザーを作成しました。

※ 認証プラグインを指定してユーザーを作成するには「認証プラグインを指定してユーザーを作成する」を参照されてください。

新しいユーザーを使ってMySQLに接続する

今までは root ユーザーを使って MySQL コマンドラインツールを起動して MySQL に接続していました。今度は先ほど作成したユーザーで MySQL へ接続してみます。最初に localhost の環境からユーザー 'kuma'@'localhost' を使って接続してみます。コマンドプロンプトから次のように実行してください。

mysql -u kuma -h localhost -p

※ localhost の場合は省略可能なので mysql -u kuma -p でも構いません。

新しいユーザーを使ってMySQLに接続する(2)

パスワードの入力待ちとなりますのでユーザーのパスワードを入力してください。

新しいユーザーを使ってMySQLに接続する(3)

正しく入力できれば MySQL コマンドラインツールが起動し MySQL への接続が完了します。今回使用した kuma@localhost は localhost からの接続を許可していたので問題なく接続することができました。

新しいユーザーを使ってMySQLに接続する(4)

ではいったん MySQL コマンドラインツールを閉じてもらい、今度は 192.168.10.9 の環境からユーザー neko@192.168.10.10 で接続してみます。コマンドプロンプトから次のように実行してください。

mysql -u neko -h 192.168.10.10 -p

最初にホスト名のところにクライアントの実際の IP アドレスとは異なる IP アドレスを指定して接続を試みます。すると Can't connect to MySQL server on 'ホスト名' というエラーが表示されて接続することができませんでした。

新しいユーザーを使ってMySQLに接続する(5)

ユーザー名とホスト名は正しいのですが、このユーザーは 192.168.10.10 のホストからしか接続が許可されていないためです。

今度はコマンドプロンプトから次のように実行してください。

mysql -u inu -h 192.168.10.9 -p

新しいユーザーを使ってMySQLに接続する(4)

このユーザーは 192.168.10.9 のホストから接続が許可されており、現在接続を試みているホストが 192.168.10.9 と一致してるので接続を行うことができました。

-- --

CREATE USER 文を使って新しくユーザーを作成する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。