【发布时间】:2017-09-08 21:58:10
【问题描述】:
我正在尝试使用 PythonAnywhere 在线托管 Python/Mysql 项目。当我尝试使用以下方式连接数据库时:(主机和密码明显更改)
conn = mysql.connector.connect(host='host',user="BobbyQ",password='password',db='mm-database')
我收到此错误:
mysql.connector.errors.ProgrammingError: 1044 (42000): Access denied for user 'BobbyQ'@'%' to database 'mm-database'
如果我从 Mysql 控制台运行 SHOW GRANTS,我会得到:
mysql> SHOW GRANTS;
+------------------------------------------------------------------------------------------------+
| Grants for BobbyQ@% |
+------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'BobbyQ'@'%' IDENTIFIED BY PASSWORD <secret> WITH MAX_USER_CONNECTIONS 3 |
| GRANT ALL PRIVILEGES ON `BobbyQ$default`.* TO 'BobbyQ'@'%' |
| GRANT ALL PRIVILEGES ON `BobbyQ$mm-database`.* TO 'BobbyQ'@'%' |
+------------------------------------------------------------------------------------------------+
此时我应该能够连接到数据库,但我不知道为什么不能。我该如何解决?
【问题讨论】:
-
你能用mysql命令行工具从同一台机器连接吗?
-
您是远程连接还是通过
localhost连接?如果它是本地的,您还需要为@localhost添加一个条目。 -
@tadman 我正在远程连接(我正在使用 PythonAnywhere 提供的在线控制台)
-
@Flexo 你的具体意思是什么?编辑对不起,我误解了,因为我没有尝试(我以为我可以从 mysql 命令行工具连接,但我不能)。当我输入
USE mm-database;进入 mysql 控制台时,我得到同样的错误:ERROR 1044 (42000): Access denied for user 'BobbyQ'@'%' to database 'mm' -
已解决。我更改了数据库名称(我之前尝试过,但它不起作用,现在它起作用了)