What is the format for the PostgreSQL connection string (URL postgres://...
) when the host is not the localhost?

- 25,981
- 23
- 80
- 125

- 6,457
- 3
- 19
- 9
-
1This link provides information about connection string, driver class, and driver library. https://docs.oracle.com/cd/E19509-01/820-3497/agqka/index.html Also to download the recent jar files, use this link: https://jdbc.postgresql.org/download.html – Agent 0 Aug 02 '19 at 22:21
-
This might be useful: https://www.prisma.io/docs/concepts/database-connectors/postgresql#connection-details – Aniruddha Oct 26 '21 at 10:03
-
8e.g `postgres://postgres:123456@127.0.0.1:5432/dummy` – Eric Mar 02 '22 at 08:47
-
Related question about pgAdmin: https://stackoverflow.com/questions/61479570/how-to-connect-to-database-through-jdbc-in-pgadmin#comment125419866_62014740 – Ryan Apr 19 '22 at 18:30
9 Answers
If you use Libpq binding for respective language, according to its documentation URI is formed as follows:
postgresql://[user[:password]@][netloc][:port][/dbname][?param1=value1&...]
Here are examples from same document
postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret

- 49,297
- 16
- 112
- 153

- 10,088
- 1
- 16
- 10
-
85This workded for me postgres://user:secret@localhost:5432/mydatabasename – George Feb 16 '18 at 15:04
-
11`postgresql://localhost/mydb?user=other&password=secret` did the trick – karuhanga Oct 29 '18 at 14:31
-
1If you still have problems, check the special characters in your password, change it temporarily for only numbers and test the URL (just to validate that your connection is working as expected) – Edenshaw Feb 21 '19 at 16:29
-
My issue was to simply copying the "jdbc:postgres:// ..." string out of DataGrip. Unfortunately the error message did not help. Thank you! – barfoos Jun 13 '19 at 18:07
-
10To add to @Edenshaw's note on special characters, the password needs to be url encoded, I just stumbled upon this problem with a password containing the '@' character (replacing it with %40 solved it) – Tom Hemmes Jun 30 '20 at 11:28
-
Weirdly enough, I think it's supposed to be `ApplicationName` and not `application_name`. I tried a `show application_name;` query and it only used the application name I supplied if I supplied it as `ApplicationName=whatever` in the connection string. – Dave Yarwood Sep 28 '21 at 14:12
-
Strange, i could only get the jdbc:postgresql://localhost:5432/DB?user=X&password=Y syntax to work, not the user:password@host. Using version postgresql-42.3.3.jar – siggemannen Mar 15 '22 at 12:35
The following worked for me
const conString = "postgres://YourUserName:YourPassword@YourHostname:5432/YourDatabaseName";

- 32,666
- 37
- 119
- 162
-
-
9
-
3@RyuS. `The URI scheme designator can be either postgresql:// or postgres://` From here: https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-CONNSTRING – Grant Oberhauser Jun 26 '21 at 21:13
-
1In case your hostname is a url, you can use `ping hostname` to get IP address. – Akansh Sep 03 '21 at 08:14
Here is the documentation for JDBC, the general URL is "jdbc:postgresql://host:port/database"
Chapter 3 here documents the ADO.NET connection string,
the general connection string is Server=host;Port=5432;User Id=username;Password=secret;Database=databasename;
PHP documentation us here, the general connection string is
host=hostname port=5432 dbname=databasename user=username password=secret
If you're using something else, you'll have to tell us.

- 223,662
- 58
- 417
- 506
-
2Thanks. The ADO.NET format is also what you need to pass to `UseNpgsql()` for Entity Framework Core. I was a little confused whether it should be that or the postgres:// URL (which I've also seen as "postgresql://") – CrazyPyro Oct 21 '20 at 12:44
-
libpq (offical postgresql client lib) understands both URL form and name=value pairs form. if you connection is not ultimately through libpq then consult the documentation for your framework. – Jasen Nov 30 '21 at 20:59
-
the connection url for postgres syntax:
"Server=host ipaddress;Port=5432;Database=dbname;User Id=userid;Password=password;
example:
"Server=192.168.1.163;Port=5432;Database=postgres;User Id=postgres;Password=root;

- 880
- 9
- 10
server.address=10.20.20.10
server.port=8080
database.user=username
database.password=password
spring.datasource.url=jdbc:postgresql://${server.address}/${server.port}?user=${database.user}&password=${database.password}

- 303
- 3
- 10
-
-
-
What about database name? Why database is on the same port as the server? – parsecer Apr 27 '23 at 15:42
The connection string can also be retrieved programmatically from working DB connectors.
For instance I sometimes extract connection strings from SQLAlchemy's engine
, like this:
> db_engine.url
postgres://{user}:{password}@{host}:{port}/{db_name}?sslmode=require

- 1,483
- 1
- 11
- 18

- 2,303
- 6
- 14
- The general format of database url
DATABASE_URL=postgresql://username:password@host:port/dtabase_name
- If you are using postgresql sql with asyncpg the database url would be
DATABASE_URL=postgresql+asyncpg://username:password@host:port/dtabase_name
- Remember to never push your database password so you should use your
DATABASE_URL
in.env
file- The
port
is optional if you use the default one
Like this you can connect both local and remote database think of that once you want to check an issue that occur in the remote deployed versions
ex of localhost DATABASE_URL would be
DATABASE_URL=postgresql+asyncpg://postgres:dina@localhost/mysens
- If you deployed your database on Heroku and you want to connect it with your local app, go to Heroku Postgres installed add-on go to settings and click on view credential in Database Credentials and use the
uri
to connect to your database
DATABASE_URL=postgresql+asyncpg://sqnalxxxxxxxxx:160xxxx2bdd2942b26c93c392xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx@ec2-35-173-91-114.compute-1.amazonaws.com:5432/del6o4cjoqfsov

- 7,074
- 10
- 69
- 74
Some people seem to misread the database name as a server name and the host as a postgresql server? A host hosts a postgresql server that has a database. Or am I missing something.
postgresql://my_host/&server=my_postgresql_server?user=my_user&port=my_port&password=my_password&database=my_database
Example:
my_host: can be "localhost" (but that is not in the question) or an ip address of a host.
postgresql://my_host/&server=postgres?user=postgres&port=5432&password=postgres&database=test_db
Worked for me in Python with sqlalchemy and a postgresql localhost running. Needs sqlalchemy, postgresql, and psycopg2 to get it to work.
PS: The question is about a postgres://... URL, but this would not work here. Instead, you need postgresql, and what is run in the end in Python is dialect+driver (see Database URLs) = postgresql+psycopg2, without having to write it like this.

- 7,175
- 4
- 57
- 90