スポンサードリンク



MySQL 新しいユーザー作成と権限を付与する方法。

今回はMySQLを操作する新しいユーザーを作成し、データベースに対してどのような操作を許可するのか権限を付与する方法を解説します。

MySQLでは全ての権限を持つ管理者ユーザーではなく、権限を制限した一般ユーザーを作成し、そのIDとパスワードで接続する方法が一般的です。

以下の2つのユーザーを作成します。
・pgtop@localhost 今後の学習で使用するためのユーザー
・test@localhost ユーザーを削除するためのテスト用

新しいユーザーを作成するには、ユーザーを作成できる権限を持った「root」という管理者ユーザーで接続する必要があります。


【1】以下の図を参考にMySQLを開始・接続します。

1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u root -p」と入力し、「Enterキー」を押します。
4.パスワードを求められるので入力し、「Enterキー」を押します。

mysql-86.gif

*パスワードはMySQLの初期設定で入力したものです。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
例 mysql -u root -p -b


【2】「GRANT ALL ON SampleDB040.* TO pgtop@localhost IDENTIFIED BY '12345';」と入力し、「Enterキー」を押します。

mysql-105.gif

*TOの後の「pgtop@localhost」はユーザー名で、IDENTIFIED BYの後の「12345」はパスワードです。自由に付けることができますが、今後の学習を考えてできるだけ同じにしてください。またユーザー名には@localhostを付けてください。


【3】新しいユーザーが作成され、権限が付与されました。

mysql-106.gif


ユーザーが作成されているか確認してみましょう。

【4】「SELECT user FROM mysql.user;」と入力し、「Enterキー」を押します。

mysql-107.gif

*データベースを選択していないため、「mysql.user」と指定する必要があります。
(データベース名.テーブル名)


【5】ユーザーの一覧が表示されました。先ほど作成したユーザーが確認できました。

mysql-108.gif


次はユーザーに設定された権限を確認してみましょう。

【6】「SHOW GRANTS FOR pgtop@localhost;」と入力し、「Enterキー」を押します。

mysql-109.gif


【7】ユーザにどんな権限が付与されているか、確認することができました。

mysql-110.gif


【8】同様の手順でテスト用のユーザーを作成し、ユーザーの確認まで行ないます。

GRANT SELECT ON SampleDB040.* TO test@localhost IDENTIFIED BY '6789';
mysql-111.gif

SELECT user FROM mysql.user;
mysql-112.gif

SHOW GRANTS FOR test@localhost;
mysql-113.gif


【9】以下の図を参考にMySQLを終了・停止します。

1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。

mysql-87.gif


【10】コマンドプロンプトは閉じてください。


【解説】

ユーザー作成、権限付与のSQL文について
GRANT ALL ON SampleDB040.* TO pgtop@localhost IDENTIFIED BY '12345';
GRANT SELECT ON SampleDB040.* TO test@localhost IDENTIFIED BY '6789';

(1)「ALL」はデータベースに対して、全ての操作ができる権限を与えています。SELECT,INSERT,UPDATE,DELETE のように、カンマで区切って個別に権限を設定することもできます。


(2)「SampleDB040.*」はデータベース中の全てのテーブルを指定しています。ただし他のデータベースのテーブルは扱えません。

「SampleDB040.T01Prefecture」のように個別にテーブルを指定することもできます。MySQLにある全てのデータベースを扱えるようにするには「*.*」にします。


(3)pgtop@localhost はユーザー名で、ローカルシステムからMySQLにアクセスできるユーザーです。リモートからアクセスできる pgtop とは区別され、SQL文も異なります。


GRANT ALL ON SampleDB040.* TO pgtop@'%' IDENTIFIED BY '12345';

ローカルシステムからのみアクセスする場合は、@localhostを付けてください。両方作成することも可能です。


(4)パスワードは忘れないようにしてください。MySQLではパスワードは特別な値に変換して格納されるので、見ても元の値がわかりません。

一般ユーザーは削除した後に再度作成することもできますが、「root」ユーザーのパスワードを忘れると再設定が面倒です。


スポンサードリンク






MySQL初心者入門講座TOPへ