mysql django.db.utils.OperationalError:(1045,“Access denied for user 'root'@'localhost'(using password:是)”)

cnjp1d6j  于 2023-08-02  发布在  Mysql
关注(0)|答案(9)|浏览(165)

当我使用命令“python manage.py makemigrations”(与键入“python manage.py runserver”相同)时,它抛出了这个错误。然后我检查了用户的权限。代码和结果如下。

mysql> select host,user from mysql.user;
+-----------+---------------+
| host      | user          |
+-----------+---------------+
| %         | root          |
| %         | zhuxin        |
| localhost | mysql.session |
| localhost | mysql.sys     |
| localhost | root          |
| localhost | zhuxin        |
+-----------+---------------+

mysql> show grants for 'zhuxin'@'%'; 
+---------------------------------------------------------------+ 
| Grants for zhuxin@%                                           |
+---------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'zhuxin'@'%' WITH GRANT OPTION | 
| GRANT ALL PRIVILEGES ON `blogdb`.* TO 'zhuxin'@'%'            |  
+---------------------------------------------------------------+ 

mysql> show grants for 'root'@'%';
+--------------------------------------------------+
| Grants for root@%                                | 
+--------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'root'@'%'                 | 
| GRANT ALL PRIVILEGES ON `blogdb`.* TO 'root'@'%' |  
+--------------------------------------------------+

字符串
我已经试过各种方法来解决它,但没有用。

vulvrdjw

vulvrdjw1#

您需要在项目settings.py中进行更改,为您的数据库提供USERPASSWORD

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproject',
        'USER': 'root',
        'PASSWORD': 'rootpassword',
        'HOST': 'localhost',
        'PORT': '',
    }
}

字符串

aiazj4mn

aiazj4mn2#

检查您的数据库用户名和密码。很多时候,我们会犯打字错误。它与数据库用户名和密码不匹配,因此发生此错误。我面对这个错误,相信我,这是我非常糟糕的经历。

qkf9rpyu

qkf9rpyu3#

我遇到了同样的错误,将HOST更改为127.0.0.1并删除密码对我有效。你可以尝试一下,看看它是否也适用于你。

70gysomp

70gysomp4#

MySQL数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your database name',
        'HOST': 'localhost',
        'PASSWORD': 'your database password',
        'USER': 'root'
    }
}

字符串

uyhoqukh

uyhoqukh5#

我试着删除整个密码,它的工作,所以我得出的结论是,密码,我输入的是错误的,所以它显示了错误,因为没有密码由我设置,所以它的工作,当我删除密码

bfnvny8b

bfnvny8b6#

我看到这个错误消息后,我的项目复制到一个新的机器从备份文件。另一条错误消息解释了问题:

[Warning] World-writable config file '/home/myuser/myproject/database.cnf' is ignored.

字符串
我的数据库配置文件的权限已更改,并且它没有被加载,因此Django试图连接错误的用户。我通过运行来解决这个问题:

chmod 600 database.cnf

qpgpyjmq

qpgpyjmq7#

我的是用户名
'default':{ ' ENGINE':'django.db.backends. mysql',' NAME ':'inventory',' HOST ':“127.0.0.1”,“用户名”:'root','PORT':'','密码':'',#密码}
改成USER就行了

ddhy6vgd

ddhy6vgd8#

如果没有设置密码字段,则删除该字段。

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "reservations",
        "HOST": "127.0.0.1",
        "PORT": "3306",
        "USER": "root",
    }
}

字符串
添加此代码片段。

gorkyyrv

gorkyyrv9#

我也遇到了同样的问题,我从linuxnightly.com了解到这是由auth socket插件引起的,一旦你禁用它,问题就解决了。
在以root身份登录mysql后,尝试运行以下命令:

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password_here';
mysql> exit;
$ sudo systemctl restart mysql

字符串
要做到这一点,您必须更改root的密码。这是通过UPDATE命令完成的。你必须在进程结束时用systemctl命令重新启动mysql。
来源:https://linuxnightly.com/error-1698-28000-access-denied-for-user-rootlocalhost/

相关问题