PHPコマンドラインスクリプトを使用してデータベースをバージョン管理します。開発者が新しいデータベースパッチを追加するたびにこのスクリプトを実行します。
スクリプトは、MySQLコマンドラインでパッチを実行します。
system('mysql --user=xxx --password=xxx < patch.sql');
ただし、MySQL 5.6は次の警告を発行します。
警告:コマンドラインインターフェースでパスワードを使用すると安全でない場合があります
これは明らかに本当ですが、ユーザーにとって問題である場合とそうでない場合があります。
外部パスワードファイルに依存する必要がないことに注意してください。
最近のGA MySQLのバージョン、つまりversion5.6、 http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editorで説明されているように、mysql_config_editorコマンドを使用してこれを行うことができます.html
基本的には、ホストエイリアスを使用してユーザー/パスの資格情報を暗号化し、ホストエイリアスを使用して、この情報をホームディレクトリの構成ファイルに入れ、必要なときに、次のようなことをするのではなく、 :
mysqldump -uroot --password=mycleartextpass mydatabase > dumpfile.sql
あなたは代わりに書く:
mysqldump --login-path=myhostalias mydatabase > dumpfile.sql
それにより、パスワードを平文でスクリプトに入れることを避けます。
これを機能させるには、最初に(一度だけ)myhostalias
を次のように定義する必要があります。
mysql_config_editor set --login-path=myhostalias --Host=mysqlhost.localnet.com --user=root --password
必要に応じて、アカウントやホストごとに異なるログインパスを使用できます。あなたが私に尋ねればかなり良い考え。
注意として、この機能は5.6より前のバージョンには存在しない[〜#〜] [〜#〜]とは考えられません。
--defaults-file
または--defaults-extra-file
オプションを使用します。その中にユーザーIDとパスワードを指定できます。 /etc/my.cnf
と同じ形式です。
さらに読むと、外部のパスワードファイルに依存する必要がないと言いますが、それが唯一の本当に安全な方法です。それ以外のものは、プロセステーブルなどにトレースを残します。本当に必要な場合は、パスワードファイルをバージョン管理することもできます。それを600(または400)にし、mysqlまたはそれを実行しているユーザーのみが読み取り可能にします。
ごとに4つのオプションがありますhttp://dev.mysql.com/doc/refman/5.1/en/password-security-user.html
-pyour_pass
または--password=your_pass
オプションを使用する-p
または--password
オプションを使用します。この場合、クライアントプログラムはインタラクティブにパスワードを要求します。MYSQL_PWD
環境変数に保存します必要に応じて、MYSQL_PWD
を選択することもできますが、これは安全ではありません。実際には、--password
を使用してインタラクティブプロセスを生成し、パスワードをインタラクティブに送信する必要がありますが、これはこの問題の解決策としてはかなり複雑です。
PHPスクリプトがすでに開いているデータベース接続を持っている場合、mysqli_multi_query()
を使用して.sqlファイルをインポートしないのはなぜですか?.sqlファイルの構文がもちろん有効...