MySQLでユーザ権限を与えるGRANT

GRANT文はまだ1度も使ったことがありません。phpMyAdminでも、サポートしているかどうも謎でした。さらにいうと、他の人も使うということを想定していなかったので、全部rootでログインするという感じでした。
今回より、SQLのプログラムコードの部分だけ色をつけるようにしました。色が変わってくれない部分もあったのですが、プログラムコードの部分だけ大文字表記にしました。データベース名やユーザ名など任意で決める部分が小文字です。これで見やすくなると思います。できたらその部分の背景の色も変えたかったのだが、はてな記法でそれがどれか分からなかった。本来HTMLで実現できるはずだとはおもうのだけど、それはまた今度調べて分かったら実行したいと思う。

 
まずはrootでログイン。そして、テスト用のユーザーを作成。

GRANT ALL ON sample.* TO test@localhost IDENTIFIED BY '1234';

localhostからのアクセスでtestというユーザーに、sampleデータベースの全てのテーブルに対して、全ての権限を与える。なお、パスワードは1234です。ということです。正しい構文や細かいオプションはまた勉強しようと思うので、今回は最低限です。
ユーザーが作成されているかを確認します。

SELECT user FROM mysql.user;

mysqlデータベースのuserテーブルのuserというカラムを検索して表示するという命令です。(mysql.user)の部分が(データベース名.テーブル名)となっています。今まではuse mysql;でデータベースを指定していたのですが、今回はその命令をしていないので、この検索命令ではデータベースまで指定するようにしています。
testが追加されているはずです。
続けて、testユーザーがどんな権限を持っているかの確認。

SHOW GRANTS FOR test@localhost;

GRANT ALL PRIVILEGES ON sample.* TO test@localhostという部分がその答えとなります。全ての権限があるということです。その上の行に、パスワードが書かれていますが、これは特別な値に変換して格納してあります。


この次でGRANT構文をちゃんと調べようと思います。