俺だけのために Ore! Tips!

MySQL のユーザー権限設定

2004年09月29日 作業

和田さんの仕事用に wadaya というデータベースを MySQL 上に作成し、そのデータベースの利用ユーザーとして wadaya を設定する。(ちなみに、Windows2000 Server 上の mysql コマンドにて設定)

まず、wadaya というユーザーを、「すべての DB に対して、何の権限も無し」という形で作成。
匿名ユーザーが残っていると、ローカルホストから接続する wadaya(wadaya@localhost)と、他のサーバから接続する wadaya を二つ登録しないといけないが、うちの MySQL では匿名ユーザーは削除しているので、wadaya(@ 以降無し)だけを登録すれば大丈夫。
だが、今回は両方のユーザーを登録してみる。(深い意味無し)

C:\share\Apache2\cgi-bin>\mysql\bin\mysql -u root -p mysql
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 14810 to server version: 4.0.21-nt

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

mysql> SELECT Host,User,Password FROM user;
+-----------+--------+------------------+
| Host      | User   | Password         |
+-----------+--------+------------------+
| localhost | root   | 02444a6e17b4d399 |
| build     | root   | 02444a6e17b4d399 |
+-----------+--------+------------------+
2 rows in set (0.00 sec)

mysql> GRANT USAGE ON *.* TO wadaya@localhost IDENTIFIED BY 'hogepw';
Query OK, 0 rows affected (0.01 sec)

mysql> SELECT Host,User,Password FROM user;
+-----------+--------+------------------+
| Host      | User   | Password         |
+-----------+--------+------------------+
| localhost | root   | 02444a6e17b4d399 |
| build     | root   | 02444a6e17b4d399 |
| localhost | wadaya | 0c351e775ff1ab88 |
+-----------+--------+------------------+
3 rows in set (0.00 sec)

mysql> GRANT USAGE ON *.* TO wadaya IDENTIFIED BY 'hogepw';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT Host,User,Password FROM user;
+-----------+--------+------------------+
| Host      | User   | Password         |
+-----------+--------+------------------+
| localhost | root   | 02444a6e17b4d399 |
| build     | root   | 02444a6e17b4d399 |
| localhost | wadaya | 0c351e775ff1ab88 |
| %         | wadaya | 0c351e775ff1ab88 |
+-----------+--------+------------------+
4 rows in set (0.00 sec)


これで、「何の権限も持たないユーザー」が登録された。
次に、このユーザーにデータベース 'wadaya' だけは好き勝手できる権限を与える。

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| mysql    |
| test     |
| wadaya   |
+----------+
3 rows in set (0.00 sec)

mysql> GRANT ALL ON wadaya.* TO wadaya@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON wadaya.* TO wadaya;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR wadaya@localhost;
+--------------------------------------------------------------------------------------+
| Grants for wadaya@localhost                                                          |
+--------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wadaya'@'localhost' IDENTIFIED BY PASSWORD '0c351e775ff1ab88' |
| GRANT ALL PRIVILEGES ON `wadaya`.* TO 'wadaya'@'localhost'                           |
+--------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR wadaya;
+------------------------------------------------------------------------------+
| Grants for wadaya@%                                                          |
+------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wadaya'@'%' IDENTIFIED BY PASSWORD '0c351e775ff1ab88' |
| GRANT ALL PRIVILEGES ON `wadaya`.* TO 'wadaya'@'%'                           |
+------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> \q
Bye


これで、ユーザー wadaya はデータベース wadaya にアクセスできるはず。

C:\share\Apache2\cgi-bin>\mysql\bin\mysql -u wadaya -p wadaya
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15233 to server version: 4.0.21-nt

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

mysql> SHOW DATABASES;
+----------+
| Database |
+----------+
| test     |
| wadaya   |
+----------+
2 rows in set (0.00 sec)

mysql> SHOW TABLES;
+------------------+
| Tables_in_wadaya |
+------------------+
| m_client         |
| m_job            |
+------------------+
2 rows in set (0.00 sec)

mysql> \q
Bye


ばっちりじゃん。

他のホストからもアクセスできるか確認。
FreeBSD 機から wadaya に wadaya でアクセスしてみる。:-)

serv2# which mysql
/usr/local/bin/mysql
serv2# mysql -h database.netandfield.com -u wadaya -p wadaya
Enter password:<パスワード入力>
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15884 to server version: 4.0.21-nt

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

mysql> SHOW TABLES;
+------------------+
| Tables_in_wadaya |
+------------------+
| m_client         |
| m_job            |
+------------------+
2 rows in set (0.01 sec)

mysql> SELECT * FROM m_client;
+----------+------------------------------+
| 取引先ID | 名称                         |
+----------+------------------------------+
| 1001     | 株式会社中国豆腐販売         |
+----------+------------------------------+
1 row in set (0.01 sec)

mysql> SELECT * FROM m_job;
Empty set (0.01 sec)

mysql> \q
Bye

他のホストからもちゃんと接続できた!!文句なし!!


前ページに戻る


Copyright (C) 2004 S.Maaasamasa.