带有exec.Command的mysqldump导致1045错误,但在终端上工作正常

时间:2019-11-27 13:58:28

标签: mysql go

cmd初始化

cmd := exec.Command("mysqldump",
        "--column-statistics=0",
        "--default-character-set=utf8",
        "-P", port,
        "-h", host,
        "-u", username,
        fmt.Sprintf("-p'%s'", password),
        dbname)

我收到错误信息

  

mysqldump:[警告]在命令行界面上使用密码   可能不安全。 mysqldump:得到错误:1045:用户被拒绝访问   尝试连接时使用'user'@'ipaddress'(使用密码:是)

cmd.String()输出

  

/ usr / bin / mysqldump --column-statistics = 0 --default-character-set = utf8   -P端口-h主机-u用户名-p'密码'dbname

当我在同一台计算机的终端中执行cmd.String()输出时,一切都按预期工作。 这种行为可能是什么原因?

1 个答案:

答案 0 :(得分:0)

您可能有一个匿名用户''@'localhost'''@'127.0.0.1'

运行mysql> SELECT user, host FROM mysql.user;来查看您在mySQL上拥有哪些用户。

Documentation

  

当可能有多个匹配项时,服务器必须确定   他们使用。它可以按以下方式解决此问题:(...)

     

当客户端尝试连接时,服务器将浏览各行   [基于表mysql.user]的排序顺序。服务器使用第一行   与客户端主机名和用户名匹配。 (...)服务器使用   对具有最特定的主机值的行进行排序的排序规则   第一。文字主机名[例如'localhost']和IP地址为   最具体。

注意:空字符串在MySQL的身份验证算法中充当通配符