Cant connect to mySQL database

Hi, I'm running metabase on heroku and im not able to connect my mysql database in metabase.
The error is something like "socket failed to connect , connection refused" . This error only happens if i run metabase from heroku.

Hi @shail
Post "Diagnostic Info" from Admin > Troubleshooting.
And post the full stacktrace error from Admin > Troubleshooting > Logs.

{
"browser-info": {
"language": "en-US",
"platform": "Linux x86_64",
"userAgent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36",
"vendor": "Google Inc."
},
"system-info": {
"file.encoding": "UTF-8",
"java.runtime.name": "OpenJDK Runtime Environment",
"java.runtime.version": "1.8.0_302-heroku-b08",
"java.vendor": "Oracle Corporation",
"java.vendor.url": "http://java.oracle.com/",
"java.version": "1.8.0_302-heroku",
"java.vm.name": "OpenJDK 64-Bit Server VM",
"java.vm.version": "25.302-b08",
"os.name": "Linux",
"os.version": "4.4.0-1096-aws",
"user.language": "en",
"user.timezone": "Etc/UTC"
},
"metabase-info": {
"databases": [
"h2",
"postgres"
],
"hosting-env": "heroku",
"application-database": "postgres",
"application-database-details": {
"database": {
"name": "PostgreSQL",
"version": "13.4 (Ubuntu 13.4-1.pgdg20.04+1)"
},
"jdbc-driver": {
"name": "PostgreSQL JDBC Driver",
"version": "42.2.23"
}
},
"run-mode": "prod",
"version": {
"tag": "v0.41.0",
"date": "2021-10-06",
"branch": "release-x.41.x",
"hash": "c529fe2"
},
"settings": {
"report-timezone": null
}
}
}

