MySQL
        インストールプロセスの一環でグラントテーブルを含む
        mysql
        データベースを設定します。
      
Windows の配布には自動的にインストールされる初期化されたグラントテーブルが含まれています。
Unix では、グラントテーブルは mysql_install_db プログラムで設定されます。インストールメソッドがお客様に代わってこのプログラムを実行します。その他は手動でそれを実行します。詳細については、項2.11.2. 「Unix のインストール後のプロシージャー」をご参照ください。
グラントテーブルは最初の MySQL ユーザーアカウントおよびそれらのアクセス権限を定義します。これらのアカウントは以下のように設定されます。
            ユーザー名 root
            を持つアカウントが作成されます。通常とな異なる機能を持つスーパーユーザーのアカウントがあります。最初の
            root
            アカウントパスワードは空なので、だれでも
            root として
            パスワードなし で MySQL
            サーバーに接続することができ、すべての権限を付与されます。
          
                Windows では、1 つの
                root
                アカウントが作成されます。このアカウントではローカルホストのみから接続できます。Windows
                のインストーラではオプションでアカウントを作成してインストール中にユーザーが「Enable
                root access from remote
                machines」オプションを選択したときのみどのホストからでも接続できます。
              
                Unix では、両方の
                root
                アカウントはローカルホストの接続用です。接続は、いずれかのアカウントの
                localhost
                のホスト名を指定するか、もう一方の実際のホスト名または
                IP
                番号を指定して、ローカルホストから行う必要があります。
              
2 つの匿名ユーザーアカウントが作成されます。各アカウントのユーザー名は空です。匿名のアカウントにはパスワードがないため、だれでもそのアカウントを使用して MySQL サーバーに接続できます。
                Windows では、1
                つの匿名アカウントはローカルホストの接続用です。そのアカウントにグローバル権限はありません。(MySQL
                5.1.16 より前の場合は、ちょうど
                root
                アカウントと同じように、そのアカウントにはすべてのグローバル権限があります。)
                もう 1
                つのアカウントはすべてのホストの接続用で
                test
                データベースおよび
                test
                で始まる名前のほかのデータベースに対してすべての権限を持っています。
              
                Unix
                では、両方の匿名アカウントはローカルホストの接続用です。接続は、いずれかのアカウントの
                localhost
                のホスト名を指定するか、もう一方の実際のホスト名または
                IP
                番号を指定して、ローカルホストから行う必要があります。これらのアカウントは
                test
                データベースおよび
                test_
                で始まる名前のすべてのデータベースに対してすべての権限を持っています。
              
上述のごとく、最初のアカウントにはどれもパスワードがありません。このことは MySQL のインストールはそれらを設定するまでは保護されていないということを意味します。
クライアントが匿名ユーザーでパスワードなしで接続しないようにするには、それぞれの匿名のアカウントにパスワードを割り当てるか、あるいはそれらのアカウントを削除する必要があります。
            それぞれの MySQL
            root
            アカウントにパスワードを割り当てる必要があります。
          
        以下の手順では最初の MySQL
        アカウントのパスワードの設定方法、最初に匿名のアカウント、次に
        root
        アカウントへの設定方法を説明します。例の
        「newpwd」
        を実際に使用するパスワードに置き換えます。以下の説明では匿名のアクセスを希望しない場合の匿名のアカウントの削除の仕方についても説明します。
      
パスワードを新たな設定やテストをしている間に指定する必要がないようにそれらの作業が終わるまでパスワードの設定を望まない場合もあります。しかし、本稼働用のインストールを使用する前にはそれらを忘れずに設定してください。
匿名アカウントのパスワードの割り当て
        匿名アカウントにパスワードを割り当てるには、サーバーに
        root として接続して
        SET PASSWORD
        あるいは
        UPDATE
        のいずれかを使用します。どちらの場合も、PASSWORD()
        機能を使用してパスワードを暗号化します。
      
        Windows の SET
        PASSWORD
        を使用するには、以下のようにします。
      
