ユーザーの作成
MySQLコマンドラインツールなどを利用してMySQLサーバに接続し、様々な操作を行うにはユーザーアカウントが必要です。MySQLをインストールした直後には「root」ユーザーしか作成されていません。ここでは新しいユーザーを作成する方法を確認します。
ユーザーを作成するにはCREATE USER文を使います。基本書式は次の通りです。
CREATE USER user; CREATE USER user IDENTIFIED BY [PASSWORD] 'password';
1つ目の構文は指定したユーザーをパスワード無しで作成します。パスワードは後からでも設定できますが、パスワード無しのアカウントはセキュリティ的に問題がありますので2つ目の構文を使ってユーザーの作成時にパスワードを設定するようにして下さい。
2つ目の構文は指定したユーザーを作成しパスワードを設定します。ユーザーの指定方法は後で説明します。パスワードは文字列なのでシングルクオーテーションで囲って指定します。
複数のユーザーをまとめて追加する場合は、次の書式を使用して下さい。
CREATE USER user1 IDENTIFIED BY [PASSWORD] 'password1', user2 IDENTIFIED BY [PASSWORD] 'password2', user3 IDENTIFIED BY [PASSWORD] 'password3', ...;
ユーザーの書式
ユーザーは次の書式で指定します。
user_name@host_name
ユーザーはユーザー名とMySQLへ接続するホスト名の組み合わせで指定します。登録されたユーザー名を持つユーザーが存在しても、そのユーザー名で接続できるのは同時に登録されているホストからしか行えません。また同じユーザー名であっても使用しているホスト毎に異なる権限を設定することもできます。
ユーザー名とホスト名は特別な文字(例えば@など)を含まない限りは引用符で囲う必要はありませんが、特別な文字を含む場合やホスト名にワイルドカードを使用する場合はシングルクオーテーションで囲って指定して下さい。(引用符で囲む場合はユーザー名とホスト名は別々に囲って下さい)。
'user_name'@'host_name'
ホスト名はホスト名の他にIPアドレスやlocalhostを指定することができます。
'username'@'host.example.com' 'username'@'192.168.128.1' 'username'@'localhost'
では実際にユーザーを作成してみます。
mysql> create user -> 'kuma'@'localhost' identified by 'bear', -> 'saru'@'192.168.128.1' identified by 'monkey', -> 'shika'@'host.example.com' identified by 'deer';
3つのユーザーを作成しました。
それではユーザーの一覧を取得してみます。ユーザーの情報は「mysql」データベースの中の「user」テーブルに格納されています。このテーブルにはユーザー毎に1つのデータが作成されており、ユーザー名やホスト名だけではなくパスワードや権限などの情報が格納されています。
今回は「User」カラムと「ホスト」カラムの値を取得します。
mysql> select User,Host from mysql.user;
もともと存在していた「root」ユーザーに加えて追加した3つのユーザーが存在していることが確認できます。
ホスト名のワイルドカード指定
ホスト名にはワイルドカードである'_'と'%'が使用できます。'_'は任意の一文字を表し'%'は任意の長さの文字列に一致します。
例えば同じドメインに所属する任意のホストからアクセス可能なユーザーの指定は次のように記述できます。
'username'@'%.example.com'
同じCクラス(192.168.128.0/24)の全てのホストにからアクセス可能なユーザーの指定は次のように記述できます。
'username'@'192.168.128.%'
またホスト名を省略した場合は次のように記述したものとして扱われます。
'username'@'%'
では実際にユーザーを作成してみます。
mysql> create user -> 'tora'@'192.168.128.20_' identified by 'tiger', -> 'kirin'@'%.example.com' identified by 'giraffe', -> 'kaba' identified by 'hippos';
改めてユーザー情報を取得してみます。
mysql> select User,Host from mysql.user;
ワイルドカードはそのまま格納され、ホスト名を省略した場合は'ユーザー名@%'の形式で格納されていることが確認できます。
作成したユーザーでMySQLサーバへ接続
それではMySQLコマンドラインツールを使い、新しく作成したユーザーでMySQLサーバへ接続してみます。
ローカルホストからアクセスが許可されている「kuma」ユーザーを使って接続します。
問題なく接続できました。
では今度はホスト「192.168.128.1」からアクセスが許可されている「saru」ユーザーを使って接続してみます。
ローカルホストから接続しようとしましたのでユーザーは「'saru'@'localhost'」と認識されます。ユーザーとして追加されているのは「'saru'@'192.168.128.1'」ですのでアクセスが拒否されました。
( Written by Tatsuo Ikura )