【问题标题】:pythonanywhere: access denied for user 'USERNAME'@'%' to databasepythonanywhere:拒绝用户 'USERNAME'@'%' 访问数据库
【发布时间】:2014-12-21 16:12:29
【问题描述】:

我正在使用www.pythonanywhere.com 来部署我的 Django 项目。 pythonanywhere的数据库设置如下:

Connecting: 
    Database host address: mysql.server
    Username: Username (just as an example)

Your databases:
    Start a console on: Username$DBName  (just as an example)
    ...

使用“manage.py migrate”命令设置数据库时,出现错误消息:

django.db.utils.OperationalError: (1044 "Access denied for user 'Username'@'%' to database 'DBName'")

文件settings.py中的DATABASES设置如下。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DBName',
        'USER': 'Username',
        'PASSWORD': 'password',
        'HOST': 'mysql.server',
        'PORT': '3306',
    }
}

我可以使用以下命令在控制台中运行 mysql:

$ mysql -u Username -h mysql.server -p

当我输入以下命令时:

mysql> use mysql;

我收到错误消息:

ERROR 1044 (42000): Access denied for user 'Username'@'%' to database 'mysql'

"显示数据库;"命令显示没有名为“mysql”的数据库。

当我输入以下命令时:

mysql> GRANT ALL PRIVILEGES ON DBName.* TO 'Username'@'Username$DBName' IDENTIFIED BY 'password' WITH GRANT OPTION;

我也收到了错误信息:

ERROR 1044 (42000): Access denied for user 'Username'@'%' to database 'DBName'

那么,我该如何设置数据库呢?

【问题讨论】:

    标签: django pythonanywhere


    【解决方案1】:

    在 pythonanywhere 文档中找到了这个,使用 MySQL 的数据库设置应该是以下形式:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '<your_username>$<your_database_name>',
            'USER': '<your_username>',
            'PASSWORD': '<your_mysql_password>',
            'HOST': 'mysql.server',
        }
    }
    

    如果您的用户名是 user 并且数据库是 db,那么您的数据库名称应该是 user$db,而不是 db。

    同样,在你输入的控制台中访问数据库

    mysql>使用用户$db;

    而不是

    mysql>使用数据库;

    【讨论】:

      猜你喜欢
      • 2017-01-05
      • 2017-11-03
      • 2015-01-31
      • 1970-01-01
      • 2014-06-14
      • 2017-11-01
      • 2012-06-20
      • 2017-05-30
      • 2015-12-26
      相关资源
      最近更新 更多