shell>mysql -u rootmysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('mysql>newpwd');SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
        Unix で SET
        PASSWORD
        を使用するには、以下のようにします。
      
shell>mysql -u rootmysql>SET PASSWORD FOR ''@'localhost' = PASSWORD('mysql>newpwd');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
        ステートメントで使用します。
      
匿名アカウントの削除
匿名のアカウントを削除するには、以下のようにします。
shell>mysql -u rootmysql>DROP USER '';
        DROP ステートメントは
        Windows および Unix の両方に適用されます。Windows
        で root
        と同じ権限を持つ匿名のアカウントのみを削除するには、以下のようにします。
      
shell>mysql -u rootmysql>DROP USER ''@'localhost';
そのアカウントは匿名のアクセスが可能ですべての権限を持っているので、それを削除するとセキュリティーが改善されます。
        root
        アカウントのパスワードの割り当て
      
        root
        アカウントへのパスワードの割り当てには幾つかの方法があります。以下の説明では
        3 種類の方法を示します。
      
            SET PASSWORD
            ステートメントを使用する
          
mysqladmin コマンドラインのクライアントプログラムを使用する
            UPDATE
            ステートメントを使用する
          
        SET PASSWORD
        を使用してパスワードを割り当てるには、サーバーに
        root として接続して
        SET PASSWORD
        ステートメントを発行します。PASSWORD()
        機能を使用してパスワードを忘れずに暗号化します。
      
Windows では、以下のようにします。
shell>mysql -u rootmysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mysql>newpwd');SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');
Unix では、以下のようにします。
shell>mysql -u rootmysql>SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mysql>newpwd');SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
        2 番目の SET
        PASSWORD
        ステートメントでは、host_name
        をサーバーのホスト名で置き換えます。これは匿名アカウントのパスワードを割り当てたときに使用したホスト名と同じものです。
      
        user テーブルに
        'root' および
        '127.0.0.1' という
        User および
        Host
        値を持つアカウントが含まれる場合は、追加の
        SET PASSWORD
        ステートメントを使用してそのアカウントのパスワードを設定します。
      
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
        パスワードを root
        アカウントに mysqladmin
        を使用して割り当てるには、以下のコマンドを実行します。
      
shell>mysqladmin -u root password "shell>newpwd"mysqladmin -u root -hhost_namepassword "newpwd"
        これらのコマンドは Windows および Unix
        の両方に適用されます。2
        番目のコマンドで、host_name
        をサーバーのホスト名で置き換えます。パスワードの二重引用符は常に必要とはかぎりません、パスワードにスペースあるいは使用しているコマンドインタープリタに特殊なほかの文字を使用している場合には使用する必要があります。
      
        root
        アカウントパスワードを設定する
        mysqladmin
        メソッドは、'root'@'127.0.0.1'
        アカウントのパスワードを設定しません。これを行うには、前に示したように
        SET PASSWORD
        を使用します。
      
        UPDATE
        を使用して user
        テーブルを直接変更することもできます。次の
        UPDATE
        ステートメントは、すべての
        root
        アカウントにパスワードを割り当てます。
      
shell>mysql -u rootmysql>UPDATE mysql.user SET Password = PASSWORD('->newpwd')WHERE User = 'root';mysql>FLUSH PRIVILEGES;
        UPDATE
        ステートメントは Windows および Unix
        の両方に適用されます。
      
パスワードを設定すると、サーバーに接続するたびに適切なパスワードを入力する必要があります。たとえば、mysqladmin を使用してサーバーをシャットダウンするには以下のコマンドを使用します。
shell>mysqladmin -u root -p shutdownEnter password:(enter root password here)
          root
          パスワードの設定後にそれを忘れた場合は、How to Reset the Root Password
          にその再設定の手順が記載されています。
        
        新たにアカウントを追加するには、GRANT
        ステートメントを使用します。その手順は、Adding User Accounts
        を参照してください。
      

