自分のパスワードを他のユーザがわかるような方法で指定することは危険です。 クライアントプログラムを実行する際、パスワードの指定に使用できる方法を以下に示します。それぞれの危険度についても示します。
一般ユーザに mysql.user
テーブルへのアクセス権を与えてはいけない。暗号化されているパスワードがわかっただけで、そのユーザとしてログインすることが可能になる。パスワードの暗号化は、本当のパスワードを他人に見られないようにするためだけのものである(他のアプリケーションで似たパスワードを使用する場合に備えて)。
-pyour_pass
オプションまたは
--password=your_pass
オプションをコマンドラインで使用する。これは便利だが安全ではない。他のユーザがコマンドラインを表示するため起動する
ps
などのシステムステータスプログラムにはパスワードが見えてしまう(MySQL
クライアントは通常、初期化シーケンスにおいてコマンドライン引数をゼロで上書きするが、短いインターバルがあってその間は見えてしまう)。
-p
オプションまたは
--password
オプションを使用する(your_pass
値を指定しない)。この場合、クライアントプログラムは端末からのパスワード入力を求める。
shell> mysql -u user_name -p
Enter password: ********
‘*
’
文字はパスワードを表す。
この方法だと他のユーザには見えないため、コマンドラインでパスワードを指定するよりも安全である。ただし、このパスワード入力方法は、対話式で実行するプログラムにのみ適している。非対話式で実行するスクリプトからクライアントを起動する場合、端末からパスワードを入力する機会がない。システムによっては、スクリプトの最初の行を間違ってパスワードと解釈してしまうものもある。
設定ファイルにパスワードを保存する。たとえば、自分のホームディレクトリにある
.my.cnf
ファイルの
[client]
セクションにパスワードを記入できる。
[client] password=your_pass
パスワードを .my.cnf
に保存する場合、だれもそのファイルを読み書きできないようにしておくことが必要である。ファイルのアクセスモードは
400
または 600
にしておくこと。 See
項4.1.2. 「my.cnf
オプション設定ファイル」。
MYSQL_PWD
環境変数にパスワードを保存できる。しかしこの方法は非常に危険なので、使用すべきではない。
ps
のバージョンによっては、実行中のプロセス環境を表示するオプションがある。MYSQL_PWD
を設定していればだれにでもパスワードを見られてしまう。そのようなバージョンの
ps
がないシステムでも、プロセス環境を表示する他の方法がないと想定するのは危険である。
See 付録 F. 環境変数。
以上のことを総括すると、最も安全な方法は、クライアントプログラムにパスワードを要求させるか、適切に保護された
.my.cnf
ファイルにパスワードを指定することです。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.