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

已安装SQL仍遇Django数据库1045权限拒绝错误求助

解决Django连接MySQL的1045权限错误

这个1045 Access denied错误的核心原因是MySQL用户mahima没有被授权从192.168.0.37这个主机连接到dev_jrc_api数据库,或者密码配置有误。下面是一步步的排查和解决步骤:

1. 先验证密码和基础连接是否正常

首先排除最基础的密码错误:打开终端用MySQL客户端直接测试连接:

mysql -u mahima -p -h 192.168.0.37 -P 3307

输入你配置的密码,如果能成功登录,说明密码没问题;如果登录失败,先确认密码正确性,再往下排查。

2. 检查MySQL用户的主机绑定权限

MySQL的用户权限是和主机地址绑定的,mahima@localhost和mahima@192.168.0.37是两个完全不同的用户身份。你的Django配置里指定了HOST: '192.168.0.37',所以需要确保这个用户被允许从该IP连接:

操作步骤:

  1. 用MySQL的root用户登录服务器,执行以下命令查看现有用户的主机权限:
    SELECT user, host FROM mysql.user WHERE user = 'mahima';
    
  2. 如果结果里没有mahima对应192.168.0.37(或者%,代表允许所有主机)的记录,需要给用户授权:
    -- 如果用户还不存在,先创建用户(替换成你的实际密码)
    CREATE USER 'mahima'@'192.168.0.37' IDENTIFIED BY '你的数据库密码';
    -- 授予该用户对dev_jrc_api数据库的所有操作权限
    GRANT ALL PRIVILEGES ON dev_jrc_api.* TO 'mahima'@'192.168.0.37';
    -- 刷新权限使配置生效
    FLUSH PRIVILEGES;
    
  3. 如果用户已经存在但主机是localhost,可以修改主机绑定:
    UPDATE mysql.user SET host = '192.168.0.37' WHERE user = 'mahima' AND host = 'localhost';
    FLUSH PRIVILEGES;
    

    注意:生产环境不建议用%作为主机(允许任意IP连接),会带来安全风险,尽量指定具体的IP地址。

3. 确认目标数据库存在

确保dev_jrc_api数据库已经在MySQL中创建:
登录MySQL后执行:

SHOW DATABASES;

如果列表里没有这个数据库,先创建:

CREATE DATABASE dev_jrc_api;

4. 检查MySQL服务的监听地址

如果MySQL服务器配置了只监听本地地址,会导致外部IP无法连接:

  1. 找到MySQL的配置文件(Linux一般是/etc/my.cnf或/etc/mysql/my.cnf,Windows是my.ini)
  2. 查找bind-address参数,如果设置为127.0.0.1,修改为0.0.0.0(允许所有IP)或者你的Django服务器IP192.168.0.37
  3. 重启MySQL服务使配置生效(Linux:systemctl restart mysql,Windows:在服务管理器中重启MySQL服务)

5. 排查网络/防火墙问题

最后确认网络连通性:

  • 在Django服务器上ping 192.168.0.37,看是否能正常连通
  • 测试端口是否开放:telnet 192.168.0.37 3307,如果能连接说明端口没问题;如果失败,检查MySQL服务器的防火墙是否允许3307端口的入站请求,或者云服务器的安全组规则。

内容的提问来源于stack exchange,提问作者Mahima Chandwani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:23:10