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

PostgreSQL连接失败:无法登录用户以安装PostGIS扩展

解决PostgreSQL用户密码认证失败及PostGIS扩展安装问题

一、排查密码认证失败的核心问题

1. 修复密码特殊字符的shell解析问题

你设置的密码pa$$word包含shell特殊字符$$,执行CREATE USER命令时,shell会自动将$$解析为空字符串,导致实际生效的密码是paord而非预期值。重新设置密码时,用美元引号避免shell解析:

-- 以超级用户(如postgres)身份连接数据库后执行
ALTER USER san WITH PASSWORD $$pa$$word$$;

也可以先改用无特殊字符的简单密码测试:

ALTER USER san WITH PASSWORD 'simple123';

2. 调整pg_hba.conf的远程认证规则

由于你使用-h [database_hostname]发起远程连接,PostgreSQL的pg_hba.conf配置可能限制了远程连接的认证方式:

  • 找到pg_hba.conf文件(通常位于/var/lib/postgresql/<版本号>/main/或PostgreSQL安装目录的data文件夹内)
  • 添加或修改远程连接规则,将认证方式改为scram-sha-256(PostgreSQL 10+版本推荐)或md5:
    # 允许任意主机的san用户连接usersDB,使用密码认证
    host    usersDB     san     0.0.0.0/0     scram-sha-256
    
  • 重启PostgreSQL服务使配置生效:
    # 系统d环境
    sudo systemctl restart postgresql
    # 或service命令
    sudo service postgresql restart
    

3. 验证连接参数准确性

  • 默认PostgreSQL端口为5432,你指定的8000需与postgresql.conf里的port配置一致
  • 确认数据库主机地址无误,且目标主机防火墙已开放对应端口

4. 修正创建用户时的命令拼写错误

你原命令存在一处笔误:LTER ROLE san SET client_encoding TO 'utf8'; 缺少字母A,正确命令应为:

ALTER ROLE san SET client_encoding TO 'utf8';

二、认证成功后安装PostGIS扩展

连接到usersDB数据库后执行扩展创建命令:

# 先进入psql交互界面
psql -h [database_hostname] -p 8000 -U san -d usersDB
# 在交互界面执行扩展创建
CREATE EXTENSION postgis;

也可直接一次性执行:

psql -h [database_hostname] -p 8000 -U san -d usersDB -c "CREATE EXTENSION postgis;"

内容的提问来源于stack exchange,提问作者Alexander Life

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 11:57:19