2012-04-24 115 views
3

當我從打開的Windows命令shell(Win7)運行以下命令時,它工作正常,並且備份被寫入我的文件系統。 MySQL數據庫位於遠程Linux服務器上。mysqldump - 用戶訪問被拒絕

"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)和運行批處理文件(並在最後一個「暫停」命令),我得到的錯誤「遇到錯誤: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 2012-04-24 14:41:56

+0

此外,「==」不起作用,只有一個等號起作用。 – HerrimanCoder 2012-04-24 14:49:02

+0

@SweatCoder - 道歉,我的錯字 - 相應修改。真高興你做到了。 – amaidment 2012-04-25 10:27:44

1

好吧,我想出了這個令人不快的事情。問題是我的密碼本身:4 $ 5%6^^ 7^& deZeYPdx5014VB3C#

當我更改密碼時,一切正常。有些角色在那裏插入Windows批處理文件執行。我懷疑這是%符號,但很難知道。必須是Windows中的錯誤,因爲它可以在命令shell中正常工作,但不在bat文件或cmd文件中。

+1

這裏沒有'錯誤'。一些字符在批處理文件中具有特殊含義(就像任何其他編程/腳本語言一樣)以實現各種可編程性。 – 2012-09-01 05:20:53

+0

當在BASH腳本中指定參數替換時,參數應該用單引號引起來,以防止對包含符號和字母組合的字符串進行額外評估(這裏$是一個問題)。 – PrplHaz4 2013-08-06 18:33:51

3

我一直在遇到類似的問題。我有4個數據庫,都備份正常。無論用戶嘗試使用哪一個用戶,第5個都不會備份 - 甚至是root用戶。事實證明,密碼中的^符號對我來說是個問題。一旦我將用戶密碼更改爲包含!而不是^一切立即奏效。

+0

正如其他人指出的那樣,將密碼用引號括起來對我來說是個訣竅(我把密碼保存在my.cnf文件中)。 – jFrenetic 2015-12-21 18:07:52

0

以下爲我工作,以前的密碼是不被接受這樣試了一下週圍沒有密碼的報價...

這裏是我的使用 mysqldump -h localhost -u用戶名-ppassword - 數據庫databasename>「C:\ backups \ dbbkup。%DATE:/ =%.bak」