将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 一起使用吗?