# postgresql.conf
listen_addresses='::'
和
# pg_hba.conf
hostssl webdb webserver ::0/0 cert
postgresql服务器运行在带有可点击ipv6地址的"GlobalIPv6Address": "fe80::242:ac12:2"
的对接器上,因此没有防火墙阻塞。
我使用以下命令连接
psql --command="select * from test;" -d webdb -h fe80::242:ac12:2 -p 5432 -U postgres
psql: could not connect to server: Invalid argument
Is the server running on host "fe80::242:ac12:2" and accepting
TCP/IP connections on port 5432?
为什么主机不被识别?不可能在psql中使用ipv6吗?另外,我没有在psql中找到ssl参数选项。
发布于 2016-08-27 14:08:12
正如Danielérité在评论中提到的,在Unix上,"%interface“应该作为ipv6地址的后缀。您可以通过运行ifconfig命令获得接口。所以,正确的psql命令是
psql --command="select * from test;" -d webdb -h fe80::242:ac12:2%br-67d2c47f5b8e -p 5432 -U webserver
我还有其他问题。但现在,可以联系到主机了。接下来,我注意到后缀"clientcert = 1“必须添加到pg_hba.conf (不知道为什么)
# pg_hba.conf
hostssl webdb webserver ::0/0 cert clientcert=1
listen_addresses值在postgresql.conf中很好(仅限制请求和响应到ipv6地址)-- pg_hba.conf中的值'::0/0‘也是如此
然后,我从服务器获得ssl验证错误。我必须在我的客户端为psql设置路径变量。
export PGSSLCERT=/my-folder/my-certificate.pem
export PGSSLKEY=/my-folder/my-private-key.pem
如果您的私钥受到密码保护,psql将提示您输入密码。一旦连接通过,(=> ssl工作正常),我注意到角色"webserver“没有登录权限。我必须使用改变角色来允许登录,并且不得不格兰特、选择和更新对测试表的访问。
现在起作用了。感谢丹尼尔提供的ipv6后缀解决方案。
发布于 2016-08-27 13:51:05
要使postgres在您的网络中可维护,您需要将listen_addresses
配置为*
。
然后调整pg_hba.conf
2以允许来自主机的连接。例如:
hostssl webdb webserver fe80::242:ac12:2/128 cert
完成文件后,重新加载postgres服务器。
请参阅关于更多身份验证错误的文档1。
希望能帮上忙。
参考文献:
https://dba.stackexchange.com/questions/148086
复制相似问题