python:使用' MySQLdb'模块连接到远程mysql服务器

时间:2015-05-19 10:07:09

标签: python mysql linux

我有两台虚拟机。一个用作代理,一个用作主。 Master上安装了Mysql Server(禁止在Master上安装Mysql Client,这意味着我无法在Master上使用mysql命令行)。 Mysql服务器有一个默认用户' root'。现在我想编写一个使用' MySQLdb'的python脚本。 Agent上的模块。测试代码很简单。只是看得如下:

#!/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错误1045:拒绝用户访问权限@ root @ Agent ip'(使用密码:是)

所以我不知道为什么用户是' root @ Agent ip ',而不是Master上Mysql服务器的默认用户。谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

MySQL中有一个名为GRANT的命令。您必须为root @ AgentIP授予权限(其中AgentIP是您必须从中访问数据库的系统的IP。)

要在服务器的mysql客户端中运行的命令:

GRANT ALL on mydb.* to 'root'@'YourIP' identified by 'YourPassword'

只有这样,在远程系统中运行的MySQL服务器才会授予对数据库的访问权。

如果不确定IP详细信息,您还可以指定' root' @'%' ,

将允许来自任何地方的用户名为root的所有请求。这不是推荐的方式,但有这样的选择。