【发布时间】:2015-07-31 02:26:47
【问题描述】:
我有两个虚拟机。一个用作代理,一个用作主控。 Master上安装了Mysql Server(Master上禁止安装Mysql Client,这意味着我不能在Master上使用mysql命令行)。 Mysql 服务器有一个默认用户“root”。现在我想编写一个在代理上使用'MySQLdb'模块的python脚本。测试代码很简单。如下图:
#!/usr/bin/python
import MySQLdb
def main():
try:
conn=MySQLdb.connect(host=master ip,user='root',passwd='xxx',db='xxx',port=3306)
cur=conn.cursor()
count = cur.execute('select * from table')
print count
cur.close()
conn.close()
except MySQLdb.Error,e:
print "Mysql Error %d: %s" % (e.args[0], e.args[1])
if __name__ == "__main__":
main()
但是,当我在 Agent 上执行时,出现错误:
Mysql Error 1045: Access denied for user 'root@Agent ip'(using password: YES)
所以我不知道为什么用户是'root@Agent ip',而不是Master上Mysql server的默认用户。有谁知道如何解决这个问题?
【问题讨论】:
-
为什么要设置 host=master ip ?
-
你已经用
user='root'指定了用户名,mysql使用username@host作为用户,所以用户是root@Agent_ip。不是MySQLdb的问题,用mysql客户端登录也会有同样的问题。