Python Django教程51044拒绝用户@'访问;本地主机';数据库错误

Python Django教程51044拒绝用户@'访问;本地主机';数据库错误,python,django,Python,Django,我正在编写教程5,我尝试运行了一个测试: $ python manage.py test polls Creating test database for alias 'default'... Got an error creating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'") Type 'yes' if you woul

我正在编写教程5,我尝试运行了一个测试:

$ python manage.py test polls
Creating test database for alias 'default'...
Got an error creating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'")
Type 'yes' if you would like to try deleting the test database 'test_myproject', or 'no' to cancel: yes
Destroying old test database for alias 'default'...
Got an error recreating the test database: (1044, "Access denied for user 'myprojectuser'@'localhost' to database 'test_myproject'")
我试过在settings.py中提到test_名称

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'USER': 'myprojectuser',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '',
        'TEST_NAME': 'test_database_myprojecttest',
    }
}
我还运行了“
将test_myproject上的所有特权授予'myprojectuser'@'localhost';
”和

上面的两个查询命令是在设置数据库时运行的


还是一样的错误。我应该怎么做?

测试数据库的名称是通过在名称中指定的数据库名称中添加“test”来形成的

如果您使用的是Django<1.7,则:

'TEST_NAME': 'test_myproject',
如果您使用的是Django>=1.7:那么您应该在设置中使用TEST作为字典:

'TEST' : {    
    'NAME': 'test_myproject', 
}
目前您有:

'TEST_NAME': 'test_database_myprojecttest',
但是,只有在“设置”中指定的测试数据库名称与默认名称“test_yourDbName”不同时,才应指定该名称


如果这没有帮助,那么您可以切换到Sqlite引擎。使用Sqlite,测试数据库应该在内存中创建,而不需要访问真实的数据库

尝试向SQL查询中添加。*以包含表:

GRANT ALL PRIVILEGES ON test_myproject.* TO 'myprojectuser'@'localhost' IDENTIFIED BY 'password';

设置已运行的数据库时:

CREATE USER 'myprojectuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON myproject TO 'myprojectuser'@'localhost'; 
这意味着您的用户无法访问其他数据库。 然而,测试正在尝试创建自己的数据库“test_myproject”(根据您的错误文本)。因此,在创建用户myprojectuser之后,还必须授予该数据库的权限。只需在数据库控制台中运行以下命令:

GRANT ALL PRIVILEGES ON test_myproject TO 'myprojectuser'@'localhost';
FLUSH PRIVILEGES;

您使用的是哪个django版本?您是在本地使用它还是在Heroku…使用命令创建项目?
GRANT ALL PRIVILEGES ON test_myproject TO 'myprojectuser'@'localhost';
FLUSH PRIVILEGES;