mysqldumpがシェルスクリプトでパスワードを要求する


9

特定のmysqlデータベースをダンプする簡単なシェルスクリプトを記述しました。問題は、私が提供してもパスワードを要求することです。mysql dbは、問題がある場合はバージョン5.0.27です。ここに私が使用している特定の行があります。

$MYSQLDUMP -u backup -p$MyPass $DB > $DEST/$FILE

私はいくつかのバリエーションを試しましたが、役に立ちませんでした。

回答:


4

$MyPassスクリプトで正しく設定されていないことを賭けます。mysqlコマンドラインツールのいずれかが、-p直後にパスワードが続かないを受け取った場合、パスワードを要求する必要があると想定します。一方、間違ったパスワード(または間違ったユーザー名など)を指定した場合、接続に失敗するだけです。

そのため、次のように、echoその行の先頭にコマンドを配置してスクリプトを再実行することをお勧めします。

echo $MYSQLDUMP -u backup -p$MyPass $DB

出力リダイレクトを削除することを忘れないでください。


1
doh、それは愚かな変数で、上記の行で小文字に対して設定されたときに大文字で渡されました。みんなありがとう
aduljr 2009

18

より良い解決策は、ユーザー名とパスワードを構成ファイルに保存し、その構成ファイルを指すことです。コマンドラインに入力すると、psを実行できるすべてのユーザーがサーバーのパスワードを見つけることができます。

--defaults-extra-file=/pathto/database.cnfをmysqlダンプに渡します。

構成ファイルは次のようにする必要があります。バックアッププロセスのみが構成ファイルを開くことができるように、ファイルシステムのアクセス許可を設定します。

[client]
host     = servername.domain.tld
user     = backup
password = strongpassword

更新(2016-06-29)mysql 5.6.6以降を実行している場合は、暗号化されたファイルに認証情報保存できるようにするmysql_config_editorツールを確認する必要があります。これについて私に言及してくれたGiovanniに感謝します。


バックアップを実行するための十分な権限のみを持つ、そのデータベースの特定のユーザー。このサーバーにアクセスできるのは、私ともう1人の2人だけです。しかし、私はそのcnfファイルのアイデアを利用します。そのオプションについて知らなかった。ありがとう
aduljr 2009

3
これは古い答えですが、パスワードを安全に渡す方法を検索するときにも表示され、他の投稿からもリンクされています。バージョン5.5を使用して、私は自分のパスワードがある場合など、設定ファイル内の単一ティックでstrongpasswordをカプセル化しなければならなかったaoeu1234、私の設定ファイルがありpassword = 'aoeu1234'、そうしないと、不正なエラーが発生します。
デイモン

.cnfファイルのクリアテキストにパスワードを含めない解決策があるかどうか疑問に思います。
Bob Stein

@Zoredache、 どのように「PSを実行することができます誰もがあなたのサーバーのパスワードを見つけることができますか」?
Pacerier、2015年

@デーモン、そしてあなたのパスワードにこれらの目盛りがある場合はどうなりますか?
Pacerier、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.