尝试访问 MySQL 数据库时出现 PythonAnywhere 错误(访问被拒绝)
PythonAnywhere error trying to access MySQL database (Access denied)
我已经按照所有指南和教程在 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
在您的原始代码中,您的数据库名称有误:
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 会尝试连接到错误的数据库。
我已经按照所有指南和教程在 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
在您的原始代码中,您的数据库名称有误:
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 会尝试连接到错误的数据库。