データベース応用コース4/9
新しいユーザを作ってみよう
このシナリオではユーザの作成方法と管理方法について学んでいきます。
ユーザ管理のための前提知識
ユーザとはMySQLにおいてデータベースを操作するためのアカウントのことを指します。
ユーザは複数作成することができ、それぞれに権限を割り振ることができます。
権限とは誰が何に対して何が出来て何が出来ないのかを設定するためのものです。
例えば企業内において、役職によってデータベースでできることを変更するとしましょう。
- 技術責任者(cto):全てのデータベースを操作することができる。
- 開発者(dev):アプリケーション用のデータベースを操作することができる。
- バイト(ptj):アプリケーション用のデータベース内にある顧客の情報以外を操作することができる。
上のようなケースの場合、役職ごとにユーザを作成し、それぞれに権限を与えると良いでしょう。
ユーザを作成して権限を設定する際の手順は以下の通りです。
- ユーザを作成するSQL文を実行する。
- ユーザの権限を設定するSQL文を実行する。
- 設定を反映させるSQL文を実行する。
新規ユーザの作成
まずはユーザを作成してみましょう。
ユーザを作成するにはCREATE USER
文を使います。
CREATE USER 'ユーザの名前'@'ホスト名' IDENTIFIED BY '設定したいパスワード';
- ユーザの名前:MySQLに接続するユーザの名前を指定する。
- ホスト名:MySQLに接続するユーザがどこから接続するのかを指定する。(%はワイルドカード)
- 例:localhost, 192.168.1.%, %
- 設定したいパスワード:MySQLに接続する際に使用するパスワードを指定する。
例えば開発者用のユーザを作成するには、以下のようにSQL文を入力します。
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'devdev_pass';
上記SQL文によって、devという名前のユーザが作成されます。
その際、ホスト名はlocalhostとなり、パスワードはdevdev_passとなります。
それでは、ユーザが作成されたかどうか確認してみましょう。
ユーザの一覧を表示するには以下のSQL文を入力します。
SELECT user FROM mysql.user;
devという名前のユーザが表示されたら正常にユーザが作成されていることがわかります。
ユーザへの権限の設定
次にdevというユーザに対して権限を与えましょう。
特定のユーザに権限を与えるためにはGRANT ON文を使用します。
GRANT 権限名 ON 対象のデータベース.対象のテーブル TO 'ユーザの名前'@'ホスト名' ;
権限名には以下の表のものが存在します。
権限名 | 権限の説明 |
---|---|
ALL | 権限の付与以外の権限を全て与える。 |
ALTER | テーブルを変更する権限を与える。 |
CREATE | データベースとテーブルを作成する権限を与える。 |
DELETE | DELETE文を使う権限を与える。 |
DROP | DROP文を使う権限を与える。 |
INSERT | INSERT文を使う権限を与える。 |
SELECT | SELECT文を使う権限を与える。 |
UPDATE | UPDATE文を使う権限を与える。 |
例えばdevというユーザにSELECTとUPDATEだけを許可したい場合は以下のようにSQL文を入力します。
GRANT SELECT,UPDATE ON *.* TO 'dev'@'localhost';
付与したい権限が複数ある場合は権限の間をカンマ「,」で区切ります。
また、権限を反映させる対象のデータベースやテーブルにはそれぞれ適切な名前を入力しますが、全てのデータベースやテーブルを対象としたい場合にはアスタリスク「*」を入力します。
最後に、変更した権限をデータベースに反映させるにはFLUSH PRIVILEGES
を入力します。
FLUSH PRIVILEGES;
まとめ
このようにユーザを作成して権限を付与することで、データベースを触る人の中でどこまでのことを許可するかを設定することが出来ます。そしてきちんとユーザやその権限を管理することで、安全なデータベース運用につながります。
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。