You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django连接MySQL报错:root@localhost访问被拒 无法建立连接

Django配置MySQL连接报访问拒绝错误解决

问题现象

配置Django项目MySQL连接时抛出如下错误:

Cannot connect to "@localhost". Access denied for user 'root'@'localhost' (using password: YES)

对应settings.py中的数据库配置代码如下:

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

排查解决步骤

  • 确认MySQL运行状态:Windows系统打开服务面板,找到MySQL服务确认处于运行状态;Linux系统执行systemctl status mysqld/systemctl status mysql检查服务状态,未启动则执行对应启动命令拉起服务。
  • 校验账号密码正确性:本地打开MySQL命令行,执行mysql -u root -p,输入配置中填写的密码root测试登录,若登录失败说明密码填写错误,重置root账号密码后同步更新settings.py中PASSWORD字段值即可。
  • 检查账号访问权限:成功登录MySQL命令行后,执行如下SQL查询root账号的允许访问主机配置:
    SELECT host, user FROM mysql.user WHERE user = 'root';
    
    如果查询结果中root账号对应的host列表没有localhost,执行如下授权命令放开本地访问权限:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '你设置的root密码' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  • 确认目标数据库存在:登录MySQL后执行SHOW DATABASES;,检查是否存在名为django_db的业务库,不存在则执行CREATE DATABASE django_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;创建对应数据库。
  • 校验配置语法:检查settings.py中DATABASES配置块是否存在语法错误,比如引号缺失、逗号漏写,注意PORT字段值为整数类型,不要额外添加引号。
  • 适配MySQL8.0+认证规则:MySQL8.0及以上版本默认使用caching_sha2_password认证插件,部分版本的mysqlclient驱动兼容异常,可执行如下SQL将本地root账号的认证方式修改为Django兼容的模式:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你设置的root密码';
    FLUSH PRIVILEGES;
    

内容的提问来源于stack exchange,提问作者Witaliy Galiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 04:01:07