ほとんどの場合において、ユーザとパスワードの設定には
        GRANT
        を使用します。以下の方法は上級ユーザ対象です。
        See 項4.4.1. 「GRANT および REVOKE の構文」。
      
        前のセクションでは、例を用いて重要な原則を示しました。INSERT
        または UPDATE
        ステートメントを使用して空白でないパスワードを保存する際には、PASSWORD()
        関数を使用して暗号化しなければならないということです。これは、user
        テーブルがパスワードを平文テキストではなく、暗号化された形式で保存するためです。たとえば、この原則を忘れて、以下のようにパスワードを設定してしまったとします。
      
shell>mysql -u root mysqlmysql>INSERT INTO user (Host,User,Password)->VALUES('%','jeffrey','biscuit');mysql>FLUSH PRIVILEGES;
        この場合、平文テキストの
        'biscuit' が、パスワードとして
        user
        テーブルに保存されます。ユーザ
        jeffrey
        がこのパスワードを使用してサーバに接続しようとすると、mysql
        クライアントは PASSWORD()
        でそれを暗号化し、暗号化されたパスワードと、サーバから取得したランダム番号に基づいて認証ベクトルを生成し、それをサーバに送信します。
        サーバは user テーブルの
        password
        値(この場合、暗号化されていない
        'biscuit')を使用して同じ計算を実行し、結果を比較します。
        比較は失敗し、サーバは接続を拒否します。
      
shell> mysql -u jeffrey -pbiscuit test
Access denied
        user
        テーブルにパスワードを挿入するとき、パスワードは暗号化しておく必要があります。したがって、INSERT
        ステートメントを以下のように指定します。
      
mysql>INSERT INTO user (Host,User,Password)->VALUES('%','jeffrey',PASSWORD('biscuit'));
        SET PASSWORD
        ステートメントを使用するときも、PASSWORD()
        関数を使用する必要があります。
      
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
        GRANT ... IDENTIFIED BY
        ステートメントまたは mysqladmin
        password
        コマンドを使用してパスワードを設定する場合、PASSWORD()
        関数は必要ありません。両方ともパスワードを暗号化するので、以下のようにパスワードを
        'biscuit' と指定します。
      
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
または
shell> mysqladmin -u jeffrey password biscuit
        注意:
        PASSWORD() は、Unix
        のパスワード暗号化とは異なります。 See
        項4.4.2. 「MySQL のユーザ名とパスワード」。
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

