【问题标题】:Connecting Rstudio with PostgreSQL in AWS EC2在 AWS EC2 中将 Rstudio 与 PostgreSQL 连接
【发布时间】:2019-11-02 21:35:42
【问题描述】:

我目前在 AWS EC2 (Ubuntu) 中运行 PostgreSQL 服务器,并且无法从本地服务器访问它。如何从本地 RStudio 访问远程数据库?

R 中的代码:

library(RPostgreSQL)
library(DBI)

drv <- dbDriver("PostgreSQL")

con <- dbConnect(drv, user='postgres', password='password', dbname='dvd', host='ec2-xx-xxx-xxxx-xxxx.ap-northeast-2.compute.amazonaws.com',port=5432)

dbListTables(con)

结果:

Error in postgresqlNewConnection(drv, ...) : 
  RS-DBI driver: (could not connect postgres@ec2-xx-xxx-xxxx-xxxx.ap-northeast-2.compute.amazonaws.com:5432 on dbname "dvd": FATAL:  no pg_hba.conf entry for host "130.17.152.1”, user "postgres", database "dvd", SSL off
)
Calls: <Anonymous> ... eval -> dbConnect -> dbConnect -> postgresqlNewConnection
Execution halted

对于 AWS 安全组,我为 PostgreSQL 添加了一个入站,其源设置为端口范围为 5432 的任何位置。

【问题讨论】:

标签: r postgresql amazon-ec2


【解决方案1】:

默认情况下 Postgres 不允许远程连接。要允许远程连接,您需要在 EC2 服务器上的 pg_hba.conf 文件中添加一个条目。 pg_hba.conf 的确切位置因安装不同而异,但这里有一些路径可以尝试:

/etc/postgresql/[VERSION]/main/
/var/lib/postgresql/[version]/

找到pg_hba.conf 后,例如,您需要添加一行以允许远程连接。

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  host  dvd             postgres        130.17.152.1/32         md5

这假设您的本地服务器 IP (130.17.152.1) 是静态的。如果没有,您可以使用 0.0.0.0/0 作为 ADDRESS,也可以使用 all 作为 DATABASE 和 USER,如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  host  all             all             0.0.0.0:0                     md5

取决于您希望自己的安全性有多严格,但请记住,这是数据库级别的安全性,与您的 AWS 安全组完全分开。

更多信息请参见https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 2017-07-29
    • 2019-02-20
    • 2015-10-11
    相关资源
    最近更新 更多