UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

MySQLでユーザを作成する

MySQLでユーザを作成する


0.改訂履歴

  • 2005.06.09 新規作成
  • 2005.06.13 権限部分の説明追加

1.はじめに

 このドキュメントでは,MySQLで一般ユーザを作成してみる手順を説明する.

2.管理者権限(root)でログインする.

ivory:~ shinnai$ /usr/local/mysql/bin/mysql -u root -p
Enter password: ■■■■■■■■■■■
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12 to server version: 4.1.12-max

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>  

3.mysqlデータベース上の,現在のユーザを確認する.

mysql> select host,user,password from mysql.user;
+-------------+-----------+-------------------------------------------+
| host        | user      | password                                  |
+-------------+-----------+-------------------------------------------+
| localhost   | root      | *AAFB92E8C907D514F5C694F6CC80D337FB095440 |
| ivory.local | root      |                                           |
| ivory.local |           |                                           |
| localhost   |           |                                           |
+-------------+-----------+-------------------------------------------+
4 rows in set (0.10 sec)

mysql>

4.test_userを作成する

  • test_userというユーザを,パスワードをpasswordsとして作成してみる.
mysql> grant                        
    ->   select,insert,delete,update,            
    ->   create,drop,file,alter,index
    ->   on *.* 
    ->   to test_user identified by 'passwords'
    -> ;
Query OK, 0 rows affected (0.20 sec)

mysql>   
  • できたかどうか,確認してみる.
mysql> select host,user,password from mysql.user;
+-------------+-----------+-------------------------------------------+
| host        | user      | password                                  |
+-------------+-----------+-------------------------------------------+
| localhost   | root      | *AAFB92E8C907D514F5C694F6CC80D337FB095440 |
| ivory.local | root      |                                           |
| ivory.local |           |                                           |
| localhost   |           |                                           |
| %           | test_user | 7334fb5073a18bb7                          |
+-------------+-----------+-------------------------------------------+
5 rows in set (0.10 sec)

mysql>
  • 作成できてる事が確認できた.

5.test_userを消す

  • ユーザ情報もデータベースに格納されているので,普通にレコードを消すのと同じ
mysql> delete from mysql.user where user='test_user';
Query OK, 1 row affected (0.35 sec)

mysql> 
  • 消えたか確認してみる.
mysql> select host,user,password from mysql.user;
+-------------+-----------+-------------------------------------------+
| host        | user      | password                                  |
+-------------+-----------+-------------------------------------------+
| localhost   | root      | *AAFB92E8C907D514F5C694F6CC80D337FB095440 |
| ivory.local | root      |                                           |
| ivory.local |           |                                           |
| localhost   |           |                                           |
+-------------+-----------+-------------------------------------------+
4 rows in set (0.00 sec)

mysql> 

6.パスワードを変更する

  • ここではrootユーザのパスワードを'New_passwords'に変更する.
mysql> set password for root@localhost =password('New_passwords');
Query OK, 0 rows affected (0.32 sec)

mysql>

7.ユーザテーブルの中身を見たり,権限を確認する

  • 先ほどと同じように,test_userを作成する.
grant insert,delete,update,
create,drop,file,alter,index 
on *.* to test_user identified by 'passwords'    
  • ただし,select権限を与えていない.
  • mysql.userテーブルスキームを確認する.
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field                 | Type                              | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host                  | varchar(60)                       |      | PRI |         |       |
| User                  | varchar(16)                       |      | PRI |         |       |
| Password              | varchar(41)                       |      |     |         |       |
| Select_priv           | enum('N','Y')                     |      |     | N       |       |
| Insert_priv           | enum('N','Y')                     |      |     | N       |       |
| Update_priv           | enum('N','Y')                     |      |     | N       |       |
| Delete_priv           | enum('N','Y')                     |      |     | N       |       |
| Create_priv           | enum('N','Y')                     |      |     | N       |       |
| Drop_priv             | enum('N','Y')                     |      |     | N       |       |
| Reload_priv           | enum('N','Y')                     |      |     | N       |       |
| Shutdown_priv         | enum('N','Y')                     |      |     | N       |       |
| Process_priv          | enum('N','Y')                     |      |     | N       |       |
| File_priv             | enum('N','Y')                     |      |     | N       |       |
| Grant_priv            | enum('N','Y')                     |      |     | N       |       |
| References_priv       | enum('N','Y')                     |      |     | N       |       |
| Index_priv            | enum('N','Y')                     |      |     | N       |       |
| Alter_priv            | enum('N','Y')                     |      |     | N       |       |
| Show_db_priv          | enum('N','Y')                     |      |     | N       |       |
| Super_priv            | enum('N','Y')                     |      |     | N       |       |
| Create_tmp_table_priv | enum('N','Y')                     |      |     | N       |       |
| Lock_tables_priv      | enum('N','Y')                     |      |     | N       |       |
| Execute_priv          | enum('N','Y')                     |      |     | N       |       |
| Repl_slave_priv       | enum('N','Y')                     |      |     | N       |       |
| Repl_client_priv      | enum('N','Y')                     |      |     | N       |       |
| ssl_type              | enum('','ANY','X509','SPECIFIED') |      |     |         |       |
| ssl_cipher            | blob                              |      |     |         |       |
| x509_issuer           | blob                              |      |     |         |       |
| x509_subject          | blob                              |      |     |         |       |
| max_questions         | int(11) unsigned                  |      |     | 0       |       |
| max_updates           | int(11) unsigned                  |      |     | 0       |       |
| max_connections       | int(11) unsigned                  |      |     | 0       |       |
+-----------------------+-----------------------------------+------+-----+---------+-------+
31 rows in set (0.01 sec)

mysql>                                                      
  • 権限に関しては,enum型(値リスト)で設定しているようである.
  • 先ほどのselect権限を与えなかった分が,どうなっているか確認してみる.
mysql> select User,Select_priv from mysql.user ; 
+-----------+-------------+
| User      | Select_priv |
+-----------+-------------+
| root      | Y           |
| root      | Y           |
|           | N           |
|           | N           |
| test_user | N           |
+-----------+-------------+
5 rows in set (0.00 sec)

mysql>                
  • test_userのselect権限は,Nになっている.

8.権限付与の対象

  • GRANT文の,on句についてまとめる.
対象の設定方法
文法 説明
on *.*  全てのデータベースと全てのテーブルに対する権限を設定する.
on DB名.*  データベース毎の権限. 全テーブルが対象となる.
on DB名.テーブル名  テーブル毎に設定する.
カラム名 on DB名.テーブル名  テーブルのカラム毎に設定する.

9.ユーザの管理について

  • 他のデータベースを使っていると,この概念が判らない箇所かもしれない.
  • MySQLでは,ユーザIDとホスト名でユーザアカウントを管理している.
  • 次の表の例を挙げてみる.
対象の設定方法
文法 説明
username@localhost  ローカルでのみ接続できるユーザ.
username@'192.168.1.%'  接続してくるIPアドレスで制限している.
username@'%.co.jp'  接続してくるドメインを設定する.
username@'%'  どこからでもOKなユーザ.
  • たとえば,Web1,Web2というサーバから,MySQLに接続する場合は,次のようなユーザを作成しておく必要がある.
user@web1
user@web2
  • ユーザ名が同じでも,接続してくるWebサーバが異なるので,違うユーザという事.
  • ホスト名部分に,%を使う事で,ワイルドカードとなる.


広告スペース
Google