尝试访问MySQL数据库时出现PythonAnywhere错误(拒绝访问)

时间:2017-06-02 01:09:13

标签: mysql flask pythonanywhere

我已经在PythonAnywhere中设置了一个带有简单数据库(new_db)的环境,并遵循所有指南和教程。

我有一个简单的python Flask应用程序,它尝试使用以下代码连接到数据库:

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config["DEBUG"] = True

SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
    username="WazzalJohn",
    password="my_password_here",
    hostname="WazzalJohn.mysql.pythonanywhere-services.com",
    databasename="WazzalJohn$new_db>",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

db = SQLAlchemy(app)

但我一直收到错误:

ProgrammingError:(mysql.connector.errors.ProgrammingError)1044(42000):拒绝用户'WazzalJohn'@'%'访问数据库'WazzalJohn $ new_db>'

我尝试过创建新数据库但遇到同样的问题。我以为PythonAnywhere处理了所有这些类型的问题,所以不知道该怎么做......有没有人在PythonAnywhere上有相同的问题?

我现在尝试通过BASH控制台登录并收到类似消息 - 屏幕截图为here

1 个答案:

答案 0 :(得分:0)

在原始代码中,数据库名称中包含错误:

databasename="WazzalJohn$new_db>",

......应该是:

databasename="WazzalJohn$new_db",

...没有额外的" >"。

屏幕截图中的问题是您没有在命令行上指定数据库;你需要做类似的事情:

mysql -u TWarren -h TWarren.mysql.pythonanywhere-services.com -p  'TWarren$default'

...其中' TWarren$default'应该用实际的数据库名称替换。数据库名称周围的单引号很重要,顺便说一下 - 如果你不使用它们,Bash将解释" $default"作为环境变量,mysql将尝试连接到错误的数据库。