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的密码验证方式连接主机上所有的数据库.