2012-04-24 78 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”