java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1372)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
at org.mariadb.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
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:240)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:237)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:248)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:244)
at metabase.driver.sql_jdbc$fn__85044.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85044.invoke(sql_jdbc.clj:33)
at metabase.driver.mysql$fn__82925.invokeStatic(mysql.clj:72)
at metabase.driver.mysql$fn__82925.invoke(mysql.clj:68)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24605.invoke(util.clj:34)
at metabase.util$do_with_timeout$fn__6172.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.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:512)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1367)
... 32 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
... 34 more
[92bd7d31-21b0-42d3-aca8-92763840c68a] 2021-10-14T13:04:42+05:30 ERROR metabase.api.database Cannot connect to Database
java.lang.Exception: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:39)
at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:22)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at metabase.api.database$test_database_connection.invokeStatic(database.clj:414)
at metabase.api.database$test_database_connection.doInvoke(database.clj:404)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at metabase.api.database$fn__77030$test_connection_details__77035$fn__77036.invoke(database.clj:461)
at metabase.api.database$fn__77030$test_connection_details__77035.invoke(database.clj:443)
at metabase.api.database$fn__77062.invokeStatic(database.clj:481)
at metabase.api.database$fn__77062.invoke(database.clj:467)
at compojure.core$wrap_response$fn__32047.invoke(core.clj:160)
at compojure.core$wrap_route_middleware$fn__32031.invoke(core.clj:132)
at compojure.core$wrap_route_info$fn__32036.invoke(core.clj:139)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:151)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at metabase.server.middleware.auth$enforce_authentication$fn__70236.invoke(auth.clj:14)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at compojure.core$make_context$handler__32087.invoke(core.clj:289)
at compojure.core$make_context$fn__32091.invoke(core.clj:299)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at metabase.api.routes$fn__79711$fn__79714.invoke(routes.clj:56)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.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__79856$fn__79857.doInvoke(routes.clj:57)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at compojure.core$make_context$handler__32087.invoke(core.clj:289)
at compojure.core$make_context$fn__32091.invoke(core.clj:299)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at metabase.server.routes$fn__79844$fn__79846.invoke(routes.clj:41)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__77318.invoke(exceptions.clj:98)
at metabase.server.middleware.exceptions$catch_api_exceptions$fn__77315.invoke(exceptions.clj:86)
at metabase.server.middleware.log$log_api_call$fn__80311$fn__80312$fn__80313.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__80311$fn__80312.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__80311.invoke(log.clj:200)
at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__83524.invoke(browser_cookie.clj:30)
at metabase.server.middleware.security$add_security_headers$fn__59173.invoke(security.clj:144)
at metabase.server.middleware.json$wrap_json_body$fn__82668.invoke(json.clj:62)
at metabase.server.middleware.json$wrap_streamed_json_response$fn__82686.invoke(json.clj:98)
at metabase.server.middleware.offset_paging$handle_paging$fn__59197.invoke(offset_paging.clj:42)
at ring.middleware.keyword_params$wrap_keyword_params$fn__83791.invoke(keyword_params.clj:55)
at ring.middleware.params$wrap_params$fn__83807.invoke(params.clj:69)
at metabase.server.middleware.misc$maybe_set_site_url$fn__34057.invoke(misc.clj:59)
at metabase.server.middleware.session$bind_current_user$fn__44959$fn__44960.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__44959.invoke(session.clj:256)
at metabase.server.middleware.session$wrap_current_user_info$fn__44946.invoke(session.clj:216)
at metabase.server.middleware.session$wrap_session_id$fn__44932.invoke(session.clj:162)
at metabase.server.middleware.auth$wrap_api_key$fn__70244.invoke(auth.clj:27)
at ring.middleware.cookies$wrap_cookies$fn__83711.invoke(cookies.clj:216)
at metabase.server.middleware.misc$add_content_type$fn__34040.invoke(misc.clj:27)
at metabase.server.middleware.misc$disable_streaming_buffering$fn__34065.invoke(misc.clj:76)
at ring.middleware.gzip$wrap_gzip$fn__83753.invoke(gzip.clj:86)
at metabase.server.middleware.misc$bind_request$fn__34068.invoke(misc.clj:93)
at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__83540.invoke(ssl.clj:38)
at metabase.server$async_proxy_handler$fn__80084.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.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
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.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1372)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
at org.mariadb.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
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:240)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:237)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:248)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:244)
at metabase.driver.sql_jdbc$fn__85044.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85044.invoke(sql_jdbc.clj:33)
at metabase.driver.mysql$fn__82925.invokeStatic(mysql.clj:72)
at metabase.driver.mysql$fn__82925.invoke(mysql.clj:68)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24605.invoke(util.clj:34)
at metabase.util$do_with_timeout$fn__6172.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.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1 more
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:512)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1367)
... 32 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
... 34 more
[92bd7d31-21b0-42d3-aca8-92763840c68a] 2021-10-14T13:04:42+05:30 ERROR metabase.driver.util Database connection error
java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1372)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
at org.mariadb.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
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:240)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:237)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:248)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:244)
at metabase.driver.sql_jdbc$fn__85044.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85044.invoke(sql_jdbc.clj:33)
at metabase.driver.mysql$fn__82925.invokeStatic(mysql.clj:72)
at metabase.driver.mysql$fn__82925.invoke(mysql.clj:68)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24605.invoke(util.clj:34)
at metabase.util$do_with_timeout$fn__6172.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.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:512)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1367)
... 32 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
... 34 more
[92bd7d31-21b0-42d3-aca8-92763840c68a] 2021-10-14T13:04:42+05:30 ERROR metabase.api.database Cannot connect to Database
java.lang.Exception: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at metabase.driver.util$can_connect_with_details_QMARK_.invokeStatic(util.clj:39)
at metabase.driver.util$can_connect_with_details_QMARK_.doInvoke(util.clj:22)
at clojure.lang.RestFn.invoke(RestFn.java:442)
at metabase.api.database$test_database_connection.invokeStatic(database.clj:414)
at metabase.api.database$test_database_connection.doInvoke(database.clj:404)
at clojure.lang.RestFn.invoke(RestFn.java:425)
at metabase.api.database$fn__77030$test_connection_details__77035$fn__77036.invoke(database.clj:461)
at metabase.api.database$fn__77030$test_connection_details__77035.invoke(database.clj:443)
at metabase.api.database$fn__77062.invokeStatic(database.clj:481)
at metabase.api.database$fn__77062.invoke(database.clj:467)
at compojure.core$wrap_response$fn__32047.invoke(core.clj:160)
at compojure.core$wrap_route_middleware$fn__32031.invoke(core.clj:132)
at compojure.core$wrap_route_info$fn__32036.invoke(core.clj:139)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:151)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at metabase.server.middleware.auth$enforce_authentication$fn__70236.invoke(auth.clj:14)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at compojure.core$make_context$handler__32087.invoke(core.clj:289)
at compojure.core$make_context$fn__32091.invoke(core.clj:299)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$make_context$fn__32091.invoke(core.clj:300)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at metabase.api.routes$fn__79711$fn__79714.invoke(routes.clj:56)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.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__79856$fn__79857.doInvoke(routes.clj:57)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at compojure.core$make_context$handler__32087.invoke(core.clj:289)
at compojure.core$make_context$fn__32091.invoke(core.clj:299)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at compojure.core$wrap_route_matches$fn__32040.invoke(core.clj:153)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059$f__32060$respond_SINGLEQUOTE___32061.invoke(core.clj:197)
at metabase.server.routes$fn__79844$fn__79846.invoke(routes.clj:41)
at compojure.core$routes$fn__32059$f__32060.invoke(core.clj:198)
at compojure.core$routes$fn__32059.invoke(core.clj:200)
at metabase.server.middleware.exceptions$catch_uncaught_exceptions$fn__77318.invoke(exceptions.clj:98)
at metabase.server.middleware.exceptions$catch_api_exceptions$fn__77315.invoke(exceptions.clj:86)
at metabase.server.middleware.log$log_api_call$fn__80311$fn__80312$fn__80313.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__80311$fn__80312.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__80311.invoke(log.clj:200)
at metabase.server.middleware.browser_cookie$ensure_browser_id_cookie$fn__83524.invoke(browser_cookie.clj:30)
at metabase.server.middleware.security$add_security_headers$fn__59173.invoke(security.clj:144)
at metabase.server.middleware.json$wrap_json_body$fn__82668.invoke(json.clj:62)
at metabase.server.middleware.json$wrap_streamed_json_response$fn__82686.invoke(json.clj:98)
at metabase.server.middleware.offset_paging$handle_paging$fn__59197.invoke(offset_paging.clj:42)
at ring.middleware.keyword_params$wrap_keyword_params$fn__83791.invoke(keyword_params.clj:55)
at ring.middleware.params$wrap_params$fn__83807.invoke(params.clj:69)
at metabase.server.middleware.misc$maybe_set_site_url$fn__34057.invoke(misc.clj:59)
at metabase.server.middleware.session$bind_current_user$fn__44959$fn__44960.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__44959.invoke(session.clj:256)
at metabase.server.middleware.session$wrap_current_user_info$fn__44946.invoke(session.clj:216)
at metabase.server.middleware.session$wrap_session_id$fn__44932.invoke(session.clj:162)
at metabase.server.middleware.auth$wrap_api_key$fn__70244.invoke(auth.clj:27)
at ring.middleware.cookies$wrap_cookies$fn__83711.invoke(cookies.clj:216)
at metabase.server.middleware.misc$add_content_type$fn__34040.invoke(misc.clj:27)
at metabase.server.middleware.misc$disable_streaming_buffering$fn__34065.invoke(misc.clj:76)
at ring.middleware.gzip$wrap_gzip$fn__83753.invoke(gzip.clj:86)
at metabase.server.middleware.misc$bind_request$fn__34068.invoke(misc.clj:93)
at metabase.server.middleware.ssl$redirect_to_https_middleware$fn__83540.invoke(ssl.clj:38)
at metabase.server$async_proxy_handler$fn__80084.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.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
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.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLNonTransientConnectionException: Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:192)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1372)
at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:635)
at org.mariadb.jdbc.MariaDbConnection.newConnection(MariaDbConnection.java:150)
at org.mariadb.jdbc.Driver.connect(Driver.java:89)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
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:240)
at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:237)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invokeStatic(connection.clj:248)
at metabase.driver.sql_jdbc.connection$can_connect_QMARK_.invoke(connection.clj:244)
at metabase.driver.sql_jdbc$fn__85044.invokeStatic(sql_jdbc.clj:35)
at metabase.driver.sql_jdbc$fn__85044.invoke(sql_jdbc.clj:33)
at metabase.driver.mysql$fn__82925.invokeStatic(mysql.clj:72)
at metabase.driver.mysql$fn__82925.invoke(mysql.clj:68)
at clojure.lang.MultiFn.invoke(MultiFn.java:234)
at metabase.driver.util$can_connect_with_details_QMARK_$fn__24605.invoke(util.clj:34)
at metabase.util$do_with_timeout$fn__6172.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.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1 more
Caused by: java.sql.SQLNonTransientConnectionException: Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.createException(ExceptionFactory.java:73)
at org.mariadb.jdbc.internal.util.exceptions.ExceptionFactory.create(ExceptionFactory.java:183)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:255)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createConnection(AbstractConnectProtocol.java:512)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:1367)
... 32 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:607)
at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.createSocket(AbstractConnectProtocol.java:250)
... 34 more
[92bd7d31-21b0-42d3-aca8-92763840c68a] 2021-10-14T13:04:42+05:30 DEBUG metabase.server.middleware.log POST /api/database 400 82.8 ms (0 DB calls)
{:valid false,
:dbname
"Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)",
:message
"Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused (Connection refused)"}

@shail You are trying to connect to localhost:3306, but localhost is the server, so that's why you cannot connect, since there's not MySQL running on the Heroku instance running Metabase.

So is there no way to connect mysql with heroku?

@shail Yes, but localhost is not a server on the internet. You need to provide the address to your database, which is accessible from the Metabase instance.
https://en.wikipedia.org/wiki/Localhost

oh i see but how do you provide such an address? by some data hosting sites or something?

@shail You need to either make your database accessible on the internet, or move your database to the same place as you're running Metabase.
Just like I said in Sharing dashboards - if you don't know how to do this, then hire someone to help you, so you don't end up exposing all your data on the internet.
Setting up servers requires skills.