将Rstudio与PostgreSQL在AWS EC2中连接

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将Rstudio与PostgreSQL在AWS EC2中连接相关的知识,希望对你有一定的参考价值。

我当前在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的任何地方。

答案

默认情况下,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)是静态的。如果没有,则可以将all用于地址,同样可以将all用于数据库和USER,如下所示:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
  host  all             all             all                     md5

取决于您希望安全性有多严格,但请记住,这是数据库级别的安全性,并且与您的AWS安全组完全独立。

请参阅https://www.postgresql.org/docs/9.1/auth-pg-hba-conf.html以获取更多信息。

以上是关于将Rstudio与PostgreSQL在AWS EC2中连接的主要内容,如果未能解决你的问题,请参考以下文章

Django/PostgreSQL 全文搜索 - 在 AWS RDS PostgreSQL 上使用 SearchVector 与 SearchVectorField 时的不同搜索结果

将 CSV 导入到 postgreSQL 中的表中,忽略重复项 - 亚马逊 AWS/RDS

Aurora PostgreSQL 可以与 AWS AppSync 一起使用吗?

控制台中的 AWS Glue 控制列顺序

AWS EMR Airflow:Postgresql 连接器

Angular、Spring Boot 和 PostgreSQL 项目需要哪些 AWS 服务? [关闭]