【问题标题】:PythonAnywhere error trying to access MySQL database (Access denied)尝试访问 MySQL 数据库的 PythonAnywhere 错误(拒绝访问)
【发布时间】:2017-11-03 07:11:33
【问题描述】:

我已经按照所有指南和教程在 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): Access denied for user 'WazzalJohn'@'%' to database 'WazzalJohn$new_db>'

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

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

【问题讨论】:

  • 屏幕截图是我在 PythonAnywhere 中使用不同的电子邮件地址再次创建的全新用户 - 仍然没有运气!

标签: mysql flask pythonanywhere


【解决方案1】:

在您的原始代码中,您的数据库名称有错误:

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 将尝试连接到错误的数据库。

【讨论】:

  • 非常感谢贾尔斯。不敢相信我错过了。感到尴尬,但感谢你帮助我,我真的很感激。
  • 没问题,很高兴为您提供帮助:-)
猜你喜欢
  • 2017-11-01
  • 1970-01-01
  • 2012-06-07
  • 2014-12-21
  • 2013-03-18
  • 2012-11-08
  • 2012-09-08
  • 2012-12-13
  • 1970-01-01
相关资源
最近更新 更多