MySQL 5.1 リファレンスマニュアル :: 2 MySQL のインストールと更新 :: 2.10 インストール後の設定とテスト :: 2.10.3 最初の MySQL アカウントの確保
« 2.10.2.3 MySQL サーバの起動とトラブルシューティング

2.11 MySQL のアップグレード »
Section Navigation      [Toggle]
  • 2.10 インストール後の設定とテスト
  • 2.10.1 Windows のインストール後のプロシージャ
  • 2.10.2 Unix のインストール後のプロシージャ
  • 2.10.3 最初の MySQL アカウントの確保

2.10.3. 最初の MySQL アカウントの確保

MySQL インストール プロセスの一環でグラント テーブルを含む mysql データベースを設定します。

  • Windows のディストリビューションには自動的にインストールされる初期化されたグラント テーブルが含まれています。

  • Unix では、グラント テーブルは mysql_install_db プログラムで設定されます。インストール メソッドがお客様に代わってこのプログラムを実行します。その他は手動でそれを実行します。詳細に関しては 項2.10.2. 「Unix のインストール後のプロシージャ」 を参照して下さい。

グラント テーブルは最初の MySQL ユーザーアカウントおよびそれらのアクセス権限を定義します。これらのアカウントは以下のように設定されます。

  • ユーザー名 root を持つアカウントが作成されます。通常とな異なる機能を持つスーパーユーザーのアカウントがあります。最初の root アカウントパスワードは空ですので、誰でも MySQL サーバに rootとして — パスワードなし — で接続できすべての権限を使用できます。

    • Windows では、一つの root アカウントが作成されます。このアカウントではローカル ホストのみから接続できます。Windows のインストーラではオプションでアカウントを作成してインストール中にユーザーが Enable root access from remote machines オプションを選択したときのみどのホストからでも接続できます。

    • Unix では、両方の root アカウントはローカル ホストの接続用です。接続はローカルホストから localhost のホスト名をアカウントの一つに指定するか、あるいは実際のホスト名または他への IP 番号を指定する必要があります。

  • 2 つの匿名アカウントをそれぞれユーザー名なして作成できます。匿名のアカウントにはパスワードがないため、誰でもそのアカウントを使用して MySQL サーバに接続できます。

    • Windows では、一つの匿名アカウントはローカル ホストの接続用です。そのアカウントにはすべての権限が root アカウントと同様にあります。もう一つのアカウントはすべてのホストの接続用で test データベースおよび test で始まる名前の他のデータベースに対してすべての権限を持っています。

    • Unix では、両方の匿名アカウントはローカル ホストの接続用です。接続はローカル ホストから localhost のホスト名をアカウントの一つあるいは実際のホスト名または他への IP 番号を指定する必要があります。これらのアカウントは test データベースおよび test_ で始まる名前のすべてのデータベースに対してすべての権限を持っています。.

上述のごとく、最初のアカウントにはどれもパスワードがありません。このことは MySQL のインストールはそれらを設定するまでは保護されていないということを意味します。

  • クライアントが匿名ユーザーでパスワードなしで接続しないようにするには、それぞれの匿名のアカウントにパスワードを割り当てるか、あるいはそれらのアカウントを削除する必要があります。

  • それぞれの MySQL root アカウントにパスワードを割り当てる必要があります。

以下の手順では最初の MySQL アカウントのパスワードの設定方法、最初に匿名のアカウント、次に root アカウントへの設定方法を説明します。例の「newpwd」 を実際に使用するパスワードに置き換えます。以下の説明では匿名のアクセスを希望しない場合の匿名のアカウントの削除の仕方についても説明します。

パスワードを新たな設定やテストをしている間に指定する必要がないようにそれらの作業が終わるまでパスワードの設定を望まない場合もあります。しかし、量産用(実稼動)のインストールを使用する前にはそれらを忘れずに設定してください。

匿名アカウントのパスワードの割り当て

匿名アカウントにパスワードを割り当てるには、サーバに root として接続して SET PASSWORD あるいは UPDATE のいずれかを使用します。どちらの場合も、PASSWORD() 機能を使用してパスワードを暗号化します。

