MySQLでは,mysql
デ,タベ,スの用户
テ,ブルにアカウントが格納されます。アカウントは,ユーザー名およびユーザーがサーバーに接続できるクライアントホスト(複数の場合あり)に関して定義されます。アカウントはパスワ,ドを持っている場合もあります。用户
テブルでのアカウントの表示にいては,セクション6.2.2“権限システム付与テブル”を参照してください。MySQL 5.6では,認証プラグインがサポートされているため,アカウントは一部の外部認証方式を使用して認証できます。セクション6.3.7“プラガブル認証”を参照してください。
ユーザー名とパスワードがMySQLで使用される方法と,オペレーティングシステムで使用される方法との間には,いくつかの違いがあります。
MySQLで認証目的に使用されるユーザー名と,WindowsまたはUnixで使用されるユーザー名(ログイン名)とには,まったく関係がありません。Unixでは,ほとんどのMySQLクライアントがデフォルトで,現在のUnixユーザー名をMySQLユーザー名として使用してログインを試みますが,これは便宜上の目的に過ぎません。クラ电子邮箱アントプログラムでは,
- u
または——用户
オプションを使用して任意のユーザー名を指定することが許可されているため,簡単にデフォルトをオーバーライドできます。これは,ユーザー名を使用すればだれでもサーバーへの接続を試みることができることを意味するため,すべてのMySQLアカウントがパスワードを持っていなければ,どのような方法でもデータベースをセキュアにすることはできません。パスワードを持っていないアカウントにユーザー名を指定するユーザーはだれでも,正常にサーバーに接続できます。MySQLユ,ザ,名は,最大で16文字の長さまで指定できます。オペレーティングシステムのユーザー名は,MySQLユーザー名とは完全に無関係であるため,最大長が異なる可能性があります。たとえば,Unixユ,ザ,名は通常,8文字までに制限されています。
警告MySQLサーバーおよびクライアントでは,MySQLユーザー名の長さの制限がハードコードされているため,
mysql
デ,タベ,ス内のテ,ブル定義を変更してこれを回避しようとしても,効果がありません。セクション4.4.7 "mysql_upgrade- MySQLテブルのチェックとアップグレド"で説明する手順を使用する以外は,どのような方法でも
mysql
デ,タベ,ス内のテ,ブルは変更するべきではありません。その他の方法でMySQLのシステムテーブルを再定義しようとすると,未定義(および未サポート)の動作が発生します。サ、バ、は(
mysql.user
テーブルに格納されたパスワードと照合する)MySQLネイティブ認証を使用してクライアント接続を認証する際に,用户
テブルに格納されたMySQLパスワドを使用します。これらのパスワードと,オペレーティングシステムにログインするためのパスワードとには,まったく関係がありません。WindowsまたはUnixマシンにログWindowsンする際に使用される「外部」パスワードと,そのマシン上のMySQLサーバーにアクセスする際に使用されるパスワードとの間には,必要な関係はありません。サバがプラグンを使用してクラアントを認証する場合は,プラグンで実装されている認証方式で,
用户
テ,ブル内のパスワ,ドが使用される場合と,使用されない場合があります。この場合,MySQLサバへの認証を行う際に,外部パスワドも使用される可能性があります。MySQLでは独自アルゴリズムを使用して,
用户
テ,ブルに格納されたパスワ,ドが暗号化されます。この暗号化は,密码()
SQL関数で実装されたものと同じですが,Unixのログインプロセス時に使用されるものとは異なります。Unixのパスワ,ド暗号化は,加密()
SQL関数で実装されたものと同じです。密码()
および加密()
関数にいては,セクション12.13“暗号化関数と圧縮関数”を参照してください。MySQLバージョン4.1以降では,旧バージョンよりも強固な認証方式が採用され,接続プロセス時のパスワード保護が改善されています。Tcp / ipパケットが盗聴されたり,
mysql
デ,タベ,スが乗っ取られたりしてもセキュアです。(旧バ,ジョンでは,パスワ,ドが暗号化された形式で用户
テーブルに格納されますが,MySQLサーバーに接続する際に,暗号化されたパスワード値を知っていることが利用される可能性があります)。セクション6.1.2.4 " MySQLでのパスワドハッシュ"では,パスワ,ドの暗号化に,いて詳細に説明します。ユーザー名およびパスワードにASCII文字のみが含まれている場合は,文字セットの設定に関係なく,サーバーに接続できます。ユザ名またはパスワドにASCII文字以外が含まれているときに接続するには,クラアントは
MYSQL_SET_CHARSET_NAME
オプションと引数として適切な文字セット名を指定して,mysql_options ()
C API関数を呼び出すようにしてください。これにより,指定された文字セットを使用した認証が実行されます。それ以外の場合,サーバーのデフォルト文字セットが認証のデフォルトエンコーディングと同じでなければ,認証に失敗します。標準のMySQLクラescアントプログラムでは,先ほど説明したように,
mysql_options ()
が呼び出される——default-character-set
オプションがサポ,トされています。さらに,セクション10.1.4“接続文字セットおよび照合順序”で説明したように,文字セットの自動検出もサポ,トされています。C APIに基づいていないコネクタを使用するプログラムでは,mysql_options ()
と同等のものがコネクタで提供されている場合があり,それを代わりに使用できます。コネクタのドキュメントを確認してください。前述の注は,クラ
ucs2
、utf16
,およびutf32
には適用されません。
MySQLを。これらのアカウントの名前およびアクセス権限にいては,セクション2.10.2 "最初のMySQLアカウントのセキュリティ設定"で説明されています。ここでは,パスワ,ドを割り当てる方法に,いても説明されています。そのあと,通常は创建用户
、格兰特
,および撤销
などのステ,トメントを使用して,MySQLアカウントを設定,変更,および削除します。セクション13.7.1“アカウント管理ステ,トメント”を参照してください。
コマンド行クライアントを使用してMySQLサーバーに接続する場合は,使用するアカウントでの必要に応じて,ユーザー名とパスワードを指定します。
Shell > mysql——user=monty——password=密码db_name
短いオプションを好む場合は,コマンドは次のようになります。
Shell > mysql -u monty -p密码db_name
- p
オプションとそれに続くパスワ,ド値との間には,空白文字を入れないでください。
コマンド行で——密码
または- p
オプションに続く密码
値を省略した場合は,値を1指定するように求めるプロンプトがクラアントに表示されます。
コマンド行でパスワ,ドを指定することは,セキュアでないと考えるべきです。セクション6.1.2.1 "パスワドセキュリティのためのエンドユザガドラン"を参照してください。オプションファ@ @ルを使用すれば,コマンド行でパスワ@ @ドを指定することを回避できます。
ユ,ザ,名,パスワ,ド,およびその他の接続パラメ,タの指定に関する追加情報に,いては,セクション4.2.2 " MySQLサバへの接続"を参照してください。