我想知道在这些情况下如何连接到 postgresql:
- 允许您从任何位置访问它们(进行 IP 过滤)
- 安全连接(没有被捕获密码的风险)
- 易于设置,最好只配置服务器。
我知道推荐的方法是使用 SSH 端口转发,但这需要您在尝试连接到这些数据库之前启动端口转发。
无需在客户端上进行复杂设置即可获得足够好的安全性的最简单方法是什么?
有没有办法按需自动启用端口转发?
我想知道在这些情况下如何连接到 postgresql:
我知道推荐的方法是使用 SSH 端口转发,但这需要您在尝试连接到这些数据库之前启动端口转发。
无需在客户端上进行复杂设置即可获得足够好的安全性的最简单方法是什么?
有没有办法按需自动启用端口转发?
对于 PostgreSQL,您首先要确保您使用的是启用 SSL 的构建。(我认为这是大多数安装程序的默认设置。)
然后,您需要通过设置listen_addresses
(指定服务器将侦听的 IP 地址)允许服务器接受远程连接:http ://www.postgresql.org/docs/9.1/interactive/runtime-config-connection.html
pg_hba.conf文件允许您指定哪些用户可以使用哪些身份验证方法从哪些 IP 地址连接到哪些数据库。有很多身份验证方法可供选择:http ://www.postgresql.org/docs/9.1/interactive/client-authentication.html
关于客户端需要做什么,细节将取决于您在哪个环境中使用的连接器;例如,如果可用,PostgreSQL JDBC 驱动程序默认使用 SSL 连接。要告诉 JDBC 驱动程序不接受连接,除非它可以使用 SSL,请设置 JDBC 连接属性:ssl=true
. http://jdbc.postgresql.org/documentation/head/ssl-client.html
抱歉,但我不知道 MySQL 是如何管理这些的。
我自己正在尝试为 Postgre 找到答案,但这是您可以为 MySQL 做的事情。
首先,您需要启用对数据库的远程访问。您可以按如下方式创建具有远程访问能力的用户。
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password';
flush privileges;
更多细节在这里。
要为此添加安全性,您可以在 GRANT 命令中添加“REQUIRE SSL”,如下所示
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password' REQUIRE SSL;
所有这些都需要在服务器端完成。在客户端上,您只需要提供连接所需的证书。
有关创建证书的详细信息,MySQL 站点在此处提供了分步指南