MySQLのアクセス権(はてなの質問に答える)

自分も最近LinuxMySQLを導入したばかりで正しい情報ではないも知れません。
Select文とかわからないと理解不能だと思うので
やっぱりSQLに関する基本的な本が1冊あったほうがいいと思います。

MySQLはアクセス権も自分自身で管理しており、"mysql"というデータベースがそれです。
この中の"user"というテーブルでアクセスユーザを管理しています。
初期設定ではrootユーザはすべてのデータベースにアクセスできる権限をもっています。
試しに以下を試してみてください。

#mysql mysql -u root -p
-pはいらないかも。
#Enter Password
でパスワードを入力、-pがいらない場合は飛ばします。とプロンプトが変わると思います。これでrootユーザでアクセスしたことになります。
mysql>select * from user;
このSQL文でuserテーブルのデータがすべて表示されます。
たくさんの文字列が表示されるので画面を最大化しておいたほうがいいです。
mysql>select * from user where user="root";
rootユーザのアクセス権のみが表示されます。"|"で区切って読みす。
一つ目の項目がアクセスもとのホスト名、localhostだと思います。
2つ目がユーザー名、rootや追加したユーザの名前。
3つ目がパスワード、初期設定では空かもしれません。
以降がSQL文(SELECT,CREATE,UPDATEなど)の実行権限を"Y"or"N"で表示されます。
rootはすべての権限をもっているのですべて"Y"のはずです。
ここに"shinchan"というユーザをパスワード"hoge"で登録する場合は、
mysql>INSERT INTO user (Host,User,Password) VALUES("localhost","shinchan",password("hoge"));
で登録されます。ただこのままだとアクセス権がすべて"N"なので必要な部分を"Y"にしてやる必要があります。
SELECT文とINSERT文を許可するには、
mysql>UPDATE user SET Select_priv="Y" Insert_priv="Y" where user="shinchan";

他の権限も同じように変更できます。
最後に設定を反映させるためmysqlを再起動します。
mysql>quit;
mysqladmin -u root -p reload
rootのパスワードが空なら-pはいりません。
これでlocalhostからユーザ名"shinchan"、パスワード"hoge"でアクセスできるようになります。