我有两台虚拟机。一个用作代理,一个用作主。 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服务器的默认用户。谁知道如何解决这个问题?
答案 0 :(得分:2)
MySQL中有一个名为GRANT
的命令。您必须为root @ AgentIP授予权限(其中AgentIP是您必须从中访问数据库的系统的IP。)
要在服务器的mysql客户端中运行的命令:
GRANT ALL on mydb.* to 'root'@'YourIP' identified by 'YourPassword'
只有这样,在远程系统中运行的MySQL服务器才会授予对数据库的访问权。
如果不确定IP详细信息,您还可以指定' root' @'%' ,
将允许来自任何地方的用户名为root的所有请求。这不是推荐的方式,但有这样的选择。