2012-04-24 6 views
3

のために拒否されたが、それが正常に動作し、かつバックアップが私のファイルシステムに書き込まれます。 MySQLデータベースは、リモートのLinuxサーバーにあります。mysqldumpを - 私は開いているウィンドウのコマンドシェル(win7の)から次のコマンドを実行すると、アクセスがユーザー

"C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqldump" -h *******.com -u ******* -p***** --databases ******* > "C:\******\_Database\backups\DB_%date:~0,3%.bak" 

しかし、私はバッチファイル(whatever.bat)に同じコマンドを入れて、(末尾の「一時停止」コマンドを使って)batファイルを実行して、私はエラー「ガット・エラーを取得:1045:接続しようとすると、ユーザー 'me' @ 'c-24-2-64-138.hsd1.ut.comcast.net'(パスワードは使用しています)のアクセスが拒否されました。

batファイルから実行しているのに、なぜそれが開いてコマンドシェル内から動作しますが、しないのですか?どうすればこの作品を作れますか?

答えて

6

あなたは、単一引用符を使用してパスワードをエスケープする必要があります-p'password'

正しいコマンドは次のようになります。

"mysqldump" -h *******.com -u ******* -p'*****' --databases ******* > "C:\******\_Database\backups\DB_%date:~0,3%.bak" 
0

あなたが--user=**** --password=****を試してみましたか?

私はスクリプトでユーザー名とパスワードをピックアップするのmysqldumpを取得し、いくつかの問題を抱えて思い出して、この設定が働いていたことがわかりました。申し訳ありませんが、私は問題がなかったか、それらの原因何についての詳細を思い出すことができない怖い...

+0

amaidment:私はあなたの提案を試みましたが、同じエラーが表示されます。他のアイデア? – HerrimanCoder

+0

また、 "=="は機能しません.1つの等号のみが動作します。 – HerrimanCoder

+0

@SweatCoder - 申し訳ありません、私の一部の誤字 - それに応じて修正されました。あなたがうまく働いてうれしい。 – amaidment

1

[OK]を、私はこの腹立たしい事を考え出しました。問題は私のパスワードそのものでした:4 $ 5%6 ^^ 7^& deZeYPdx5014VB3C#

私はそのパスワードを変更するとすべてが機能しました。そこにある文字の中には、Windowsバッチファイルの実行を開始するものがあります。私はそれが%記号だと思うが、知るのは難しい。コマンドシェルからはうまく動作しますが、batファイルやcmdファイルではうまく動作しないという事実を考慮して、ウィンドウのバグでなければなりません。

+1

ここに「バグ」はありません。いくつかの文字はバッチファイルで(他のプログラミング/スクリプト言語と同様に)様々な種類のプログラマビリティを可能にするために特別な意味を持ちます。 –

+0

パラメータ置換を使用するBASHスクリプトで指定すると、シンボルと文字の組み合わせを含む文字列の追加の評価を防ぐために、パラメータをSINGLE引用符で囲む必要があります($が問題です)。 – PrplHaz4

3

私は同様の問題が発生しています。私は4つのデータベースをすべて正常にバックアップしています。私は何をしようとしても、たとえrootでもさえバックアップしません。パスワードの^記号が私の問題でした。私は一度、ユーザーのパスワードを変更するように変更しました! ^すべてはすぐに働いた。

+0

他の人が指摘していたように、パスワードを引用符で囲むことは私のためのトリックでした(私はmy.cnfファイルにパスワードを保存しました)。 – jFrenetic

0

以下はそのパスワードの前後に引用符なしでそれを試してみました以前にパスワードが受け入れされていなかった、私のために働いた...

ここで私はです使用してください mysqldump -h localhost -u username -ppassword - データベースデータベース名> "C:\ backups \ dbbkup。%DATE:/ =%。bak"

関連する問題