Connection Refused while trying to add a Postgres Database

Hi, I have set up metabase on a local server. I tried connecting my postgresql database to Metabase to create a dashboard, but I got the following error:
Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.

What could have possibly gone wrong?

Thank you

Hi @alucor-it
Check if you have a firewall blocking.
Otherwise post:

  • "Diagnostic Info" from Admin > Troubleshooting
  • and the full stacktrace error from Admin > Troubleshooting > Logs

[dab00390-d9fb-46f1-92ac-330417779d30] 2021-12-14T15:37:41+05:30 DEBUG metabase.server.middleware.log POST /api/database 400 14.6 ms (0 DB calls)
{:valid false,
:dbname
"Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.",
:message
"Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections."}

[dab00390-d9fb-46f1-92ac-330417779d30] 2021-12-14T15:37:41+05:30 DEBUG metabase.server.middleware.log GET /api/database 200 11.7 ms (3 DB calls) App DB connections: 0/4 Jetty threads: 3/50 (4 idle, 0 queued) (46 total active threads) Queries in flight: 0 (0 queued)
[dab00390-d9fb-46f1-92ac-330417779d30] 2021-12-14T15:51:07+05:30 ERROR metabase.driver.util Database connection error
org.postgresql.util.PSQLException: Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
at org.postgresql.jdbc.PgConnection.(PgConnection.java:223)
at org.postgresql.Driver.makeConnection(Driver.java:465)
at org.postgresql.Driver.connect(Driver.java:264)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)
at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)
at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invokeStatic(connection.clj:245)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:242)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:253)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:249)
at metabase.driver.sql_jdbc$fn__85092.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85092.invoke(sql_jdbc.clj:33)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24608.invoke(util.clj:43)
at metabase.util$do_with_timeout$fn__6174.invoke(util.clj:354)
at clojure.core$binding_conveyor_fn$fn__5772.invoke(core.clj:2034)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at org.postgresql.core.PGStream.createSocket(PGStream.java:231)
at org.postgresql.core.PGStream.(PGStream.java:95)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
... 31 more
[dab00390-d9fb-46f1-92ac-330417779d30] 2021-12-14T15:51:07+05:30 ERROR metabase.api.database Cannot connect to Database
java.lang.Exception: Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:48)
at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:31)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at metabase.api.database$test_database_connection.invokeStatic(database.clj:421)
at metabase.api.database$test_database_connection.doInvoke(database.clj:411)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at metabase.api.database$fn__77076$test_connection_details__77081$fn__77082.invoke(database.clj:460)
at metabase.api.database$fn__77076$test_connection_details__77081.invoke(database.clj:450)
at metabase.api.database$fn__77108.invokeStatic(database.clj:488)
at metabase.api.database$fn__77108.invoke(database.clj:474)
at compojure.core$wrap_response$fn__32066.invoke(core.clj:160)
at compojure.core$wrap_route_middleware$fn__32050.invoke(core.clj:132)
at compojure.core$wrap_route_info$fn__32055.invoke(core.clj:139)
at compojure.core$wrap_route_matches$fn__32059.invoke(core.clj:151)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078.invoke(core.clj:200)
at metabase.server.middleware.auth$enforce_authentication$fn__70282.invoke(auth.clj:14)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078.invoke(core.clj:200)
at compojure.core$make_context$handler__32106.invoke(core.clj:289)
at compojure.core$make_context$fn__32110.invoke(core.clj:299)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$make_context$fn__32110.invoke(core.clj:300)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at metabase.api.routes$fn__79759$fn__79762.invoke(routes.clj:56)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078.invoke(core.clj:200)
at clojure.lang.AFn.applyToHelper(AFn.java:160)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.core$apply.invoke(core.clj:662)
at metabase.server.routes$fn__79904$fn__79905.doInvoke(routes.clj:57)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078.invoke(core.clj:200)
at compojure.core$make_context$handler__32106.invoke(core.clj:289)
at compojure.core$make_context$fn__32110.invoke(core.clj:299)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32059.invoke(core.clj:153)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32059.invoke(core.clj:153)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32059.invoke(core.clj:153)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078$f__32079$respond_SINGLEQUOTE___32080.invoke(core.clj:197)
at metabase.server.routes$fn__79892$fn__79894.invoke(routes.clj:41)
at compojure.core$routes$fn__32078$f__32079.invoke(core.clj:198)
at compojure.core$routes$fn__32078.invoke(core.clj:200)
at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__77364.invoke(exceptions.clj:98)
at metabase.server.middleware.exceptions$catch_api_exceptions$fn__77361.invoke(exceptions.clj:86)
at metabase.server.middleware.log$log_api_call$fn__80359$fn__80360$fn__80361.invoke(log.clj:209)
at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invokeStatic(diagnostic.clj:15)
at metabase.driver.sql_jdbc.execute.diagnostic$do_with_diagnostic_info.invoke(diagnostic.clj:9)
at metabase.server.middleware.log$log_api_call$fn__80359$fn__80360.invoke(log.clj:201)
at toucan.db$do_with_call_counting.invokeStatic(db.clj:216)
at toucan.db$do_with_call_counting.invoke(db.clj:209)
at metabase.server.middleware.log$log_api_call$fn__80359.invoke(log.clj:200)
at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__83572.invoke(browser_cookie.clj:30)
at metabase.server.middleware.security$add_security_headers$fn__59226.invoke(security.clj:147)
at metabase.server.middleware.json$wrap_json_body$fn__82716.invoke(json.clj:62)
at metabase.server.middleware.json$wrap_streamed_json_response$fn__82734.invoke(json.clj:98)
at metabase.server.middleware.offset_paging$handle_paging$fn__59250.invoke(offset_paging.clj:42)
at ring.middleware.keyword_params$wrap_keyword_params$fn__83839.invoke(keyword_params.clj:55)
at ring.middleware.params$wrap_params$fn__83855.invoke(params.clj:69)
at metabase.server.middleware.misc$maybe_set_site_url$fn__34077.invoke(misc.clj:59)
at metabase.server.middleware.session$bind_current_user$fn__44978$fn__44979.invoke(session.clj:257)
at metabase.server.middleware.session$do_with_current_user.invokeStatic(session.clj:238)
at metabase.server.middleware.session$do_with_current_user.invoke(session.clj:230)
at metabase.server.middleware.session$bind_current_user$fn__44978.invoke(session.clj:256)
at metabase.server.middleware.session$wrap_current_user_info$fn__44965.invoke(session.clj:216)
at metabase.server.middleware.session$wrap_session_id$fn__44951.invoke(session.clj:162)
at metabase.server.middleware.auth$wrap_api_key$fn__70290.invoke(auth.clj:27)
at ring.middleware.cookies$wrap_cookies$fn__83759.invoke(cookies.clj:216)
at metabase.server.middleware.misc$add_content_type$fn__34060.invoke(misc.clj:27)
at metabase.server.middleware.misc$disable_streaming_buffering$fn__34085.invoke(misc.clj:76)
at ring.middleware.gzip$wrap_gzip$fn__83801.invoke(gzip.clj:86)
at metabase.server.middleware.misc$bind_request$fn__34088.invoke(misc.clj:93)
at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__83588.invoke(ssl.clj:38)
at metabase.server$async_proxy_handler$fn__80132.invoke(server.clj:71)
at metabase.server.proxy$org.eclipse.jetty.server.handler.AbstractHandler$ff19274a.handle(Unknown Source)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)
at org.eclipse.jetty.server.Server.handle(Server.java:516)
at org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)
at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: org.postgresql.util.PSQLException: Connection to IP:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:303)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:51)
at org.postgresql.jdbc.PgConnection.(PgConnection.java:223)
at org.postgresql.Driver.makeConnection(Driver.java:465)
at org.postgresql.Driver.connect(Driver.java:264)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)
at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)
at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)
at clojure.java.jdbc$db_query_with_resultset_STAR
.invokeStatic(jdbc.clj:1111)
at clojure.java.jdbc$db_query_with_resultset_STAR
.invoke(jdbc.clj:1093)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)
at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invokeStatic(connection.clj:245)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:242)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:253)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:249)
at metabase.driver.sql_jdbc$fn__85092.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85092.invoke(sql_jdbc.clj:33)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24608.invoke(util.clj:43)
at metabase.util$do_with_timeout$fn__6174.invoke(util.clj:354)
at clojure.core$binding_conveyor_fn$fn__5772.invoke(core.clj:2034)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
... 1 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
at java.base/java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
at java.base/java.net.AbstractPlainSocketImpl.connect(Unknown Source)
at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
at java.base/java.net.Socket.connect(Unknown Source)
at org.postgresql.core.PGStream.createSocket(PGStream.java:231)
at org.postgresql.core.PGStream.(PGStream.java:95)
at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:98)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
... 31 more

