2015-04-23 72 views
0

我试图从python脚本连接到unix中的mysql。我在脚本中提供了连接到mysql的密码,但终端仍然提示输入密码。这是我到现在为止:使用密码通过python执行unix命令

import os 
from subprocess import Popen, PIPE 

passwd = "user" 
command = "mysql -u root -p" 

proc = Popen(command.split(), stdin=PIPE) 
proc.communicate(passwd+'\n')[1] 

任何人都可以建议我在这里做错了什么。或者有更好的方法来做到这一点。

+1

许多应用程序不使用密码提示'stdin'出于安全原因。可能的重复http://stackoverflow.com/questions/5225542/how-can-i-interact-with-another-program-in-python – cdarke

+0

从mysql文档:*在命令行中指定密码应被视为不安全。您可以使用选项文件来避免在命令行上输入密码。* https://dev.mysql.com/doc/refman/5.6/en/mysql-command-options.html – cdarke

回答

0

我试图在Ubuntu 14.04脚本。使用shell脚本在终端启动MySQL非常容易。 这里是代码..

#!/bin/bash  
user=('root') 
pass=('XXX') 
mysql -u $user -p$pass 
echo 'success' 

只需运行该代码&你可以在终端启动MySQL ...

+0

围绕用户和通过值的括号是什么? – cdarke

+0

它表示变量包含一个常量值。像PYTHON中的Tuple ... –

+0

真的吗?这不会为我创建一个常量,在bash中我使用'declare -r'。在哪个版本的'bash'中? – cdarke

1

你可以试试这个:

command = "mysql -u root -p" + passwd 
+0

@harshul gandhi您好,请标记这个答案如果你发现它是正确的。谢谢 –

+0

试过,它提示我在终端上输入密码 –

+0

对于你的情况,该命令看起来像:“mysql -u root -puser”。 –