pythonanywhere:用户'USERNAME'@'%'访问被拒绝到数据库

时间:2014-10-26 08:59:00

标签: django pythonanywhere

我使用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'

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

1 个答案:

答案 0 :(得分:8)

在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而database是db,那么您的数据库名称应该是 user $ db ,而不是db。

同样,要在控制台中访问数据库,请键入

  

mysql&gt;使用user $ db;

而不是

  

mysql&gt;使用db;