当我尝试使用ssh中的mysqldump进行备份时, 我在机器10.64.1.1上运行以下命令。它给出了以下错误。
mysqldump --user=test -p=password --host=10.64.1.2 --tab=. databasename tablename
mysqldump: Got error: 1045: Access denied for user 'test'@'10.64.1.1' (using password: YES)
但是,我可以使用相同的用户和密码访问mysql。
mysql --user=test -p[password]
当前用户:test@10.64.1.1
SSL:Not in use
当前寻呼机:stdout
使用outfile:''
使用分隔符:;
服务器版本:5.0.91-50-log Percona SQL Server, Revision 73 (GPL)
协议版本:10
连接:10.64.1.2 via TCP/IP
更新
如果我执行以下mysql文档:--password[=password]
或-p[password]
。
由于我的密码包含特殊符号@
,因此Mysql无法正确检测用户。它抱怨道:
mysqldump: Got error: 1044: Access denied for user 'test'@'%' to database
答案 0 :(得分:30)
您必须以管理员身份运行CMD.EXE:
右键单击cmd.exe - >以管理员身份运行,然后键入命令:
mysqldump -u [username] -p [password] -h [ip或name] yourdatabasename> C:\ sqlfile.sql
它应该可以正常工作。
答案 1 :(得分:18)
我认为在使用-p或使用--password:
时必须丢失=- 密码[=密码], - p [密码]
连接时使用的密码 服务器。如果你使用短 选项表格(-p),你不能拥有 期权与期权之间的空间 密码。如果省略密码 --password或-p之后的值 你是命令行上的选项 提示一个。指定一个 命令行上的密码应该是 被认为是不安全的。见6.6节, “保证密码安全”。
答案 2 :(得分:11)
我知道这个话题很老,但我碰巧遇到了同样的问题。我发现问题只是密码中使用的特殊字符。事实上,他们必须使用反斜杠进行转义:--password=123\@456
或使用单引号--password='123@456'
答案 3 :(得分:8)
我通过Plesk创建的数据库用户遇到了同样的问题。用户具有单个数据库的权限。如果我指定数据库名称,我会得到上面提到的错误。如果我为所有数据库指定-A
,则转储工作。
答案 4 :(得分:5)
在Windows中,我通过创建目录然后将* .sql文件转储到备份目录中来解决它。
C:\backup
命令没有问题:
删除[]方括号
mysqldump -u[username] -p[password] -h[ip] yourdb > C:\backup\sqlfile.sql
它对我有用:)
答案 5 :(得分:4)
另一个可能的原因可能是您尝试创建转储的位置。
写mysqldump -u[username] -p yourdb > D:\backup\sqlfile.sql
代替mysqldump -u[username] -p yourdb > sqlfile.sql
解决了我的问题。
答案 6 :(得分:1)
答案 7 :(得分:0)
对我来说有什么用 - 运行cmd行作为管理员。 在-p之后不要输入任何密码,系统会自动提示您输入密码并且它可以正常工作。
答案 8 :(得分:0)
尝试使用此命令
mysqldump --user=root -p --host=127.0.0.1 --databases database_name [database_name_2,...] > dump.sql