New Docker Install - App Error Plugin caching_sha2_password

Version ie <v5.10.30>Not sure, pulled on 2024-11-22 from Github, default image in docker-compose.yml

Environment <Docker/Shared Hosting/Zip/Other>Contabo VPS

Checklist

  • Can you replicate the issue on our v5 demo site https:// demo. invoiceninja. com or https:// react. invoicing. co/demo? NA
  • Have you searched existing issues? Yes, extensively
  • Have you inspected the logs in storage/logs/laravel.log for any errors? Yes

Describe the bug

FTR, I have an older version 5.5 that is working fine. I’m spinning up the newer version to migrate my old info over.
Following instructions at https:// github . com/invoiceninja/dockerfiles/blob/master/README.md I have git cloned the repo, set permissions and ownership to the docker/app folder, input all ENV variables and adjusted the docker-compose.yml. Nothing much different than stock except for the addition of my external bridge network and commenting out the extra_hosts sections.
I have also tried spinning this up with no modifications except setting the env variables and am getting the same error.

Steps To Reproduce

mkdir invoiceninja
git clone https :// github. com/invoiceninja/dockerfiles.git
cd dockerfiles
generate app key
update env variables
chmod 755 docker/app/public
sudo chown -R 1500:1500 docker/app
docker compose up -d && docker compose logs -f

Expected Behavior

I expected the container to spin up and allow me to access the app.

Additional context

Screenshots

Logs

APP LOGS:

The command “mysql --user=”${:LARAVEL_LOAD_USER}" --password=“${:LARAVEL_L
OAD_PASSWORD}” --host=“${:LARAVEL_LOAD_HOST}” --port=“${:LARAVEL_LOAD_PORT}
" --database=”${:LARAVEL_LOAD_DATABASE}" < “${:LARAVEL_LOAD_PATH}”" failed.

Exit Code: 1(General error)

Working directory: /var/www/app

Output:

Error Output:

ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: Error
loading shared library /usr/lib/mariadb/plugin/caching_sha2_password.so: N
o such file or directory

2024-11-23T05:28:23Z [INFO] [Entrypoint]: Initialising Invoice Ninja…
INFO Configuration cached successfully.
INFO Caching the framework bootstrap files.
config … 42ms DONE
routes … 91ms DONE
INFO Preparing database.
Creating migration table … 25ms DONE
INFO Loading stored database schemas.
database/schema/mysql-schema.dump … 26ms FAIL
In Process.php line 267:

The command “mysql --user=”${:LARAVEL_LOAD_USER}" --password=“${:LARAVEL_L
OAD_PASSWORD}” --host=“${:LARAVEL_LOAD_HOST}” --port=“${:LARAVEL_LOAD_PORT}
" --database=”${:LARAVEL_LOAD_DATABASE}" < “${:LARAVEL_LOAD_PATH}”" failed.

Exit Code: 1(General error)

Working directory: /var/www/app

Output:

Error Output:

ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: Error
loading shared library /usr/lib/mariadb/plugin/caching_sha2_password.so: N
o such file or directory

2024-11-23T05:29:25Z [INFO] [Entrypoint]: Initialising Invoice Ninja…
INFO Configuration cached successfully.
INFO Caching the framework bootstrap files.
config … 37ms DONE
routes … 106ms DONE
INFO Preparing database.
Creating migration table … 24ms DONE
INFO Loading stored database schemas.
database/schema/mysql-schema.dump … 32ms FAIL
In Process.php line 267:

The command “mysql --user=”${:LARAVEL_LOAD_USER}" --password=“${:LARAVEL_L
OAD_PASSWORD}” --host=“${:LARAVEL_LOAD_HOST}” --port=“${:LARAVEL_LOAD_PORT}
" --database=”${:LARAVEL_LOAD_DATABASE}" < “${:LARAVEL_LOAD_PATH}”" failed.

Exit Code: 1(General error)

Working directory: /var/www/app

Output:

Error Output:

ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded: Error
loading shared library /usr/lib/mariadb/plugin/caching_sha2_password.so: N
o such file or directory

SERVER LOGS:
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/11/23 04:56:01 [notice] 1#1: using the “epoll” event method
2024/11/23 04:56:01 [notice] 1#1: nginx/1.23.1
2024/11/23 04:56:01 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2024/11/23 04:56:01 [notice] 1#1: OS: Linux 5.15.0-125-generic
2024/11/23 04:56:01 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/11/23 04:56:01 [notice] 1#1: start worker processes
2024/11/23 04:56:01 [notice] 1#1: start worker process 31
2024/11/23 04:56:01 [notice] 1#1: start worker process 32
2024/11/23 04:56:01 [notice] 1#1: start worker process 33
2024/11/23 04:56:01 [notice] 1#1: start worker process 34
2024/11/23 04:56:01 [notice] 1#1: start worker process 35
2024/11/23 04:56:01 [notice] 1#1: start worker process 36
2024/11/23 05:02:05 [error] 31#31: *1 connect() failed (113: No route to host) while connecting to upstream, client: 172.20.0.8, server: _, request: “GET / HTTP/1.1”, upstream: “fastcgi://172.22.0.3:9000”, host: “my-inv-app. com”
172.20.0.8 - - [23/Nov/2024:05:02:05 +0000] “GET / HTTP/1.1” 502 552 “-” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36” “removed”
172.20.0.8 - - [23/Nov/2024:05:02:08 +0000] “GET /flutter_service_worker.js?v=5.5.22 HTTP/1.1” 304 0 “https:// my-inv-app. com/flutter_service_worker.js?v=5.5.22” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36” “removed”

DB LOGS:
2024-11-23 04:56:00+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.3-1.el9 started.
2024-11-23 04:56:01+00:00 [Note] [Entrypoint]: Switching to dedicated user ‘mysql’
2024-11-23 04:56:01+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.4.3-1.el9 started.
2024-11-23 04:56:01+00:00 [Note] [Entrypoint]: Initializing database files
2024-11-23T04:56:01.655930Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start.
2024-11-23T04:56:01.666329Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.4.3) initializing of server in progress as process 81
2024-11-23T04:56:01.691343Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-11-23T04:56:02.310247Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-11-23T04:56:03.948193Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
2024-11-23T04:56:06.372747Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end.
2024-11-23 04:56:06+00:00 [Note] [Entrypoint]: Database files initialized
2024-11-23 04:56:06+00:00 [Note] [Entrypoint]: Starting temporary server
2024-11-23T04:56:06.472776Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-11-23T04:56:06.803433Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.3) starting as process 122
2024-11-23T04:56:06.829103Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-11-23T04:56:07.219412Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-11-23T04:56:07.700292Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-11-23T04:56:07.700364Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-11-23T04:56:07.712367Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location ‘/var/run/mysqld’ in the path is accessible to all OS users. Consider choosing a different directory.
2024-11-23T04:56:07.773423Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock
2024-11-23T04:56:07.773797Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: ‘8.4.3’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 0 MySQL Community Server - GPL.
2024-11-23 04:56:07+00:00 [Note] [Entrypoint]: Temporary server started.
‘/var/lib/mysql/mysql.sock’ → ‘/var/run/mysqld/mysqld.sock’
Warning: Unable to load ‘/usr/share/zoneinfo/iso3166.tab’ as time zone. Skipping it.
Warning: Unable to load ‘/usr/share/zoneinfo/leap-seconds.list’ as time zone. Skipping it.
Warning: Unable to load ‘/usr/share/zoneinfo/leapseconds’ as time zone. Skipping it.
Warning: Unable to load ‘/usr/share/zoneinfo/tzdata.zi’ as time zone. Skipping it.
Warning: Unable to load ‘/usr/share/zoneinfo/zone.tab’ as time zone. Skipping it.
Warning: Unable to load ‘/usr/share/zoneinfo/zone1970.tab’ as time zone. Skipping it.
2024-11-23 04:56:11+00:00 [Note] [Entrypoint]: Creating database ninja
2024-11-23 04:56:11+00:00 [Note] [Entrypoint]: Creating user ninja
2024-11-23 04:56:11+00:00 [Note] [Entrypoint]: Giving user ninja access to schema ninja
2024-11-23 04:56:11+00:00 [Note] [Entrypoint]: Stopping temporary server
2024-11-23T04:56:11.276203Z 13 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.4.3).
2024-11-23T04:56:12.001807Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.4.3) MySQL Community Server - GPL.
2024-11-23T04:56:12.002067Z 0 [System] [MY-015016] [Server] MySQL Server - end.
2024-11-23 04:56:12+00:00 [Note] [Entrypoint]: Temporary server stopped
2024-11-23 04:56:12+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up.
2024-11-23T04:56:12.311829Z 0 [System] [MY-015015] [Server] MySQL Server - start.
2024-11-23T04:56:12.586082Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.4.3) starting as process 1
2024-11-23T04:56:12.594818Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-11-23T04:56:12.909219Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-11-23T04:56:13.303770Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2024-11-23T04:56:13.303917Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.
2024-11-23T04:56:13.312426Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location ‘/var/run/mysqld’ in the path is accessible to all OS users. Consider choosing a different directory.
2024-11-23T04:56:13.344733Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: ‘::’ port: 33060, socket: /var/run/mysqld/mysqlx.sock
2024-11-23T04:56:13.346379Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: ‘8.4.3’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 MySQL Community Server - GPL.
2024-11-23T05:01:11.732321Z 35 [Warning] [MY-013360] [Server] Plugin sha256_password reported: ‘‘sha256_password’ is deprecated and will be removed in a future release. Please use caching_sha2_password instead’

which version of mysql are you using? it looks like that is the issue here, i would suggest using mysql 8 or mariadb > 10.6

Hi David! Thanks, I’m actually using mysql 8… it was the default image specified in the docker compose file that was downloaded from the git repository. I did some reading in forums and there does seem to be an issue with this plugin in mysql 8. Maybe I’ll try switching over to MariaDB… do you know if the json export from mysql imports nicely into MariaDB?

@T3CH

I am not sure how nicely the json export/import works between the two to be honest.

In regards to the issue, there should be a flag to enable the plugin via a conf setting?

Thanks! I’ll research that flag and see if I can figure something out there. Would that be something I’d have to add to the env file then or do you think I’ll have to console into the mysql instance and set something there?

You could try something like this in your docker-compose file

 db:
    image: mysql:8.0
    command: --default-authentication-plugin=caching_sha2_password
    environment:
      MYSQL_ROOT_PASSWORD: ninja
      MYSQL_DATABASE: ninja
      MYSQL_USER: ninja
      MYSQL_PASSWORD: ninja
      # Add this to explicitly set the auth plugin
      MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: caching_sha2_password

Wow do I feel dumb! As I was messing around with your solution I decided to look into all my downloaded images in docker… what do you know, I had images in there matching the images in the docker-compose.yml saved from over a month or two ago! So I wasn’t downloading a new image, it was just recycling those saved images and choking up. I removed the saved images, pulled new ones and no errors! So very sorry for the hassle, that should have been the first thing I checked. Thank you for your help though @david !!