xserver
Home クッキー及びWeb ビーコンについて



MySQLのユーザ管理

MySQLのユーザ管理

MySQL のユーザ管理について解説していきます。誰でも大切なデータにアクセスする事ができてしまっては困るので、きちんとユーザごとに管理しておくようにしましょう。




■データベースの作成

 まず、root でログインし、テーブルを作成しておきます。show databases;でdb1テーブルが作成されたことを確認してください。なお、SQL文の最後には必ず「; 」が必要になります。「; 」は「\g 」でも代用できます。

# mysql -u root -p
mysql> CREATE DATABASE db1;
mysql> SHOW DATABASES;



 コマンドを打ち間違えたりなどして、-> の状態から抜けたい場合、\c と入力することで抜けられます。exit やbye、quit どれを入力しても抜けられないので注意してください(^▽^;)

mysql> show databases
    ->\c
mysql>



■ユーザの登録/権限の付与

 ユーザーの登録や権限の変更を行う場合には、GRANT文を使用します。データベースの操作にいつまでも root として作業を行うのはセキュリティ上、好ましくないので、ここでDBを操作できるユーザーを作成しておきます。構文は以下のとおりです。

◎GRANTの構文
GRANT 権限 ON DB名.テーブル名 TO ユーザ名 INDENTIFIED BY 'パスワード'

 ユーザーを作成するには具体的に以下のようにします。以下は、kororoというユーザーに対してlocalhost でのアクセスを許可し、また、kororoに対してdb1のデータベースに関する全ての操作権限を与えるという意味になります。なお、以下のように一行で表示しなくても何行かに分けて入力することも可能です。

mysql> GRANT ALL PRIVILEGES ON db1.*
mysql> TO 'kororo@localhost'
mysql> IDENTIFIED BY 'test_pass';

 localhost を除く全てのホストからのアクセスを許可するには以下のようにします。

mysql> GRANT ALL PRIVILEGES ON db1.*
mysql> TO 'kororo'
mysql> IDENTIFIED BY 'test_pass';

 ユーザーを追加したら最後に以下のように、ユーザーテーブルをリフレッシュします。

mysql> FLUSH PRIVILEGES;

 これで、kororo がdb1 データベースにアクセスすることができるようになります。なお、kororoは、db1テーブルに対しての操作権限しか与えられていないため、show databases 実行時には、デフォルトで閲覧できるtestとdb1 のデータベースしか見えなくなっていることを確認しておいてください。

# mysql -u kororo -p
Enter password:

◎設定例(管理者用)

 以下2つの構文でどのホストからもアクセスできる完全なスーパーユーザーを作成できるようになります。注意したいのは、他ホストからのアクセス許可は勿論の事、localhost のアクセス許可も与えてあげなければなりません。with grant optionを付け加えると、他のユーザの権限を書き換えることができるようになりますので管理者ユーザーを作成するときに用います。

mysql> GRANT ALL PRIVILEGES ON *.* TO kororo@localhost IDENTIFIED BY 'test_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO kororo@"%" IDENTIFIED BY 'test_pass' WITH GRANT OPTION;




◎主な権限の種類
 all 全ての権限を与える。ALL PRIVIREGES または、ALL
 usage 全ての権限を与えない
 create テーブルを作成する権限を付与する
 alter テーブルを変更する権限を付与する
 drop テーブルを削除する権限を付与する
 index インデックスを作成/削除する権限を付与する
  Select,Update,Insert,Delete ⇒テーブル操作の権限を付与する

■簡単なクエリを送信する

mysql> select now(), user(), version();
+---------------------+------------------+------------+
| now()               | user()           | version()  |
+---------------------+------------------+------------+
| 2004-01-25 04:16:01 | kororo@localhost | 4.0.17-log |
+---------------------+------------------+------------+
1 row in set (0.03 sec)

■ユーザー権限の閲覧

 ユーザーに対してどのような権限が付与されたかどうか確認します。

mysql> show grants for kororo@localhost;
mysql> show grants for kororo@localhost;
+-----------------------------------------------------------------------------------------------+
| Grants for kororo@localhost                                                                   |
+-----------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON `db1`.* TO 'kororo'@'localhost'                                       |
+-----------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

■ユーザー権限の削除

 ユーザーの権限を削除するには、REVOKE文を使用します。以下では、CREATE権を除く全ての権限が削除されます。なお、ユーザーに対する全ての権限を剥奪したとしても、ユーザー自体が削除されるわけではないことに注意してください。

mysql> REVOKE CREATE ON db1.* FROM kororo@localhost;

 db1 に対する全ての権限を削除したければ、ALL にしてREVOKEを実行します。

mysql> REVOKE ALL ON db1.* FROM kororo@localhost;

■ユーザーの削除

 ユーザーを削除するには、データベースを選択後、DELETE FROM を使用します。削除されたかどうかは、SELECT * FROM user で確認しておきます。

mysql> use db1
mysql> DELETE FROM user WHERE user='kororo';
mysql> SELECT host, user, password FROM user;



■ユーザーのパスワードを設定/変更

 ユーザーのパスワードを設定するには以下のようにします。

mysql> SET PASSWORD = PASSWORD('パスワード');

 root がユーザーのパスワードを変更するには以下のようにします。

mysql> SET PASSWORD for kororo = PASSWORD('パスワード');



■ユーザー管理テーブル

 MySQLにはユーザーの権限を管理するためのテーブルが用意されており以下の5つのテーブルがあります。

 user ユーザーのグローバルレベルの権限とパスワードを管理するテーブル
 db ユーザーのデータベースレベルの権限を管理するテーブル
 host dbテーブルにホスト名が指定されていない場合に適用される権限を管理するためのテーブル
 tables_priv ユーザーのテーブルレベルの権限を管理するテーブル
 columns_priv ユーザーのフィールドレベルの権限を管理するテーブル

 それぞれのテーブルを閲覧するには以下のようにします。横長になるので非常に見にくいかもしれません。

mysql> SELECT * FROM mysql.user WHERE user='kororo';
mysql> SELECT * FROM mysql.db WHERE user='kororo';
mysql> SELECT * FROM mysql.tables_priv WHERE user='kororo';
mysql> SELECT * FROM mysql.columns_priv WHERE user='kororo';



■匿名ユーザーの削除

 ユーザー名が特定できない匿名ユーザーを削除するには以下のコマンドを実行します。

mysql>DELETE FROM mysql.user WHERE user='';

 コマンドの実行を反映させるために以下コマンドを実行します。

mysql>FLUSH PRIVILEGES;






Sponcerd Link


Search
 
Web サイト内
Rental Server

【レンタルサーバのXbit】 低価格・高品質のビジネスクオリティー。300メガ1,050円~30分で サービススタート可能!


容量300MB、月額125円、高性能なサーバが日本最大級のバックボーンに直結。
さくらのレンタルサーバ



当サイトはLinux自宅サーバーの構築を目的としたサイトです。
当サイトに関するご意見、ご要望等は、こちらのメールアドレスよりお願いします。
Beginning | Introduction | Installation | Server |
Security | Tips | Related-Sites
Copyright©2003-2006 KORO All Rights Reserved.
総計:
今日:
昨日: