Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


MySQL 8.0 リファレンスマニュアル  /  ...  /  アカウントのユーザー名とパスワード

このページは機械翻訳したものです。

6.2.1 アカウントのユーザー名とパスワード

MySQL は、mysql システムデータベースの user テーブルにアカウントを格納します。 アカウントは、ユーザー名およびユーザーがサーバーに接続できるクライアントホスト (複数の場合あり) に関して定義されます。 user テーブルでのアカウントの表示については、セクション6.2.3「付与テーブル」を参照してください。

アカウントは、パスワードなどの認証資格証明を持つこともできます。 資格証明は、アカウント認証プラグインによって処理されます。 MySQL は、複数の認証プラグインをサポートしています。 これらの中には組込みの認証方式を使用するものもあれば、外部の認証方式を使用した認証を有効にするものもあります。 セクション6.2.17「プラガブル認証」を参照してください。

MySQL でのユーザー名とパスワードの使用方法とオペレーティングシステムの使用方法には、いくつかの違いがあります:

  • MySQL で認証目的に使用されるユーザー名と、Windows または Unix で使用されるユーザー名 (ログイン名) とには、まったく関係がありません。 Unix では、ほとんどの MySQL クライアントがデフォルトで、現在の Unix ユーザー名を MySQL ユーザー名として使用してログインを試みますが、これは便宜上の目的に過ぎません。 クライアントプログラムでは、-u または --user オプションを使用して任意のユーザー名を指定することが許可されているため、簡単にデフォルトをオーバーライドできます。 つまり、すべての MySQL アカウントにパスワードがないかぎり、誰でも任意のユーザー名を使用してサーバーへの接続を試みることができるため、どのような方法でもデータベースを保護することはできません。 パスワードのないアカウントのユーザー名を指定したユーザーは、サーバーに正常に接続できます。

  • MySQL ユーザー名の長さは最大 32 文字です。 オペレーティングシステムのユーザー名の最大長が異なる場合があります。

    警告

    MySQL ユーザー名の長さ制限は MySQL サーバーおよびクライアントでハードコードされており、mysql データベース機能しない内のテーブルの定義を変更して回避しようとしています。

    mysql データベースのテーブルの構造は、セクション2.11「MySQL のアップグレード」 で説明されているプロシージャを使用しないかぎり、どのような方法でも変更しないでください。 MySQL システムテーブルを他の方法で再定義しようとすると、未定義でサポートされていない動作が発生します。 これらの変更の結果として誤った形式となった行を、サーバーは随意で無視します。

  • 組込み認証方式を使用するアカウントのクライアント接続を認証するために、サーバーは user テーブルに格納されているパスワードを使用します。 これらのパスワードは、オペレーティングシステムにログインするためのパスワードとは異なります。 Windows または Unix マシンにログインする際に使用される外部パスワードと、そのマシン上の MySQL サーバーにアクセスする際に使用されるパスワードとの間には、必要な関係はありません。

    サーバーがほかのプラグインを使用してクライアントを認証する場合、プラグインが実装する認証方式は、user テーブルに格納されているパスワードを使用する場合と使用しない場合があります。 この場合、MySQL サーバーへの認証を行う際に、外部パスワードも使用される可能性があります。

  • user テーブルに格納されているパスワードは、プラグイン固有のアルゴリズムを使用して暗号化されます。

  • ユーザー名とパスワードに ASCII 文字のみが含まれている場合は、文字セットの設定に関係なくサーバーに接続できます。 ユーザー名またはパスワードに ASCII 以外の文字が含まれている場合に接続を有効にするには、クライアントアプリケーションで、MYSQL_SET_CHARSET_NAME オプションおよび適切な文字セット名を引数に指定して mysql_options() C API 関数をコールする必要があります。 これにより、指定された文字セットを使用した認証が実行されます。 そうしないと、サーバーのデフォルト文字セットが認証のデフォルトのエンコーディングと同じでないかぎり、認証は失敗します。

    標準の MySQL クライアントプログラムでは、先ほど説明したように、mysql_options() が呼び出される --default-character-set オプションがサポートされています。 さらに、セクション10.4「接続文字セットおよび照合順序」で説明したように、文字セットの自動検出もサポートされています。 C API に基づいていないコネクタを使用するプログラムでは、mysql_options() と同等のものがコネクタで提供されている場合があり、それを代わりに使用できます。 コネクタのドキュメントを確認してください。

    前述の注は、クライアントの文字セットとして許可されていない ucs2utf16、および utf32 には適用されません。

MySQL のインストールプロセスでは、セクション2.10.4「初期 MySQL アカウントの保護」 で説明されているように、付与テーブルに初期 root アカウントが移入されます。このアカウントにパスワードを割り当てる方法についても説明します。 その後、通常は CREATE USER, DROP USER, GRANTREVOKE などのステートメントを使用して、MySQL アカウントを設定、変更および削除します。 セクション6.2.8「アカウントの追加、権限の割当ておよびアカウントの削除」およびセクション13.7.1「アカウント管理ステートメント」を参照してください。

コマンドラインクライアントを使用して MySQL サーバーに接続するには、必要に応じて、使用するアカウントのユーザー名とパスワードのオプションを指定します:

shell> mysql --user=finley --password db_name

短いオプションを好む場合は、コマンドは次のようになります。

shell> mysql -u finley -p db_name

コマンドラインで --password または -p オプションの後にパスワード値を省略すると (図のように)、クライアントからパスワードの入力を求められます。 または、コマンドラインでパスワードを指定できます:

shell> mysql --user=finley --password=password db_name
shell> mysql -u finley -ppassword db_name

-p オプションを使用する場合、-p と次のパスワード値の間にスペースなしが存在する必要があります。

コマンド行でのパスワード指定は、セキュアでないと考えるべきです。 セクション6.1.2.1「パスワードセキュリティーのためのエンドユーザーガイドライン」を参照してください。 コマンド行でパスワードを指定しないようにするには、オプションファイルまたはログインパスファイルを使用します。 セクション4.2.2.2「オプションファイルの使用」およびセクション4.6.7「mysql_config_editor — MySQL 構成ユーティリティー」を参照してください。

ユーザー名、パスワード、およびその他の接続パラメータの指定に関する追加情報については、セクション4.2.4「コマンドオプションを使用した MySQL Server への接続」を参照してください。