【问题标题】:mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")mysql_exceptions.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
【发布时间】:2012-04-28 05:01:02
【问题描述】:

我已经开始使用 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


    【解决方案1】:

    在控制台中运行

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

    【讨论】:

    • 我其实想通过python运行这个命令。但我被拒绝访问。知道如何自动化吗?谢谢
    • 是的,酷。谢谢。
    • 从 mysql 控制台运行上述命令后,我现在什至无法以 root 身份登录 :(
    【解决方案2】:

    该指令表示将username与SQL语句添加为:

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

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

    如阅读 dev.mysql.com.

    【讨论】:

      【解决方案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': '',
          } }
      

      注意:-上面给出的密码和用户名是我的本地主机,您已将其更改为您的。

      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 迁移

      如果您在运行上述命令时遇到任何错误,例如“没有名为 MySQLdb 的模块”,您可以访问 link

      8.python manage.py syncdb

      9.python manage.py runserver

      10. 系统会要求您输入 Django 管理员的用户名和密码,输入您想要打开 Django 管理员站点的任何内容。

      11.检查您的数据库中有一些表,位于 localhost 的 `http://localhost/phpmyadmin。你现在可以走了。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

          当您的用户名或密码错误时会发生这种情况......所以请再次检查用户名和密码。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                猜你喜欢
                • 2016-09-28
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-06-25
                • 1970-01-01
                • 2021-10-29
                • 2023-03-23
                • 2021-09-08
                相关资源
                最近更新 更多