|
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.権限付与の対象
対象の設定方法
文法 |
説明 |
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に接続する場合は,次のようなユーザを作成しておく必要がある.
- ユーザ名が同じでも,接続してくるWebサーバが異なるので,違うユーザという事.
- ホスト名部分に,%を使う事で,ワイルドカードとなる.
|
|