我正在使用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")

最佳答案

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

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


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

关于python - 在一个数据库中使用GRANT ALL PRIVILEGES的PyMySQL变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37368464/

10-12 18:54