MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  ...  /  アカウントパスワードの割り当て

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

MySQL サーバーに接続するクライアントに必要な証明書には、パスワードを含めることができます。 このセクションでは、MySQL アカウントにパスワードを割り当てる方法について説明します。

MySQL は、mysql システムデータベースの user テーブルに資格証明を格納します。 パスワードを割り当てたり変更したりする操作は、CREATE USER 権限を持つユーザー、または mysql データベースに対する権限 (新しいアカウントを作成するための INSERT 権限、既存のアカウントを変更するための UPDATE 権限) にのみ許可されます。 read_only システム変数が有効になっている場合、CREATE USERALTER USER などのアカウント変更ステートメントを使用するには、CONNECTION_ADMIN 権限 (または非推奨の SUPER 権限) も必要です。

ここでは、最も一般的なパスワード割当てステートメントの構文のみをまとめています。 その他の可能性の詳細は、セクション13.7.1.3「CREATE USER ステートメント」セクション13.7.1.1「ALTER USER ステートメント」 および セクション13.7.1.10「SET PASSWORD ステートメント」 を参照してください。

MySQL は、プラグインを使用してクライアント認証を実行します。セクション6.2.17「プラガブル認証」 を参照してください。 パスワード割当てステートメントでは、アカウントに関連付けられた認証プラグインは、指定されたクリアテキストパスワードに必要なハッシュを実行します。 これにより、MySQL では、パスワードを mysql.user システムテーブルに格納する前に不明瞭化できます。 ここで説明するステートメントでは、MySQL は指定されたパスワードを自動的にハッシュします。 CREATE USER および ALTER USER には、ハッシュ値を文字どおりに指定できる構文もあります。 詳細は、これらのステートメントの説明を参照してください。

新しいアカウントの作成時にパスワードを割り当てるには、CREATE USER を使用して IDENTIFIED BY 句を含めます:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';

CREATE USER は、アカウント認証プラグインを指定するための構文もサポートしています。 セクション13.7.1.3「CREATE USER ステートメント」を参照してください。

既存のアカウントのパスワードを割り当てたり変更したりするには、IDENTIFIED BY 句を含む ALTER USER ステートメントを使用します:

ALTER USER 'jeffrey'@'localhost' IDENTIFIED BY 'password';

匿名ユーザーとして接続していない場合は、自分のアカウントに文字どおりに名前を付けずに自分のパスワードを変更できます:

ALTER USER USER() IDENTIFIED BY 'password';

コマンドラインからアカウントパスワードを変更するには、mysqladmin コマンドを使用します:

mysqladmin -u user_name -h host_name password "password"

このコマンドでパスワードを設定するアカウントは、User カラムに user_name が、Host カラムにクライアントホスト接続元が一致する mysql.user システムテーブルの行を持つアカウントです。

警告

mysqladmin を使用してパスワードを設定する場合は、セキュアでないとみなす必要があります。 一部のシステムでは、使用しているパスワードが、コマンド行を表示するためにほかのユーザーによって起動できる ps などのシステムステータスプログラムによって表示可能になります。 MySQL クライアントは通常、クライアントの初期化シーケンス中にコマンド行パスワード引数をゼロで上書きします。 ただし、まだ値が表示可能な短い期間があります。 また、一部のシステムではこの上書きの方法には効果がなく、パスワードは ps から表示可能になったままになります。 (SystemV Unix システムおよびおそらくほかのシステムでもこの問題の影響があります。)

MySQL レプリケーションを使用している場合は、現在、CHANGE REPLICATION SOURCE TO ステートメント (MySQL 8.0.23 の場合) または CHANGE MASTER TO ステートメント (MySQL 8.0.23 の場合) の一部としてレプリカによって使用されるパスワードの長さが事実上 32 文字に制限されていることに注意してください。パスワードが長い場合は、余分な文字が切り捨てられます。 これは通常、MySQL Server によって課される制限によるものではなく、MySQL レプリケーションに固有の問題です。


関連キーワード:  パスワード, アカウント, 認証, ステートメント, プラガブル, 権限, 監査, セキュリティー, ユーザー, 接続