已安装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连接:
操作步骤:
- 用MySQL的root用户登录服务器,执行以下命令查看现有用户的主机权限:
SELECT user, host FROM mysql.user WHERE user = 'mahima'; - 如果结果里没有
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; - 如果用户已经存在但主机是
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无法连接:
- 找到MySQL的配置文件(Linux一般是
/etc/my.cnf或/etc/mysql/my.cnf,Windows是my.ini) - 查找
bind-address参数,如果设置为127.0.0.1,修改为0.0.0.0(允许所有IP)或者你的Django服务器IP192.168.0.37 - 重启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
相关产品推荐
相关产品推荐

