当我从打开的Windows命令shell(Win7)运行以下命令时,它运行正常,备份将写入我的文件系统。 MySQL数据库位于远程Linux服务器上。
"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文件(最后使用“pause”命令)时,我收到错误“获取错误:1045:用户拒绝访问”尝试连接时,“ me ”@“c-24-2-64-138.hsd1.ut.comcast.net”(使用密码:是)。
为什么它在open命令shell中运行,但从bat文件运行时却没有?我怎样才能做到这一点?
答案 0 :(得分:6)
您应该使用单引号转义密码:-p'password'
。
正确的命令是:
"mysqldump" -h *******.com -u ******* -p'*****' --databases ******* > "C:\******\_Database\backups\DB_%date:~0,3%.bak"
答案 1 :(得分:3)
我一直遇到类似的问题。我有4个数据库,所有备份都很好。无论我尝试过哪个用户 - 甚至是root用户,第五个都不会备份。事实证明密码中的^符号对我来说是个问题。一旦我更改了用户密码就包含了!而不是^一切都立即起作用。
答案 2 :(得分:1)
好的,我想出了这个令人生气的事情。问题是我的密码本身:4 $ 5%6 ^^ 7 ^& deZeYPdx5014VB3C#
当我更改密码时,一切正常。那里的一些字符可以解决windows批处理文件的执行问题。我怀疑它是百分号,但很难知道。必须是Windows中的一个错误,因为它在命令shell中工作正常但在bat文件OR cmd文件中没有。
答案 3 :(得分:0)
您是否尝试过--user=**** --password=****
?
我记得有一些问题让mysqldump在脚本中获取用户名和密码,并发现此设置有效。对不起,但我担心我不记得更多关于问题是什么或是什么导致他们......
答案 4 :(得分:0)
以下为我工作,之前密码未被接受所以尝试了没有密码周围的引号...
这是我使用的 mysqldump -h localhost -u username -ppassword --databases databasename> “C:\备份\ dbbkup%日期:/ =%BAK”