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

时间:2012-04-16 20:38:56

标签: mysql django privileges

我已经开始使用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'完成了这个操作。

出了什么问题?

7 个答案:

答案 0 :(得分:14)

在控制台中运行

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

答案 1 :(得分: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.   
  3. 编辑文件 settings.py 并保存在DATABASES字段中打开数据库所需的密码,如下面代码所示。

  4.   
  5. 打开终端。

  6.   
  7. 如果您使用的是虚拟环境,请使用命令切换到它 - > workon env_name

  8.   
  9. 现在 cd app_name 例如。 cd mysite

  10.   

步骤3,4和5告诉我们如何访问应用程序中找到manage.py文件的文件夹。

  

6.检查您是否在正确的目录中运行命令 ls -l <​​/ em> 。如果你找到manage.py文件,那么一切都是正确的

     

7.python manage.py migrate

如果你有任何错误,比如 - &#34;没有名为MySQLdb的模块&#34;在上面运行的命令中,您可以访问link

  

8.python manage.py syncdb

     

9.python manage.py runserver

     

10.您将被要求为您的Django管理员提供用户名和密码,并提供您想要打开Django管理站点的任何内容。

     

11.检查您在http://localhost/phpmyadmin的localhost中的数据库中是否有一些表。你现在好了。

答案 2 :(得分:2)

  

指令说要将username与SQL语句一起添加为:

GRANT SELECT, INSERT, UPDATE, DELETE, LOCK TABLES ON winestores.* TO username@127.0.0.1 IDENTIFIED by 'password';
  

以root身份执行此操作后,我退出并尝试使用新用户重新登录。我得到了ERROR 1045.我通过以root身份重新登录并再次重新发出SQL语句来修复它,除了username@localhost。有效!我不知道为什么?也许它是'127.0.0.1'和'localhost'的IP之间的区别???

阅读dev.mysql.com

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

当您的用户名或密码错误时会发生这种情况....因此,请再次输入用户名和密码。

答案 6 :(得分:-1)

仅供参考,如果您使用的是XAMPP,请直接进入localhost / phpmyad>特权以对此进行修改