Windows の SET PASSWORD を使用するには、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');

Unix で SET PASSWORD を使用するには、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');

2 番目の SET PASSWORD ステートメントでは、host_name をサーバのホスト名で置き換えます。これは user テーブルの root に非-localhost レコードの Host カラムで指定された名前です。ホスト名が分からない場合には、SET PASSWORD を使用する前に以下のステートメントを発行します。

mysql> SELECT Host, User FROM mysql.user;

User カラムで root を持つレコードおよび Host カラムで localhost 以外の何かを探します。次にその Host 値を 2 番目の SET PASSWORD ステートメントで使用します。

匿名のアカウントにパスワードを割り当てる別の方法は UPDATE を使用して user テーブルを直接変更することです。サーバに root として接続して値を適切な user のテーブル レコードの Password カラムに割り当てる UPDATE ステートメントを発行します。その手順は Windows も Unix も同じです。以下の UPDATE ステートメントは両方の匿名アカウントに同時にパスワードを割り当てます。

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = '';
mysql> FLUSH PRIVILEGES;

UPDATE を使用して user テーブルのパスワードを直接更新したら、サーバに FLUSH PRIVILEGES でグラント テーブルを再度読み込むようにサーバに指定する必要があります。さもなければ、その変更はサーバを再起動するまで認識されません。

匿名アカウントの削除

匿名のアカウントを削除するには、以下のようにします。

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE User = '';
mysql> FLUSH PRIVILEGES;

DELETE ステートメントは Windows および Unix 双方に適用されます。Windows で root と同じ権限を持つ匿名のアカウントのみを削除するには、以下のようにします。

shell> mysql -u root
mysql> DELETE FROM mysql.user WHERE Host='localhost' AND User='';
mysql> FLUSH PRIVILEGES;

そのアカウントは匿名のアクセスが可能ですべての権限を持っているので、それを削除するとセキュリティが改善されます。

root アカウントのパスワードの割り当て

root アカウントへのパスワードの割り当てには幾つかの方法があります。以下の説明では 3 種類の方法を示します。

  • SET PASSWORD ステートメントを使用する

  • mysqladmin コマンドラインのクライアント プログラムを使用する

  • UPDATE ステートメントを使用する

SET PASSWORD を使用してパスワードを割り当てるには、サーバに root として接続して 2 つの SET PASSWORD ステートメントを発行します。PASSWORD() 機能を使用してパスワードを忘れずに暗号化します。

Windows では、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');

Unix では、以下のようにします。

shell> mysql -u root
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');

2 番目の SET PASSWORD ステートメントでは、host_name をサーバのホスト名で置き換えます。これは匿名アカウントのパスワードを割り当てた時に使用したホスト名と同じものです。

パスワードを root アカウントに mysqladmin を使用して割り当てるには、以下のコマンドを実行します。

shell> mysqladmin -u root password "newpwd"
shell> mysqladmin -u root -h host_name password "newpwd"

これらのコマンドは Windows および Unix の両方に適用されます。.2 番目のコマンドで、host_name をサーバのホスト名で置き換えます。パスワードの二重引用符は常に必要とは限りません、パスワードにスペースあるいは使用しているコマンド インタープリタに特殊な他の文字を使用している場合には使用する必要があります。

UPDATE を使用して user テーブルを直接変更することもできます。以下の UPDATE ステートメントは両方の root アカウントに同時にパスワードを割り当てます。

shell> mysql -u root
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
    ->     WHERE User = 'root';
mysql> FLUSH PRIVILEGES;

UPDATE ステートメントは Windows および Unix の両方に適用されます。

パスワードを設定すると、サーバに接続するたびに適切なパスワードを入力する必要があります。例えば、mysqladmin を使用してサーバをシャットダウンするには以下のコマンドを使用します。

shell> mysqladmin -u root -p shutdown
Enter password: (enter root password here)

注:パスワード設定後に root パスワードを忘れた場合には、項B.1.4.1. 「How to Reset the Root Password」、がその再設定を行います。

新たにアカウントを追加するには、GRANT ステートメントを使用します。その手順は、項4.8.2. 「MySQL への新規ユーザの追加」 を参照してください。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates