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の初期設定で入力したものです。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
例 mysql -u root -p -b
【2】「GRANT ALL ON SampleDB040.* TO pgtop@localhost IDENTIFIED BY '12345';」と入力し、「Enterキー」を押します。
*TOの後の「pgtop@localhost」はユーザー名で、IDENTIFIED BYの後の「12345」はパスワードです。自由に付けることができますが、今後の学習を考えてできるだけ同じにしてください。またユーザー名には@localhostを付けてください。
【3】新しいユーザーが作成され、権限が付与されました。
ユーザーが作成されているか確認してみましょう。
【4】「SELECT user FROM mysql.user;」と入力し、「Enterキー」を押します。
*データベースを選択していないため、「mysql.user」と指定する必要があります。
(データベース名.テーブル名)
【5】ユーザーの一覧が表示されました。先ほど作成したユーザーが確認できました。
次はユーザーに設定された権限を確認してみましょう。
【6】「SHOW GRANTS FOR pgtop@localhost;」と入力し、「Enterキー」を押します。
【7】ユーザにどんな権限が付与されているか、確認することができました。
【8】同様の手順でテスト用のユーザーを作成し、ユーザーの確認まで行ないます。
GRANT SELECT ON SampleDB040.* TO test@localhost IDENTIFIED BY '6789';
SELECT user FROM mysql.user;
SHOW GRANTS FOR test@localhost;
【9】以下の図を参考にMySQLを終了・停止します。
1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。
【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」ユーザーのパスワードを忘れると再設定が面倒です。