Details
-
Bug
-
Status: Open (View Workflow)
-
Minor
-
Resolution: Unresolved
-
10.6.11
Description
In the official MariaDB container image, the old_mode variable - when set at the command line - behaves inconsistently with a locally-installed version of MariaDB 10.6.11 on the same machine.
In addition, the command-line argument handling is inconsistent for string-valued flags when setting them to the empty string.
Environment:
- Docker client and server: Docker Engine Community, 20.10.21
- Host: Rocky Linux 8.7 on x64
- MariaDB version: 10.6.11, installed via RPM or run inside a Docker container.
docker run --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode=""
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:05:05+00:00 [Note] [Entrypoint]: Initializing database files
|
ERROR: 1071 Specified key was too long; max key length is 2300 bytes
|
2022-11-29 11:05:05 0 [ERROR] Aborting
|
|
Installation of system tables failed! Examine the logs in
|
/var/lib/mysql/ for more information.
|
|
The problem could be conflicting information in an external
|
my.cnf files. You can ignore these by doing:
|
|
shell> /usr/bin/mariadb-install-db --defaults-file=~/.my.cnf
|
|
You can also try to start the mysqld daemon with:
|
|
shell> /usr/sbin/mariadbd --skip-grant-tables --general-log &
|
|
and use the command line tool /usr/bin/mariadb
|
to connect to the mysql database and look at the grant tables:
|
|
shell> /usr/bin/mysql -u root mysql
|
mysql> show tables;
|
|
Try 'mysqld --help' if you have problems with paths. Using
|
--general-log gives you a log in /var/lib/mysql/ that may be helpful.
|
|
The latest information about mysql_install_db is available at
|
https://mariadb.com/kb/en/installing-system-tables-mysql_install_db
|
You can find the latest source at https://downloads.mariadb.org and
|
the maria-discuss email list at https://launchpad.net/~maria-discuss
|
|
Please check all of the above before submitting a bug report
|
at https://mariadb.org/jira
|
docker run --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode ""
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Entrypoint script for MariaDB Server 1:10.6.11+maria~ubu2004 started.
|
2022-11-29 11:06:50+00:00 [Note] [Entrypoint]: Initializing database files
|
2022-11-29 11:06:50 0 [ERROR] /usr/sbin/mariadbd: Error while setting value '--default-time-zone=SYSTEM' to 'old_mode'
|
|
Installation of system tables failed! Examine the logs in
|
/var/lib/mysql/ for more information.
|
[...]
|
Despite the message given, no logs are left in /var/lib/mysql/ inside the container.
The behaviour changes when the /var/lib/mysql directory is set as a mount inside the container. The first run fails with the "2300 bytes" error, while the second run with the same volume mounted succeeds. (e.g. docker run --mount=type=volume,source=mariadb-test,destination=/var/lib/mysql --rm -e=MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:10.6 --old-mode="")
seang, cloned from MDEV-30126. Technically producable out of containers by formulating the arguments to mysql_install_db the same way.
$ mkdir -p /tmp/${PWD##*/}-datadir && scripts/mysql_install_db --no-defaults --srcdir=$OLDPWD --builddir=$PWD --rpm --auth-root-authentication-method=normal --datadir=/tmp/${PWD##*/}-datadir --old-mode "" --skip-test-db --default-time-zone=SYSTEM --enforce-storage-engine= --skip-log-bin \
--expire-logs-days=0 \
--loose-innodb_buffer_pool_load_at_startup=0 \
--loose-innodb_buffer_pool_dump_at_shutdown=0
2022-11-30 11:32:18 0 [ERROR] /home/dan/repos/build-mariadb-server-10.6/sql/mysqld: Error while setting value '--default-time-zone=SYSTEM' to 'old_mode'
Appears to the in the mysql_install_db.sh arg parsing rather than the server.
Affects 10.3
~/repos/build-mariadb-server-10.3
$ rm -rf /tmp/build-mariadb-server-10.3-datadir
~/repos/build-mariadb-server-10.3
$ mkdir -p /tmp/${PWD##*/}-datadir && scripts/mysql_install_db --no-defaults --srcdir=$OLDPWD --builddir=$PWD --rpm --datadir=/tmp/${PWD##*/}-datadir --old-mode "" --default-time-zone=SYSTEM --enforce-storage-engine= --skip-log-bin \
--expire-logs-days=0 \
--loose-innodb_buffer_pool_load_at_startup=0 \
--loose-innodb_buffer_pool_dump_at_shutdown=0
2022-11-30 11:41:13 0 [ERROR] /home/dan/repos/build-mariadb-server-10.3/sql/mysqld: Error while setting value '--default-time-zone=SYSTEM' to 'old_mode'