Hi, I have attached the log trace.

@alucor-it

  1. Post "Diagnostic Info" from Admin > Troubleshooting
  2. Check your firewall: https://www.metabase.com/docs/latest/troubleshooting-guide/datawarehouse.html

Diagnostic Info:
{
"browser-info": {
"language": "en-US",
"platform": "Win32",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36",
"vendor": "Google Inc."
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "11.0.13+8",
"java.vendor": "Eclipse Adoptium",
"java.vendor.url": "https://adoptium.net/",
"java.version": "11.0.13",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "11.0.13+8",
"os.name": "Linux",
"os.version": "4.15.0-163-generic",
"user.language": "en",
"user.timezone": "GMT"
},
"metabase-info": {
"databases": [
"h2"
],
"hosting-env": "unknown",
"application-database": "h2",
"application-database-details": {
"database": {
"name": "H2",
"version": "1.4.197 (2018-03-18)"
},
"jdbc-driver": {
"name": "H2 JDBC Driver",
"version": "1.4.197 (2018-03-18)"
}
},
"run-mode": "prod",
"version": {
"date": "2021-12-10",
"tag": "v0.41.4",
"branch": "release-x.41.4",
"hash": "471cfb9"
},
"settings": {
"report-timezone": null
}
}
}

@alucor-it I cannot see if you're using Docker or just the JAR. But make sure that where ever Metabase is run from can access the database.

Hi, I have installed postgres using docker.
Metabase is also a docekr container.

@alucor-it Then are you making sure that the containers can see each other?
It is impossible for me or anyone to help unless you post your Docker run commands, or docker-compose.
Unless you're familiar with Docker, then it might be easier for you to use the JAR instead:
https://www.metabase.com/learn/getting-started/installing

I resolved the issue. My postgres database is in a docker container and the port was not accessible. I updated the necessary files and now I can view the tables on Metabase.

Thank you