No Postgres username specified in startup packet

i want to change the database connection to postgres and manage to change it through the config.clj. But when i run it require a user. i was wondering where do i input my postgres server user and password ? i can't find it after looking at the usual page (env.clj and postgres.clj)

Thank you for the answer

Hi @rarurara
Try looking here:
https://www.metabase.com/docs/latest/operations-guide/environment-variables.html#mb_db_user
https://www.metabase.com/docs/latest/operations-guide/environment-variables.html#mb_db_connection_uri

thank you for the fast response, i was wondering where do i add this enviorment variable.. i dont want to run export MB_DB_USER and pass everytime i want to access my postgres databse server for metabase. was wondering if i can just code it down ?

@rarurara I have no idea what you're trying to do, but I would recommend that you read all development information: https://github.com/metabase/metabase/wiki and https://github.com/metabase/metabase/blob/master/docs/developers-guide/start.md

Oh.. okay @flamber. Thank you for your time.

Hello @flamber

I have the same error on my side. I am migrating from h2 to postgres. Migration is ok, database is setted up, I can connect to it and it contains all tables. But when I start metabase (alongside postres) with docker-compose I have this error :

metabase-app    | 2022-04-13 16:05:26,662 ERROR metabase.core :: Metabase Initialization FAILED
metabase-app    | clojure.lang.ExceptionInfo: Unable to connect to Metabase postgres DB. {}
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735$fn__33736$fn__33737.invoke(setup.clj:102)
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735$fn__33736.invoke(setup.clj:100)
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735.invoke(setup.clj:94)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_$fn__33765$fn__33766.invoke(setup.clj:142)
metabase-app    | 	at metabase.util$do_with_us_locale.invokeStatic(util.clj:693)
metabase-app    | 	at metabase.util$do_with_us_locale.invoke(util.clj:679)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_$fn__33765.invoke(setup.clj:141)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_.invokeStatic(setup.clj:140)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_.invoke(setup.clj:136)
metabase-app    | 	at metabase.db$setup_db_BANG_$fn__33873.invoke(db.clj:61)
metabase-app    | 	at metabase.db$setup_db_BANG_.invokeStatic(db.clj:56)
metabase-app    | 	at metabase.db$setup_db_BANG_.invoke(db.clj:51)
metabase-app    | 	at metabase.core$init_BANG_.invokeStatic(core.clj:91)
metabase-app    | 	at metabase.core$init_BANG_.invoke(core.clj:74)
metabase-app    | 	at metabase.core$start_normally.invokeStatic(core.clj:135)
metabase-app    | 	at metabase.core$start_normally.invoke(core.clj:129)
metabase-app    | 	at metabase.core$_main.invokeStatic(core.clj:168)
metabase-app    | 	at metabase.core$_main.doInvoke(core.clj:162)
metabase-app    | 	at clojure.lang.RestFn.invoke(RestFn.java:397)
metabase-app    | 	at clojure.lang.AFn.applyToHelper(AFn.java:152)
metabase-app    | 	at clojure.lang.RestFn.applyTo(RestFn.java:132)
metabase-app    | 	at metabase.core.main(Unknown Source)
metabase-app    | Caused by: org.postgresql.util.PSQLException: FATAL: no PostgreSQL user name specified in startup packet

The docker-compose.yml file is (v0.41.6 because I am migrating from a h2 with this version) :

version: '3.9'
services:
  metabase-app:
    image: metabase/metabase:v0.41.6
    container_name: metabase-app
    hostname: metabase-app
    volumes:
    - mb_data:/metabase-data
    ports:
      - 3001:3000
    environment:
      MB_DB_TYPE: postgres
      MB_DB_DBNAME: metabase
      MB_DB_PORT: 5432
      MB_DB_USER_FILE: /run/secrets/db_user
      MB_DB_PASS_FILE: /run/secrets/db_password
      MB_DB_HOST: postgres-db
    networks:
      - metanet
    depends_on:
      - postgres-db
    secrets:
      - db_password
      - db_user
  postgres-db:
    image: postgres:latest
    container_name: postgres-db
    hostname: postgres-db
    environment:
      POSTGRES_USER_FILE: /run/secrets/db_user
      POSTGRES_DB: metabase
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    networks:
      - metanet
    secrets:
      - db_password
      - db_user
    volumes:
      - db_data:/var/lib/postgresql/data
    ports:
      - 5432:5432
