次のコマンドを使用して、MySQLデータベースをバックアップするスクリプトを作成しました。
mysqldump --opt --all-databases -u user -pmypassword > myDump.sql
Cronはそれを毎晩起動し、その結果を別のサーバーにscpします。 mypassword
は私のスクリプトに平文で表示され、誰でも適切な権限でそれを見ることができます。/cmdの問題についても言われました(cmdの実行を確認できる場所)。
MySQLのドキュメントは言う:
コマンドラインでパスワードを指定することは安全ではないと考えるべきです。 7.6項「パスワードの保護」を参照してください。
私はこの魔法の7.6セクションをどこにも見つけていません。
Mysqldumpとパスワードの自動セキュリティに対処するための良い方法は何ですか?
MySQLドキュメントの引用( http://dev.mysql.com/doc/refman/5.1/en/password-security-user.html ):
パスワードをオプションファイルに保存します。たとえば、Unixでは、ホームディレクトリの.my.cnfファイルの[client]セクションにパスワードをリストできます。
[client] password=your_pass
パスワードを安全に保つために、自分以外の誰もがファイルにアクセスできないようにする必要があります。これを確実にするには、ファイルアクセスモードを400または600に設定します。次に例を示します。
Shell> chmod 600 .my.cnf
コマンドラインからパスワードを含む特定のオプションファイルに名前を付けるには、
--defaults-file=file_name
オプション、ここでfile_name
はファイルへの絶対パス名です。
上記のSahilの回答に追加するには、--defaults-extra-fileを使用します
--defaults-extra-fileは、標準のオプションファイルに加えて、単一の特定のオプションファイルを読み取るようにプログラムに指示するために使用されます。
一方、デフォルトのmy.cnfファイルの代わりに--defaults-fileが読み取られます。
受け入れられた回答は、パスワードをプレーンテキストファイルに保存します。このファイルは、管理(ルート)アクセス権を持つユーザーなら誰でも読み取ることができます。データベースが共有ホスティング環境にある場合、これは望ましくありません。
より良いオプションは、mysql_config_editor
を使用して、mysqldump
という名前の暗号化されたログインパスを作成することです。 MySQLドキュメント によると:
mysql_config_editorは.mylogin.cnfファイルを暗号化するため、クリアテキストとして読み取ることができず、クライアントプログラムによって復号化されたときの内容はメモリ内でのみ使用されます。このようにして、パスワードを非クリアテキスト形式でファイルに保存し、コマンドラインや環境変数で公開する必要なく、後で使用することができます。
次のコマンドは、mysqldump
ログインパスを作成します。
mysql_config_editor set --login-path=mysqldump --Host=your_hostname --user=your_username --password
パスワードの入力を求められ、作成したログインパスは暗号化された形式で保存されます。 mysqldump
は、--login-path
コマンドラインオプションで別のログインパスを指定しない限り、今後このログインパスを呼び出すときに自動的に使用します。
暗号化されたログインパスを作成した後、mysqldump
を呼び出す方法を次に示します。
mysqldump database_name > output_file
ここでのすべての回答はバラバラなので、共有完全なコマンドこれは必須であり、データベースのサイズが大きい場合に使用する必要があります--single-transaction
および--lock-tables
はここで非常に重要です
mysqldump --defaults-extra-file=/home/dangi/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases (or) DATABASE | gzip > OUTPUT.gz;
注:回答はAvibodhaとsahilの回答に追加されたものであり、彼らはすでに要点を述べています。私はimportant measure should be taken at time of backing up live database
良い答えは パスワードを安全に保つ をチェックしてください。パスワードをmy.cnfファイルに保存して、そのファイルの権限を変更し、パスワードを安全に保つことができます。
このページの最後のコメントも確認できます。
MYSQL_PWD = "tinkerbell" mysqldump -ubackup --all-databases> dump.sql
MySQLの2つのバージョンがインストールされていて、mysqldumpを実行するときにどのmy.iniが使用されているかわからない場合、Windowsマシンで次の方法を使用できます。これも役立ちます。
1、C:\ ProgramData\MySQL\MySQL Server 5.6\my.ini、細かい[クライアント]、次のように置き換えます:
[client]
user=my_user
password=my_password
2、次のコマンドを使用します:
C:\ Program Files\MySQL Server 5.6\bin> mysqldump --default-extra-file = "C:\ ProgramData\MySQL\MySQL Server 5.6\my.ini" -u my_user db_to_export> db_to_export.sql