【问题标题】:Error running mysqldump via python - access denied通过 python 运行 mysqldump 时出错 - 访问被拒绝
【发布时间】:2013-10-11 09:44:08
【问题描述】:

我有这个简单的代码:

cmd = ["mysqldump", "-u Dmitriy", "-pMyPass", "dmitrii"]
p = subprocess.Popen(cmd, stdout = file)

如果我尝试执行它 - 我得到一个错误:

mysqldump: Got error: 1045: Access denied for user ' Dmitriy'@'localhost' (using password: YES when trying to connect.

如果我将此 (mysqldump -u Dmitriy -pMyPass dmitrii) 复制粘贴到命令行 - 一切正常。

有什么建议为什么会发生这种情况?

【问题讨论】:

    标签: python linux python-2.7 mysqldump


    【解决方案1】:

    在我的机器上,我可以通过删除 -u 和用户名之间的空格来修复它。

    cmd = ["mysqldump", "-uDmitriy", "-pMyPass", "dmitrii"]
    

    编辑:只是想添加一些推理

    列表中的每个参数都被转义。所以你的第一个命令更像是:

    mysqldump '-u Dmitriy' '-pMyPass' 'dmitrii'
    

    如果你从命令行尝试,你会看到它失败并出现同样的错误,而这有效

    mysqldump '-uDmitriy' '-pMyPass' 'dmitrii'
    

    我猜这与 mysql 中使用的参数解析器有关。两个参数形式('-u' 后跟 'Dmitriy')将去除空格(这是有道理的)。如果你给它一个单一的形式('-u Dmitriy')你对它说 - 用户名前面有一个空格。

    【讨论】:

    • 自从你发布以来我一直在尝试但我需要 10 分钟才能接受。
    • 啊有趣 - 没有意识到这一点。
    猜你喜欢
    • 2020-03-28
    • 2011-08-11
    • 2014-07-07
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2023-03-07
    • 2022-08-16
    相关资源
    最近更新 更多