mysql_exceptions.OperationalError:(1045,“拒绝访问用户'root'@'localhost'(使用密码:YES)”)

问题描述 投票:14回答:5

我已经开始使用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 django privileges
5个回答
14
投票

在控制台中运行

mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;

3
投票

经过两天的挣扎,我终于找到了什么错。为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,你已将其更改为你的。

  1. 在localhost中创建一个数据库,让它命名为django_db(为此你可以使用lamp / wamp / Xampp或mysql命令提示符)
  2. 编辑文件settings.py并保存在DATABASES字段中打开数据库所需的密码,如下面的代码所示。
  3. 开放式终端。
  4. 如果您使用的是虚拟环境,请使用命令 - > workon env_name切换到该环境
  5. 现在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中的数据库中有一些表。你现在很高兴。


2
投票

该指令说将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上读到的那样。


1
投票

对于遇到此问题的任何人 - 请检查以确保数据库用户主机是localhost。如果设置为%,它将无法工作,您将需要添加localhost或更改您的整体安全设置。


0
投票

您的数据库无法识别您的root用户和密码。如果您可以转到phpmyAdmin并尝试创建不同的用户和密码并分配给数据库,如果这不起作用,请尝试创建但使用create user控制台,并授予所有权限。


-1
投票

仅供参考,如果您使用XAMPP,请直接进入localhost / phpmyad>权限进行修改

© www.soinside.com 2019 - 2024. All rights reserved.