我已经开始使用django了,在settings.py中设置'DATABASES'后,这是'runserver'上的错误
mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
我的settings.py部分代码:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'my_site', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'root', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
我创建了'my_site'数据库,并以正确的方式设置权限(root具有所有权限)。我用'phpmyadmin'完成了这个操作。
出了什么问题?
在控制台中运行
mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
经过两天的挣扎,我终于找到了什么错。为Django站点设置mysql数据库的整个步骤是 -
您的settings.py文件必须如下所示 -
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'django_db', #Name of database you created
'USER': 'root', #Username of database you created
'PASSWORD':'', #Password of database you created
'HOST': '',
'PORT': '',
} }
注意: - 上面给出的密码和用户名是我的localhost,你已将其更改为你的。
- 在localhost中创建一个数据库,让它命名为django_db(为此你可以使用lamp / wamp / Xampp或mysql命令提示符)
- 编辑文件settings.py并保存在DATABASES字段中打开数据库所需的密码,如下面的代码所示。
- 开放式终端。
- 如果您使用的是虚拟环境,请使用命令 - > workon env_name切换到该环境
- 现在cd app_name例如。 cd mysite
第3步,第4步和第5步只是说明如何访问应用程序中找到manage.py文件的文件夹。
6.检查你是否在正确的目录运行命令ls -l。如果你找到manage.py文件,那么一切都是正确的
7.python manage.py migrate
如果您在运行上述命令时遇到任何错误,例如“没有名为MySQLdb的模块”,您可以访问link
8.python manage.py syncdb
9.python manage.py runserver
10.你将被要求为你的Django管理员提供用户名和密码,给你想要打开Django管理员网站的任何内容。
11.检查你在`http://localhost/phpmyadmin的localhost中的数据库中有一些表。你现在很高兴。
该指令说将
username
与SQL语句一起添加为:
GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON winestores.* TO [email protected] IDENTIFIED by 'password';
以root身份执行此操作后,我退出并尝试使用新用户重新登录。我得到了ERROR 1045.我通过以root身份重新登录并再次重新发布SQL语句来修复它,除了使用
username@localhost
。有效!我不知道为什么?也许它是'127.0.0.1'和'localhost'的IP之间的区别???
正如在dev.mysql.com上读到的那样。
对于遇到此问题的任何人 - 请检查以确保数据库用户主机是localhost
。如果设置为%
,它将无法工作,您将需要添加localhost
或更改您的整体安全设置。
您的数据库无法识别您的root用户和密码。如果您可以转到phpmyAdmin并尝试创建不同的用户和密码并分配给数据库,如果这不起作用,请尝试创建但使用create user控制台,并授予所有权限。
仅供参考,如果您使用XAMPP,请直接进入localhost / phpmyad>权限进行修改