Not able to connect to public postgres from EC2 - postgresql

I wanted to connect to a public postgres from my EC2 machine but not able to establish a connection. I have added a outbound rule for postgress port 543 but no luck so far.
Below is the details of the postgress i am trying to connect.
conn = psycopg2.connect(
host="hh-pgsql-public.ebi.ac.uk",
database="pfmegrnargs",
user="reader",
password="NWDMCE5xdipIjRrp")
Also attached is the outbound rule and error message for reference.
Appreciate all your help !!

Related

Cannot connect to RDS PostgeSQL instance

I have just created a new RDS instance with PostgreSQL but I cannot connect to it. I'm using the following command to connect:
psql --host=<dbendpoint> --port=5432 --username=<user> --password --dbname=<dbname>
I have been searching for information related to the problem, but none of the solutions have worked.
I have public access to the DB enabled.
I have allowed all traffic in the security group of the database.
The error I'm getting is this one:
psql: error: could not connect to server: Connection timed out
Is the server running on host "database-test-1-by-hand.cwsxzm3kzzim.us-west-1.rds.amazonaws.com" (204.236.171.212) and accepting
TCP/IP connections on port 5432?
Any idea about what's happening?
Update
Here are the options from the VPC the database is on:
I remember enabling the DNS hostname to allow public access.
Update 2
I have created an EC2 instance in the same VPC where the db instance is, and I have been able to connect to it.
The db instance is deployed in the same VPC, where I have 4 different subnets, two public and two private. This is the configuration:

is it possible to connect to AWS RDS db instance(postgres) through ubuntu server installed out of aws(in my local)?

Actually i have to migrate the data from AWS RDS postgres to on premises postgres.
For this i have to establish connectivity between my AWS RDS db instance and on premises(ubuntu server).
I have already configured the inbound rules of security group in my RDS DB instance. But still i am not able to connect to AWS RDS db instance directly through my Ubuntu Machine..
Is there any issue with the firewall of my VM??
Error which i am getting:
psql: error: could not connect to server: Connection timed out
Is the server running on host "XXXXXX" (X.X.X.X/X) and accepting
TCP/IP connections on port 5432?
The database setting for publicly accessible is set to NO.
There are both public as well as private subnet associated with my RDS instance.
i have provided the type as postgreSQL , port 5432 , protocol TCP, source custom ip (X.X.X.X/32)
Any help will be much appreciated.
To access an Amazon RDS database from the Internet:
Set the database to Publicly Accessible = Yes (This resolves the DNS name to a Public IP address)
Put the database in a Public Subnet (Mixing public & private subnets in a Subnet Group is not advisable, because the results will be random! It will only be in one subnet at any time, but might change subnets when upgraded or failover is triggered.)
Add a Security Group that allows Inbound access on the appropriate port (PostgreSQL = 5432) from your IP address
Reference the database via its DNS Name shown in the Amazon RDS management console
Alternatively, keep the database in a Private Subnet and access via a VPN Connection or by Port Forwarding via a Bastion Server.

AWS/RDS rejecting file import from pgAdmin

I'm using pgAdmin to connect to my RDS instance, which has an ssh tunnel through a vpc. That element is mostly fine; I can connect, and query the tables, and create tables. The issue is the I can not import CSVs into the newly created tables; the import wizard is rejected with 'exit code 2' (connection rejected).
I've tried opening a new port specifically to Postgres traffic, but no dice. this seems like it should be fairly basic; I can do it in my RDS instance that doesn't have SSH no problem (succeeded with the same file, same terminal, etc). It really seems like a basic item but I can't seem to even find a guide.
EDIT/Addition: I've made some progress. if I run a command like so:
ssh -N -L 1234:<rds-endpoint>:5432 ec2-user#<ec2-public-ip-addres> -i /Users/user/.ssh/permissionsfile.pem
and then in pgadmin run as a normal connection to:
host: localhost
port: 1234
username: rds-username
maintenancedatabasae: rds-database
password: rds-usernames-password
this works. I'm mostly just baffled that I can't figure out how to put that same ssh info into pgadmin. typically it's a super simple copy and paste operation.
First, if RDS is located in private subnet, pgAdmin cannot connect to RDS even if the private subnet is connected to NAT Gatway which is in public subnet. So to make the private subnet public, set Internet Gateway to the private subnet instead of NAT Gatway.
Second, check the security group's inbound rule of 5432(RDS postgresql port) is open to your computer which has pgAdmin.
Third, check Public access of RDS setting is Yes showing below. If it's No, tools outside your VPC cannot connect to RDS.
Tell me you could successfully connect to RDS with pgAdmin or not with 3 solutions above.

PGAdmin III cannot connect AWS RDS

I am trying to connect AWS RDS PostgreSql from PgAdmin 3. I followed the below link
http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToPostgreSQLInstance.html
In Security Group, I also added PostgreSQL and All traffic as below
The "publicly accessible" flag was enabled (updated after Mark B's comment)
I got the error from PGAdmin3
Very appreciate for any suggestion
******UPDATE*******
I can connect pgAdminIII to AWS RDS successfully using home wifi, but cannot connect using office wifi.
My concern is:
Was the port 5432 blocked by office wifi?
How can I configure/update the port without impacting to current API?
Note: My current API is working well (CRUD)
Can you can test your connection to a DB instance using common Linux or Windows tools first?
From a Linux or Unix terminal, you can test the connection by typing the following (replace with the endpoint and with the port of your DB instance):
$nc -zv DB-instance-endpoint port
For example, the following shows a sample command and the return value:
$nc -zv postgresql1.c6c8mn7tsdgv0.us-west-2.rds.amazonaws.com 8299
Connection to postgresql1.c6c8mn7tsdgv0.us-west-2.rds.amazonaws.com
8299 port [tcp/vvr-data] succeeded!
Windows users can use Telnet to test the connection to a DB instance. Note that Telnet actions are not supported other than for testing the connection. If a connection is successful, the action returns no message. If a connection is not successful, you receive an error message such as the following:
C:>telnet sg-postgresql1.c6c8mntzhgv0.us-west-2.rds.amazonaws.com
8299
Connecting To sg-postgresql1.c6c8mntzhgv0.us-west-2.rds.amazonaws.com...Could not
open connection to the host, on port 819: Connect failed
If Telnet actions return success, then you are good to go.
If you are trying to access it from a network which is not listed for that port. you need to add inbound rules for those network IPs from AMAZON RDS system
You will also need to set Public accessibility true under Connect & security tab in RDS console.
Read this post.In your security group go to unbound rules and add my ip.
and make sure your database is public.
https://serverfault.com/questions/656079/unable-to-connect-to-public-postgresql-rds-instance

can not connect to to Postgres in heroku through pgAdmin

I am trying to connect from my office network to the database that create in heroku (Postgres). I am using Pgadmin but the connection fail:
could not connect to server:Connection timed out is the server running on host "ec2-54-204-43-200.compute-1.amazonaws.com" and accepting TCP/IP connections on port 5432?
but when I connect from my home this error doesn't exist so I think is a network issue that I have to resolve but I dont know what to see, just I disable my firewall but even that is not working .
Someone can know what can i do ?
Ok, I got the solution. I talk with the Networking departmment and the problem was to able the ip and port where I needed to connect it in the firewall.