PyMySQL变量在一个数据库中使用GRANT ALL PRIVILEGES

时间:2016-05-21 22:04:22

标签: python mysql pymysql

我希望使用pymysql模块从用户输入中自动创建数据库和用户。

我希望在一个数据库中为新创建的用户授予所有权限:

cur.execute("GRANT ALL PRIVILEGES ON %s.* to %s@%s IDENTIFIED BY %s", (DB_NAME,DB_USER, DB_HOST, DB_PASS))

我收到以下错误。

pymysql.err.ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''test26'.* to 'test26'@'localhost' IDENTIFIED BY 'test26'' at line 1")

1 个答案:

答案 0 :(得分:1)

您不能使用查询参数来转义数据库或表名。那些使用反引号作为转义字符,而不是引号:

GRANT ALL PRIVILEGES ON `db_name`.* ...

因此,对于数据库和服务器部分,您需要使用字符串操作,这意味着您需要确保数据已正确清理,例如仅允许使用字母数字字符作为数据库名称。