如何轻松安全地远程连接到postgres或mysql?

时间:2012-04-15 11:20:50

标签: mysql security postgresql ssh database-connection

我想知道如何在这些条件下连接到postgresql:

  • 允许您从任何位置访问它们(进行IP过滤)
  • 安全连接(没有抓住密码的风险)
  • 易于设置,最好只为此配置服务器。

我知道推荐的方法是使用SSH端口转发,但这需要您在尝试连接到这些数据库之前启动端口转发。

获得足够好的安全性而不必在客户端上进行复杂设置的最简单方法是什么。

有没有办法按需自动启用端口转发功能?

2 个答案:

答案 0 :(得分:2)

对于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=truehttp://jdbc.postgresql.org/documentation/head/ssl-client.html

很抱歉,但我不知道MySQL如何管理这些。

答案 1 :(得分:1)

我自己试图找到Postgre的答案,但这是你可以为MySQL做的。

首先,您需要启用对数据库的远程访问。您可以按如下方式创建具有远程访问功能的用户。

GRANT ALL ON *.* to user@address IDENTIFIED BY 'password'; 
flush privileges;

更多详情here

要为此添加安全性,您可以向GRANT命令添加“REQUIRE SSL”,如下所示

GRANT ALL ON *.* to user@address IDENTIFIED BY 'password' REQUIRE SSL;

所有这些都需要在服务器端完成。在客户端上,您只需提供连接所需的证书即可。

有关创建证书的详细信息,MySQL站点有一个分步指南here