無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 4 データベース管理 :: 4.8 MySQL ユーザ アカウント管理 :: 4.8.1 MySQL ユーザ名とパスワード
« 4.8 MySQL ユーザ アカウント管理

4.8.2 MySQL への新規ユーザの追加 »
Section Navigation      [Toggle]
  • 4.8 MySQL ユーザ アカウント管理
  • 4.8.1 MySQL ユーザ名とパスワード
  • 4.8.2 MySQL への新規ユーザの追加
  • 4.8.3 MySQL ユーザの削除
  • 4.8.4 ユーザ リソースの制限
  • 4.8.5 パスワードの設定
  • 4.8.6 パスワードのセキュリティ
  • 4.8.7 接続安全

4.8.1. MySQL ユーザ名とパスワード

MySQL アカウントをサーバ接続が可能なユーザからのユーザ名とクライアント ホスト、またはホスト、と定義します。アカウントにはパスワードがあります。MySQL で使用するユーザ名とパスワードは、オペレーティング システムで使用するものとは特徴的な違いがあります。

  • MySQL で認証目的に使用するユーザ名は、Windows や Unix などで使用しているユーザ名 (ログイン名) とは関係がありません。Unix の場合は、MySQL クライアントがデフォルトで、現在使用している Unix のユーザ名を MySQL のユーザ名としてログインを行なうことがありますが、これは利便性との兼ね合わせです。クライアント プログラムで -u または --user のオプションでユーザ名を指定することができるため、デフォルト値は簡単に書き換えることができます。しかし、これは、誰でも適当なユーザ名を使用してサーバ接続を試行できるという意味でもあるため、すべての MySQL アカウントにパスワードをつけることで、データベースの安全を確保します。つまり、パスワードなしのアカウントのユーザ名を指定できる者であれば、サーバへの接続に成功します。

  • MySQL ユーザ名には、最大 16 文字まで使用できます。これは、MySQL のサーバとクライアントでハードコード (決め打ち) しています。mysql データベースのテーブル定義を変更するなどして、この文字制限を回避しないでください。

    注意:mysql データベースのテーブルは、MySQL AB による指示がない限り、絶対に改造しないでください。(項4.5.4. 「mysql_upgrade ? MySQL アップグレードのテーブル チェック」 を参照のこと。) MySQL のシステム テーブルの再定義を試行すると、予期しない結果を招く恐れがあります。

    オペレーティング システムのユーザ名は、MySQL ユーザ名とは完全に無関係です。最大文字数も異なります。たとえば、 Unix ユーザ名の最大文字数は、8 文字です。

  • MySQL パスワードは、オペレーティング システムのログイン パスワードとは別物です。Windows や Unix のマシンにログインするパスワード、およびそのマシンにある MySQL サーバへのアクセスに使用するパスワードとは一切無関係です。

  • MySQL では、Unix ログインプロセスのアルゴリズムとは別のアルゴリズムで、パスワードを暗号化する。MySQL のパスワード暗号化には、PASSWORD() SQL 関数、Unix のパスワード暗号化には、ENCRYPT() SQL 関数です。 PASSWORD() 関数と ENCRYPT() 関数の詳細については、項11.10.2. 「暗号化関数と圧縮関数」 を参照してください。注意: バージョン 4.1 以降のMySQL は、接続時のパスワード保護に、より高度な認証方式を採用しています。これは、TCP/IP パケットの盗聴や、mysql データベースのキャプチャが行なわれた場合でも、セキュリティを保持できるようになっています。初期バージョンでは、パスワードは user テーブルに暗号化して保存していますが、暗号化パスワード値に関する知識は MySQL サーバ接続に通用します。

MySQL をインストールするとき用に、権限テーブルには初期設定のアカウント セットを投入しています。そのアカウントには名前とアクセス権限があります。パスワードの割り与て方法に関しては、項2.10.3. 「最初の MySQL アカウントの確保」 を参照してください。その後、セットアップを行い、GRANT や REVOKE などのステートメントで MySQL アカウントの変更や削除などを行ないます。詳細は、項12.5.1. 「アカウント管理ステートメント」 を参照してください。

コマンドライン クライアントで MySQL サーバに接続するときは、ユーザ名とパスワードを使用するアカウントに指定します。

shell> mysql --user=monty --password=guess db_name

短文のオプションを使用すると、コマンドは次のようになります。

shell> mysql -u monty -pguess db_name

-p オプションと後続のパスワード値の間には、空白はありません。項4.7.4. 「MySQL サーバへの接続」 を参照してください。

前述のコマンドには、コマンドラインでパスワードを入れています。これは、セキュリティ面でのリスクを伴います。詳細は 項4.8.6. 「パスワードのセキュリティ」 を参照してください。この問題を解決するには、パスワード値を入れずに、--password または -p オプションを指定します。

shell> mysql --user=monty --password db_name
shell> mysql -u monty -p db_name

オプションにパスワード値がない場合、クライアント プログラムがプロンプトを出力し、パスワードの入力を待機します。ここの例示では、パスワード オプションに空白 (スペース) を入れて区切っているため、db_name はパスワードとは解釈しません。

オペレーティング システムによっては、MySQL がパスワードを呼び出すときに使用するライブラリ ルーチンで、入力するパスワードは最大 8 文字であることを自動的に制限します。これは、システム ライブラリでの問題で、MySQL とは関係ありません。MySQL では内部的にパスワードの文字数を制限することはありません。この問題を回避するには、MySQL パスワードを変更しますが、そのときは、8 文字よりも少ない文字数にするか、またはオプション ファイルにパスワードを入力します。

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.