赞
踩
背景:
执行 psql -U postgres
报错 psql: error: FATAL: Peer authentication failed for user “postgres”
问题分析:
原因:安装完 PostgresQL 后, PostgresQL 连接时的默认认证方式为 peer。官方的解释:
The peer authentication method works by obtaining the client’s operating system user name from the kernel and using it as the allowed database user name (with optional user name mapping). This method is only supported on local connections.
大概意思就是使用 peer 方式的认证方式, PostgresQL 会从操作系统内核中获取当前的用户名并且作为允许连接的用户名进行认证,这种方式仅仅适用于本地连接。
由于我们这里的登录名并不是对应的用户名, 因此出现了以上认证失败的信息。
psql的连接建立于Unix Socket上默认使用peer authentication,所以必须要用和 数据库用户 相同的 系统用户 进行登录。
这是默认只有切换postgres用户才可以登录pgsql 的原因
解决方案:
# find / -name pg_hba.conf
/etc/postgresql/12/main/pg_hba.conf
vim /etc/postgresql/12/main/pg_hba.conf
把本地的认证方式从 peer 改为 trust
/etc/init.d/postgresql restart
这样就可以在其他用户下使用pgsql -U 了
使用示例:
创建数据库,数据库mydb创建成功。
createdb mydb -U postgres
安 装PostgreSQL数据库之后,默认是只接受本地访问连接。
如果想在其他主机上配置远程连接PostgreSQL,需要修改pg_hba.conf和postgresql.conf
修改pg_hba.conf文件,开通局域网的访问权限,注意IP地址改为自己所在网络的IP。
1.修改pg_hba.conf文件,配置用户的访问权限
root@sheservice:~# find / -name pg_hba.conf
/etc/postgresql/12/main/pg_hba.conf
root@sheservice:~# vi /etc/postgresql/12/main/pg_hba.conf
host all all 192.168.1.1/32 md5 --/32代表只允许192.168.1.1访问
host all all 192.168.1.0/24 md5 --/24代表192.168.1.1~192.168.1.255都允许访问
host all all 192.168.0.0/16 md5 --/16代表192.168.1.1~192.168.255.255都允许访问
host all all 192.0.0.0/8 md5 --/8代表192.1.1.1~192.255.255.255都允许访问
host all all 0.0.0.0/0 md5 --/0代表所有ip地址都允许访问
加入一行允许内网IP访问
2.修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。
定位到#listen_addresses=’localhost’。PostgreSQL安装完成后,默认是只接受来在本机localhost的连接请 求。
编辑配置文件postgresql.conf,去掉前面的#,修改为listen_addresses = ‘*’
root@sheservice:~# find / -name postgresql.conf
/usr/lib/tmpfiles.d/postgresql.conf
/etc/postgresql/12/main/postgresql.conf
root@sheservice:~# vi /etc/postgresql/12/main/postgresql.conf
listen_addresses = ‘*’
systemctl status postgresql
# 设置开机自启动
systemctl enable postgresql
# 启动
systemctl start postgresql
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。