Django 1.11连接PostgreSQL 9.5时ubuntu用户认证失败问题
解决Django连接PostgreSQL时"FATAL: password authentication failed for user 'ubuntu'"的问题
你的怀疑完全正确——Django确实在使用当前系统用户ubuntu尝试连接数据库,根源在于你的数据库配置里有一个容易忽略的小错误:
先看一下你的数据库配置代码:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME':'test_db', 'USERNAME':'rails', 'PASSWORD':'rails', 'HOST':'localhost', 'PORT':'5432', } }
这里的问题是用户名字段的键名写错了:Django为PostgreSQL数据库配置规定的用户名字段键是USER,而非USERNAME。当Django找不到正确的USER配置项时,会默认使用当前运行Django进程的系统用户(也就是ubuntu)去发起数据库连接,这直接导致了你遇到的认证失败错误。
具体解决步骤:
- 修改数据库配置,把
USERNAME替换为USER:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME':'test_db', 'USER':'rails', # 修正为正确的键名 'PASSWORD':'rails', 'HOST':'localhost', 'PORT':'5432', } }
- 保存配置文件后,重启Django开发服务器:
python manage.py runserver
额外验证建议:
- 确认PostgreSQL中确实存在
rails这个数据库用户,且已设置密码rails - 可以用psql命令手动测试连接,验证数据库端配置是否正常:
psql -U rails -d test_db -h localhost -p 5432
输入密码rails后如果能成功登录,说明数据库侧配置没问题,只需确保Django配置正确即可。
内容的提问来源于stack exchange,提问作者Ankit Kumar Rathod
相关产品推荐
相关产品推荐

