17

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

出了什么问题?

4

7 回答 7

17

在控制台中运行

mysql> grant all privileges on *.* to root@localhost identified by 'password' with grant option;
于 2013-02-04T09:35:41.417 回答
3

该指令表示将usernameSQL 语句添加为:

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上所读。

于 2012-04-16T20:44:30.473 回答
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. 如果您使用的是虚拟环境,请使用 command -> workon env_name切换到它

  5. 现在cd app_name例如。光盘我的网站

第 3 步、第 4 步和第 5 步只是说明如何到达在您的应用程序中找到 manage.py 文件的文件夹。

6.要检查您是否在正确的目录中运行命令ls -l。如果您找到 manage.py 文件,那么一切正常,请继续

7.python manage.py 迁移

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

8.python manage.py syncdb

9.python manage.py 运行服务器

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

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

于 2015-01-20T09:54:09.357 回答
2

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

于 2014-11-04T06:51:19.847 回答
1

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

于 2019-08-27T12:21:30.240 回答
0

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

于 2012-04-16T20:42:05.873 回答
-1

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

于 2019-05-26T12:09:16.537 回答