python - 通过 python 运行 mysqldump 时出错-访问被拒绝

标签 python linux python-2.7 mysql

我有这个简单的代码:

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

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

mysqldump:出现错误:1045:用户“Dmitriy”@“localhost”的访问被拒绝(使用密码:YES 尝试连接时。

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

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

最佳答案

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

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

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

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

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

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

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

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

关于python - 通过 python 运行 mysqldump 时出错-访问被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19315030/

相关文章:

python - wxPython导入错误

python - 如何从 Pool.starmap_async() 中获取结果?

linux - libGLES_CM.so 有什么用?

linux - 如何使用matlab检查Linux中端口是否空闲

python - 如何在 sublime text 2 中配置 python 解释器以使其充当 IDLE python shell

python-2.7 - 如何获取在 RobotFramework 中可以找到特定值的行数?

python - 如何使用 django View 中所需的注销之类的东西?

python - numpy einsum 获取轴置换

c - 我对输出文件执行 "rm"后,C 程序将输出写入哪里?

python-2.7 - MRJob 中没有 mapper() 的 reduce() 会做什么?