カスタム検索
|
Tweet |
|
|
MySQLのユーザ管理の話題
Modified: 3 November 2004
MySQLのユーザに関する基本知識
MySQLユーザは、ユーザー名とホスト名のペアです。
具体的には、"root@webserver"のような形式で、前半の"root"がユーザ名で、"webserver"がホスト名です。
インストール直後は、以下の4つのユーザが登録されています。
+-----------+---------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+ | Host | User | Password | Select_priv | Insert_priv | Update_priv | Delete_priv | Create_priv | Drop_priv | Reload_priv | Shutdown_priv | Process_priv | File_priv | Grant_priv | References_priv | Index_priv | Alter_priv | +-----------+---------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+ | localhost | root | | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | dbserver | root | | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | localhost | | | N | N | N | N | N | N | N | N | N | N | N | N | N | N | | dbserver | | | N | N | N | N | N | N | N | N | N | N | N | N | N | N | +-----------+---------+------------------+-------------+-------------+-------------+-------------+-------------+-----------+-------------+---------------+--------------+-----------+------------+-----------------+------------+------------+"localhost" は、UNIXソケットでの接続を意味します。
"dbserver" は、MySQLをインストールしているサーバー自身のホスト名です。
ユーザ名のないユーザは、どんなユーザ名でも接続できるユーザで、匿名ユーザといいます。
root@localhost UNIXソケットで接続できるスーパーユーザ root@dbserver TCP/IPソケットで接続できるスーパーユーザ @localhost UNIXソケットで接続できる匿名ユーザ(どんなユーザでも接続可能なユーザ) @dbserver TCP/IPソケットで接続できる匿名ユーザ(どんなユーザでも接続可能なユーザ) 2つの匿名ユーザが登録されているので、MySQLをインストールしているサーバーからは、UNIXソケットでもTCP/IPソケットでも、どんなユーザでもMySQLに接続できます。しかし、すべての権限が"N"(なし)になっていますので、接続できるだけでなにもできません。
パスワードは登録されていませんので、実際に使う場合は、設定しておくべきです。
外部サーバーのホスト名やユーザが登録されていませんので、外部からは接続できません。
ユーザ名だけのユーザは、どのホストからでも接続できるユーザです。以下のようにホスト名のところには、"%" が登録されます。"@localhost" が登録されているをそれが優先されるので、ユーザ名だけのユーザは、UNIXソケットから接続できません。
| % | tomo | | N | N | N | N | N | N | N | N | N | N | N | N | N | N |Shellから、MySQLに、ユーザ名だけで接続を試みると、UNIXソケットの接続を意味することから、"@localhost" をくっつけて接続したものとみなされます。
ユーザ登録の方法
ユーザ登録は、GRANT文で権限の範囲設定と同時に行います。
mysql> grant usage on *.* to user-name@host identified by 'password';"usage"は、なんの権利も与えないという意味です。とりあえずユーザのみ登録しておき、後で権限を設定するという場合に指定します。"all"を指定すると、すべての権限が与えられます。
"*.*"は、すべてのデータベースのすべてのテーブルの意味です。前半の"*"は、データベース名、後半の"*"は、テーブル名です。
"user-name@host " は、ユーザ+ホスト名で指定します。
"password" は、ユーザのパスワードです。
パスワードを設定する方法
mysql> set password for user-name@host = password('password');接続しているユーザのパスワードの設定や変更は、以下のコマンドで行います。
mysql> set password = password('password');