2017-06-05 50 views
0

我写了一个快速的python脚本来自动为朋友设置wordpress博客。我已经在我的OS X电脑上测试了这个脚本没有问题,但是当脚本被复制粘贴到一个linux服务器并运行时,脚本能够创建数据库,但是当它尝试创建用户并授予权限但我收到Python MySQLdb脚本在OS X上正常工作,复制到Linux服务器时权限被拒绝错误

"_mysql_exceptions.OperationalError: (1044, "Access denied for user 
'root'@'XXX.XXX.XXX.XXX' to database 'livetest'")" 

的脚本是:

db = MySQLdb.connect(host="ip", # your host 
        user="root",  # username 
        passwd="password") 
         # password 


# Create a Cursor object to execute queries. 
cur = db.cursor() 

# Select data from table using SQL query. 

cur.execute("CREATE DATABASE IF NOT EXISTS " +blogshortstr) 

cur.execute("GRANT ALL PRIVILEGES on " +blogshortstr +".*" + " " + "TO " +mysqluser+'@'+'ip'+ " " +'IDENTIFIED BY' + " " +mysqlpassword) 

cur.execute("FLUSH PRIVILEGES") 

db.commit() 
db.close() 
+1

这可能是用户的权限问题。 MySQL有两种类型的用户/访问 - 本地和远程。我想,你的linux服务器试图访问另一台主机上的数据库,因此它可能没有访问 – Sergius

+0

,但完全相同的代码连接到完全相同的MySQL服务器与完全相同的用户/密码在OS X但不是Linux的作品? –

+1

因为你的OS X和linux系统有不同的IP地址。 –

回答

0

意外得益于最终想通了这个问题到另一个岗位,我发现由于一个错字。

问题原来是双重的。

1)当我启用远程登录时,它添加了第二个root帐户。虽然root @ localhost用户拥有授权选项,但我的[email protected]却没有。 [email protected]仍然可以创建和删除表。添加授权选项使其工作。

2)至少在我使用的这个代码和python模块(MySQLdb)中没有任何地方记录在模块的文档中,用户名需要反引号(QWERTY键盘上的1旁边的键)和在授予所有特权时不会定期报价。我不知道为什么或者这对任何语言的MySQL连接器来说都是正常的事情。

也许这是显而易见的,我是一个白痴(这是我在Python中工作的第一件事,我几乎从未使用过MySQL)。也许它会帮助别人。

相关问题