【问题标题】:mysqldump access deniedmysqldump 访问被拒绝
【发布时间】:2011-08-11 15:24:51
【问题描述】:

当我尝试从 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

使用输出文件:''

使用分隔符:;

服务器版本: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

【问题讨论】:

    标签: mysqldump


    【解决方案1】:

    问题是需要额外的访问权限才能在 C:/ 位置创建文件,因此请尝试使用其他类似的方法来解决: mysqldump -u root -p cricket classics > C:\Users\habib_s9ayvfl\Desktop\classics.sql

    【讨论】:

      【解决方案2】:

      尝试使用此命令

      mysqldump --user=root -p --host=127.0.0.1 --databases database_name [database_name_2,...] > dump.sql
      

      【讨论】:

        【解决方案3】:

        另一个可能的原因可能是您尝试创建转储的位置。 写 mysqldump -u[username] -p yourdb > D:\backup\sqlfile.sql 而不是 mysqldump -u[username] -p yourdb > sqlfile.sql 解决了我的问题。

        【讨论】:

          【解决方案4】:

          在 Windows 中,我通过创建一个目录然后将 *.sql 文件转储到备份目录中来解决它。

          C:\backup

          命令没有问题:
          去掉 [ ] 方括号

          mysqldump -u[username] -p[password] -h[ip] yourdb > C:\backup\sqlfile.sql

          它对我有用:)

          【讨论】:

          • 我遇到了同样的问题,因为我试图在 C:\ 中创建 de 备份,当将文件系统路由更改为其他时它工作了!
          【解决方案5】:

          这对我有用 - 以管理员身份运行 cmd 行。 -p后不要输入任何密码,系统会自动提示您输入密码并且有效。

          【讨论】:

            【解决方案6】:

            我知道这个话题很老了,但我碰巧遇到了同样的问题。我发现问题只是密码中使用的特殊字符。事实上,它们必须用反斜杠转义:--password=123\@456 或使用符号引号 --password='123@456'

            【讨论】:

            • 这是为我做的。感谢您就旧问题发布不同的答案!在 Linux 上必须添加引号,但在 Windows 上没有引号。
            • 谢谢,这也解决了我的问题。结束于-p'P@$$W0RD'
            【解决方案7】:

            我对通过 Plesk 创建的数据库用户遇到了同样的问题。用户拥有单个数据库的权限。如果我指定数据库名称,则会收到上述错误。如果我为所有数据库指定-A,则转储工作。

            【讨论】:

              【解决方案8】:

              您必须以管理员身份运行 CMD.EXE:

              右键单击 cmd.exe --> 以管理员身份运行,然后键入您的命令:

              mysqldump -u[username] -p[password] -h[ip or name] yourdatabasename > c:\sqlfile.sql

              它应该可以正常工作。

              【讨论】:

              • 这拯救了我剩下的头发!
              【解决方案9】:

              我认为您在使用 -p 或使用 --password 时必须丢失 = :

              --password[=password], -p[password]

              连接时使用的密码 服务器。如果你使用短 选项形式(-p),你不能有 选项和选项之间的空间 密码。如果您省略密码 --password 或 -p 后面的值 命令行上的选项,你是 提示一个。指定一个 命令行上的密码应该是 被认为不安全。见第 6.6 节, “保护您的密码安全”。

              【讨论】:

              • 我试过你的方法。它仍然在抱怨。由于我的密码包含特殊符号“@”,因此它看起来像 123@456。如果我使用你的方法,使用-p时丢失=,mysql无法正确检测到用户。它显示:mysqldump: Got error: 1044: Access denied for user 'test'@'%' to database.
              • 这不是我的方法,它是 mysqldump 的官方文档 :) 你试过 --password 和 = 符号吗?
              • 是的。我都试过了。如果我使用文档方法,--password[=password] 或 -p[password],mysql 无法检测到用户。它抱怨:mysqldump: Got error: 1044: Access denied for user 'test'@'%' to database.
              • 我在您的 mysqldump 中看到您使用的主机与连接到 mysql 时使用的主机不同。一个是 10.64.1.2,一个是 10.64.1.1。另外,你允许mysql远程连接吗?
              • 我想是的。在机器 10.64.1.1 上,我运行:mysql --user=test -p[password]。有用。我认为罪魁祸首是密码中的特殊符号@。如何处理?
              【解决方案10】:

              连接选项没有=(等号)。您想要以下内容。

              mysqldump -u test -ppassword -h 10.64.1.2 ...
              

              查看the docs 了解有关其他选项的更多详细信息。

              【讨论】:

              • 它仍然不起作用,正如蒂姆所说,当你指定数据库名称时,我遇到了这个错误,导出所有数据库的工作正常
              • 请注意 ...,您需要添加其余选项。
              • --password=foo 是长格式,-pfoo 是短格式。两者都有效。
              • 找到了解决方案——这个错误是因为我的用户没有权限锁定表
              猜你喜欢
              • 2014-07-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-12-31
              • 2013-12-02
              • 1970-01-01
              • 1970-01-01
              • 2014-08-10
              相关资源
              最近更新 更多