PyCharm抛出[08004]错误求助:已配置各项服务仍无法排查原因
解决PyCharm抛出[08004]密码认证错误的排查方案
我之前也碰到过几乎一模一样的情况——明明数据库连接正常、Django配置也没毛病,PyCharm却固执地报密码未提供的错误。结合你的场景(远程DigitalOcean Droplet、SSH密钥登录、Ubuntu 16.04),给你几个针对性的排查方向:
1. 核对PyCharm Database工具的独立配置
虽然你说数据库连接正常,但PyCharm的Database面板是独立于Django settings的配置模块,很容易出现不同步的情况:
- 打开右侧Database面板,找到你的PostgreSQL连接,右键选择
Properties - 确认
Password字段是否和settings.py里的<pwd>完全一致,不要留空或者填错 - 如果之前是用SSH隧道连接数据库,还要检查SSH配置里有没有意外覆盖了数据库认证信息
2. 检查Run/Debug配置的环境变量覆盖
有时候PyCharm的运行配置会悄悄覆盖你的数据库设置:
- 点击顶部
Run > Edit Configurations,找到你的Django Server配置 - 切换到
Environment Variables标签,检查有没有设置DATABASE_PASSWORD或者其他和数据库相关的变量 - 如果有这类变量,要么删除它(让Django读取settings里的配置),要么确保它的值和
settings.py里的密码一致
3. 远程Python解释器的环境变量干扰
你用的是远程Ubuntu上的Python解释器吧?远程服务器的环境变量可能会影响Django的配置读取:
- 登录远程Droplet,执行命令:
echo $DATABASE_PASSWORD - 如果输出了空值或者错误的密码,说明服务器环境变量里的这个值覆盖了
settings.py的配置 - 可以通过编辑
~/.bashrc或者~/.profile文件,删除相关的环境变量设置,然后重启终端生效
4. 清空PyCharm缓存解决配置异常
PyCharm的缓存偶尔会出现配置不更新的bug:
- 点击顶部
File > Invalidate Caches... - 选择
Invalidate and Restart,等待PyCharm重启后再运行项目 - 这个操作会清空缓存但不会删除你的项目文件,放心执行
5. 最后核对PostgreSQL的pg_hba.conf(兜底排查)
虽然你说数据库连接正常,但还是确认下远程PostgreSQL的认证规则:
- 登录远程服务器,找到pg_hba.conf文件(路径一般是
/etc/postgresql/9.5/main/pg_hba.conf,对应Ubuntu 16.04的默认PostgreSQL版本) - 查找针对
django用户和our_db数据库的规则,确保是类似这样的配置:host our_db django <你的本地IP>/32 md5 - 如果认证方式是
ident或者peer,会导致密码认证失败,改成md5后重启PostgreSQL服务:sudo systemctl restart postgresql
如果以上步骤都试过还是不行,再仔细检查settings.py里的密码有没有拼写错误,比如特殊字符(如$、@)有没有正确转义,或者引号有没有漏写~
内容的提问来源于stack exchange,提问作者Milano
相关产品推荐
相关产品推荐

