linux 使用docker安装 postgres 教程
踩坑实践,安装好了不能远程访问。
防火墙已关闭、postgres 配置了允许所有ip 访问、网络是通的。端口也是开放的,就是不能用数据库链接工具访问。
最后发现是云服务器端口没开 ,将其打开
到这一步完全正确了,但是又报错了
关于连接PostgreSQL时提示 FATAL: password authentication failed for user “连接用户名” 的解决方法.
[postgres @ pgsqldb-master bin]$ psql -h 127.0.0.1 -U postgres
Password for user postgres:
psql: FATAL: password authentication failed for user “postgres”
原因:
之前配置允许所有ip 远程访问时,设置了md5 ,但是又没有更新密码。密码还是用的原来的 sha 加密存储的,所以不能链接上
解决方法
1、修改密码的认证方式(见下文),或者重新修改一下密码(记住每次修改认证方式后,重启数据,都需要更新一下用户密码)
网上都说 把method 参数改成 trust ,强烈不建议,这个参数意思是 允许不使用密码登录数据库,不安全
[postgres @ pgsqldb-master bin]$ vim ../data/pg_hba.conf
2、 重新启动docker 容器(博主使用的docker) 或者数据库服务
3、再次修改你的密码(重要),因为你修改了数据库存储密码的方式,所以以前的密码是不管用了
ALTER USER username WITH PASSWORD 'newpassword';
然后再次使用密码 链接即可成功,
不容易啊,历时10小时,终于弄好了数据库。也学到了很多东西。
pg_hba.conf配置参数详解
pg_hba.conf 文件主要用来配置数据库的访问权限。
TYPE 参数设置
TYPE 表示终端访问的主机类型,值可能为:
若为 local
表示是unix-domain的socket连接
若为 host
是TCP/IP socket
若为 hostssl
是SSL加密的TCP/IP socket
DATABASE 参数设置
DATABASE 表示数据库名称,值可能为:
all
,sameuser
,samerole
,replication
,数据库名称
,或者多个
数据库名称用 逗号
,注意ALL不匹配 replication
USER 参数设置
USER 表示用户名称,值可以为:
all
,一个用户名
,一组用户名
,多个用户时,可以用 ,
逗号隔开,
或者在用户名称前缀 +
;在USER和DATABASE字段,也可以写一个单独的
文件名称用 @
前缀,该文件包含数据库名称或用户名称
ADDRESS 参数设置
该参数可以为 主机名称
或者IP/32(IPV4)
或 IP/128(IPV6)
,主机
名称以 .
开头,samehost
或samenet
匹配任意Ip地址
METHOD 参数设置
该值可以为"trust", “reject”, “md5”, “password”, “scram-sha-256”,
“gss”, “sspi”, “ident”, “peer”, “pam”, “ldap”, “radius” or “cert”
[password] 表示采用明码发送密码
[md5] 表示密码在发送过程中,使用md5加密算法进行加密-也是最常用的加密方式
典型示例1
TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 md5
host 参数表示安装PostgreSQL的主机
all 第一个all 表示该主机上的所有数据库实例
all 第二个all 表示所有用户
10.10.56.17/32 表示需要连接到主机的IP地址,32表示IPV4
md5 表示验证方式 12345
即上述表示允许所有IP可以通过MD5的密码验证方式连接主机上所有的数据库.