我不是通讯网络的专家,所以我不知道我应该是什么"主机名"我在哪里可以找到它?
我在ubuntu 14.04上创建了一个postgreSQL服务器,我可以通过将主机名设置为127.0.0.1(localhost),甚至192.168.1.42(我的私有ip)从同一台计算机连接到它。但我无法从任何其他计算机连接到我的服务器,即使它们是在本地网络上。我总是得到这样的信息:
"Connection to <hostname>:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."
其中是127.0.1.1,127.0.0.1,192.168.1.42,98.765.432.123(公共IP)或其他任何东西,它永远不会起作用。 什么是正确的主机名?
我已经将listen_addresses设置为&#39; *&#39;,已编辑pg_hba.conf以接受0.0.0.0/0 IP-s,并禁用ubuntu防火墙。
答案 0 :(得分:3)
这可能是由许多事情引起的。
<hostname>
的地址,除非您有一些本地DNS解决方案。要排除后者的问题,请使用Ubuntu服务器的IP地址。在Ubuntu上键入ifconfig
来查看它;它可能就像你提到的那样192.168.1.42
。 因此,从使用Java应用程序的客户端,您可以使用服务器的IP地址。 postgresql.conf
中的设置。在JDBC连接字符串中,您还应指明端口:&#34; jdbc:postgresql://192.168.1.42:5432 /...",只是为了安全起见。postgres
)才能连接到该数据库。进一步了解。在pg_hba.conf
中,您需要为新数据库创建一个条目,以便它可以连接到(典型设置,检查您的网络设置)。 您在此处指定的IP地址(范围)是连接到数据库的客户端的IP地址(范围)!
host my_db all 192.168.0.0/16 md5
修改pg_hba.conf
后,必须重新启动PostgreSQL服务器。 (通常在Ubuntu上,执行sudo ./etc/init.d/postgresql restart
)
要创建数据库my_db
(或您喜欢的任何名称),请转到您的Ubuntu框并输入psql
作为postgres
用户:
vekszor@ubuntu:~$ sudo -u postgres psql
[sudo] password for user:
psql (9.3.5)
Type "help" for help
postgres=#
为了连接数据库,你应该有一个数据库:
postgres=# CREATE DATABASE my_db;
CREATE DATABASE
您还希望用户(角色)的功能不如postgres
超级用户,但仍能够操作数据库。因此,创建此用户角色并分配数据库的所有权:
postgres=# CREATE ROLE vekszor LOGIN PASSWORD 'secret123' CREATEROLE;
CREATE ROLE
postgres=# ALTER DATABASE my_db OWNER TO vekszor;
ALTER
现在,您可以使用Java应用程序返回到客户端计算机,并使用数据库名称,用户和密码完成JDBC连接字符串。
请注意,如果要从Internet访问数据库,则应在路由器中设置NAT规则,将端口5432上的流量指向Ubuntu服务器的IP。只要路由器的内部地址为在pg_hba.conf
中指明的客户端计算机的相同地址范围内,这应该很容易设置,否则在pg_hba.conf
中添加新条目。
答案 1 :(得分:1)
将您的评论读到正确的答案:
这是你向iptables添加规则的方法:
iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPT
0/0:如果你想让任何人访问它。
您可以将其更改为特定的IP地址或IP地址范围。
答案 2 :(得分:0)
如果使用UI连接到服务器,则可以运行以下查询以使用以下查询获取服务器的IP地址,以验证您是否使用了正确的IP。
Select inet_server_addr();