user
権限テーブルへのアクセスを一般ユーザには与えてはいけません。
MySQL サーバに接続するクライアント プログラムを実行するときには、別のユーザにそのパスワードを知られない最大の努力をしてください。ここでは、クライアント プログラムを実行するときに指定するパスワードの使用方法とともに、それぞれに付随するリスクについて説明します。
コマンドラインで
-p
または
your_pass
--password=
などのオプションを使用する。
your_pass
shell> mysql -u francis -pfrank db_name
この方法は簡単ですが、安全ではありません。ps などのシステム ステータス プログラムでパスワードが可視的になります。このようなプログラムは別のユーザがコマンドラインを呼び出す可能性があります。MySQL クライアントでは通常、初期シーケンス中にコマンドラインのパスワード引数をゼロで書き換えます。しかし、これには値が可視的になる微妙なインターバルがあります。SystemV Unix など、システムによっては、ps でパスワードが可視状態になる問題があるので、この方法はお勧めしません。
パスワード指定なしで、-p
または --password
オプションを使用する。(your_pass
値の指定を行なわない。)この場合、クライアントプログラムが端末からのパスワード入力を要求する。
shell> mysql -u francis -p db_name
Enter password: ********
‘*
’
文字はパスワードの入力場所です。パスワードは入力時には表示しません。
コマンドラインからパスワードを指定するよりも、この方法でパスワードを入力する方が安全です。これは別のユーザに対して可視的ではありません。しかし、このパスワード入力方法は、相互的に実行するプログラムだけで使用することをお勧めします。相互的ではない場合に、スクリプトからクライアントを呼び出すと、端末からパスワードを入力することができません。システムによっては、スクリプトの最初のラインが、読み込んだパスワードが不正確になる場合があります。
オプション
ファイルにパスワードを保存する。Unix
例:ホーム ディレクトリにある
.my.cnf
ファイルの
[client]
にパスワードをリストする。
[client] password=your_pass
.my.cnf
にパスワードを保存する場合、ファイルを自分以外の誰からにもアクセスができないようにします。ファイルのアクセス
モードを 400
または
600
に設定して確証します。
shell> chmod 600 .my.cnf
項3.3.2. 「オプションファイルの使用」で、オプション ファイルに関する記述を参照してください。
MYSQL_PWD
環境変数でパスワードを保存する。この方法で
MySQL
パスワードを指定することは、非常に危険
です。ps
のバージョンによっては、実行プロセスの環境を表示するオプションがあるため、MYSQL_PWD
でパスワードを設定すると、ps
を実行している別のユーザに露呈することになります。ps
がないシステムでも、処理環境を別のユーザに露呈する可能性があります。項2.14. 「環境変数」
を参照してください。
結論としては、クライアント プログラムのプロンプトでパスワード確認するか、セキュリティを確保したオプション ファイルに適切にパスワードを指定することが、最も安全な方法です。