networks:
  metanet:
    driver: bridge
secrets:
   db_password:
     file: db_password.txt
   db_user:
     file: db_user.txt
volumes:
  db_data:
  mb_data:

Looks like metabase is not reading secrets file.

If I add an MB_DB_USER in metabase environment vars, the error is now an IllegalArg exception about password empty string.

 2022-04-13 15:49:23,997 ERROR metabase.core :: Metabase Initialization FAILED
metabase-app    | clojure.lang.ExceptionInfo: Unable to connect to Metabase postgres DB. {}
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735$fn__33736$fn__33737.invoke(setup.clj:102)
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735$fn__33736.invoke(setup.clj:100)
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735.invoke(setup.clj:94)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_$fn__33765$fn__33766.invoke(setup.clj:142)
metabase-app    | 	at metabase.util$do_with_us_locale.invokeStatic(util.clj:693)
metabase-app    | 	at metabase.util$do_with_us_locale.invoke(util.clj:679)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_$fn__33765.invoke(setup.clj:141)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_.invokeStatic(setup.clj:140)
metabase-app    | 	at metabase.db.setup$setup_db_BANG_.invoke(setup.clj:136)
metabase-app    | 	at metabase.db$setup_db_BANG_$fn__33873.invoke(db.clj:61)
metabase-app    | 	at metabase.db$setup_db_BANG_.invokeStatic(db.clj:56)
metabase-app    | 	at metabase.db$setup_db_BANG_.invoke(db.clj:51)
metabase-app    | 	at metabase.core$init_BANG_.invokeStatic(core.clj:91)
metabase-app    | 	at metabase.core$init_BANG_.invoke(core.clj:74)
metabase-app    | 	at metabase.core$start_normally.invokeStatic(core.clj:135)
metabase-app    | 	at metabase.core$start_normally.invoke(core.clj:129)
metabase-app    | 	at metabase.core$_main.invokeStatic(core.clj:168)
metabase-app    | 	at metabase.core$_main.doInvoke(core.clj:162)
metabase-app    | 	at clojure.lang.RestFn.invoke(RestFn.java:397)
metabase-app    | 	at clojure.lang.AFn.applyToHelper(AFn.java:152)
metabase-app    | 	at clojure.lang.RestFn.applyTo(RestFn.java:132)
metabase-app    | 	at metabase.core.main(Unknown Source)
metabase-app    | Caused by: org.postgresql.util.PSQLException: Something unusual has occurred to cause the driver to fail. Please report this exception.
metabase-app    | 	at org.postgresql.Driver.connect(Driver.java:285)
metabase-app    | 	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
metabase-app    | 	at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
metabase-app    | 	at clojure.java.jdbc$get_driver_connection.invokeStatic(jdbc.clj:271)
metabase-app    | 	at clojure.java.jdbc$get_driver_connection.invoke(jdbc.clj:250)
metabase-app    | 	at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:411)
metabase-app    | 	at clojure.java.jdbc$get_connection.invoke(jdbc.clj:274)
metabase-app    | 	at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1111)
metabase-app    | 	at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1093)
metabase-app    | 	at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1182)
metabase-app    | 	at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
metabase-app    | 	at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1160)
metabase-app    | 	at clojure.java.jdbc$query.invoke(jdbc.clj:1144)
metabase-app    | 	at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invokeStatic(connection.clj:245)
metabase-app    | 	at metabase.driver.sql_jdbc.connection$can_connect_with_spec_QMARK_.invoke(connection.clj:242)
metabase-app    | 	at metabase.db.setup$fn__33730$verify_db_connection__33735$fn__33736$fn__33737.invoke(setup.clj:100)
metabase-app    | 	... 21 more
metabase-app    | Caused by: java.lang.IllegalArgumentException: Empty string 'password'

Any idea ?
Thank you for your time.

@prigal Metabase does not support _FILE secrets until version 0.42:
https://github.com/metabase/metabase/issues/16026

Thx !

For future readers :

  1. add MB_DB_USER and MB_DB_PASS to your docker-compose
  2. docker-compose up (everything should be ok)
  3. docker-compose stop
  4. change your version with latest (or the version you want) and remove MB_DB_USER and MB_DB_PASS vars (just keep the ones with _FILES)
  5. docker-compose up