【问题标题】:How to easily and safely connect to postgres or mysql remotely?如何轻松安全地远程连接到 postgres 或 mysql?
【发布时间】:2012-04-27 00:59:54
【问题描述】:

我想知道在这些情况下如何连接到 postgresql:

  • 允许您从任何位置访问它们(进行 IP 过滤)
  • 安全连接(不存在密码被盗的风险)
  • 易于设置,最好只配置服务器。

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

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

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

【问题讨论】:

  • 为什么是 MySQL 参考/标签?您的问题中似乎没有关于 MySQL 的任何内容。
  • 必须这样做,只要mysql可以配置为访问安全连接。

标签: mysql security postgresql ssh database-connection


【解决方案1】:

对于 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 是如何管理这些的。

【讨论】:

    【解决方案2】:

    我自己正在尝试为 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

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多