diff --git a/bitnami/mariadb/10.11/debian-12/Dockerfile b/bitnami/mariadb/10.11/debian-12/Dockerfile index 0040dfc342eb..531b8b03be54 100644 --- a/bitnami/mariadb/10.11/debian-12/Dockerfile +++ b/bitnami/mariadb/10.11/debian-12/Dockerfile @@ -7,11 +7,11 @@ ARG TARGETARCH LABEL com.vmware.cp.artifact.flavor="sha256:c50c90cfd9d12b445b011e6ad529f1ad3daea45c26d20b00732fae3cd71f6a83" \ org.opencontainers.image.base.name="docker.io/bitnami/minideb:bookworm" \ - org.opencontainers.image.created="2024-06-29T16:37:53Z" \ + org.opencontainers.image.created="2024-07-01T13:48:56Z" \ org.opencontainers.image.description="Application packaged by Broadcom, Inc." \ org.opencontainers.image.documentation="https://github.com/bitnami/containers/tree/main/bitnami/mariadb/README.md" \ org.opencontainers.image.licenses="Apache-2.0" \ - org.opencontainers.image.ref.name="10.11.8-debian-12-r2" \ + org.opencontainers.image.ref.name="10.11.8-debian-12-r3" \ org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/mariadb" \ org.opencontainers.image.title="mariadb" \ org.opencontainers.image.vendor="Broadcom, Inc." \ @@ -29,7 +29,7 @@ RUN install_packages ca-certificates curl libaio1 libaudit1 libcap-ng0 libcrypt1 RUN mkdir -p /tmp/bitnami/pkg/cache/ ; cd /tmp/bitnami/pkg/cache/ ; \ COMPONENTS=( \ "ini-file-1.4.6-14-linux-${OS_ARCH}-debian-12" \ - "mariadb-10.11.8-0-linux-${OS_ARCH}-debian-12" \ + "mariadb-10.11.8-1-linux-${OS_ARCH}-debian-12" \ ) ; \ for COMPONENT in "${COMPONENTS[@]}"; do \ if [ ! -f "${COMPONENT}.tar.gz" ]; then \ diff --git a/bitnami/mariadb/10.11/debian-12/prebuildfs/opt/bitnami/.bitnami_components.json b/bitnami/mariadb/10.11/debian-12/prebuildfs/opt/bitnami/.bitnami_components.json index c5f3c771220d..07f0388c4480 100644 --- a/bitnami/mariadb/10.11/debian-12/prebuildfs/opt/bitnami/.bitnami_components.json +++ b/bitnami/mariadb/10.11/debian-12/prebuildfs/opt/bitnami/.bitnami_components.json @@ -9,6 +9,6 @@ "arch": "amd64", "distro": "debian-12", "type": "NAMI", - "version": "10.11.8-0" + "version": "10.11.8-1" } } \ No newline at end of file diff --git a/bitnami/mariadb/10.11/debian-12/rootfs/opt/bitnami/scripts/libmariadb.sh b/bitnami/mariadb/10.11/debian-12/rootfs/opt/bitnami/scripts/libmariadb.sh index 0a93e3b77f67..792561ac08af 100644 --- a/bitnami/mariadb/10.11/debian-12/rootfs/opt/bitnami/scripts/libmariadb.sh +++ b/bitnami/mariadb/10.11/debian-12/rootfs/opt/bitnami/scripts/libmariadb.sh @@ -345,12 +345,12 @@ mysql_initialize() { # mysql_upgrade requires the server to be running [[ -n "$(get_master_env_var_value ROOT_PASSWORD)" ]] && export ROOT_AUTH_ENABLED="yes" # https://dev.mysql.com/doc/refman/8.0/en/replication-upgrade.html - mysql_upgrade + mariadb_upgrade else debug "Cleaning data directory to ensure successfully initialization" rm -rf "${DB_DATA_DIR:?}"/* info "Installing database" - mysql_install_db + mariadb_install_db mysql_start_bg wait_for_mysql_access # we delete existing users and create new ones with stricter access @@ -384,7 +384,7 @@ EOF fi [[ -n "$DB_REPLICATION_MODE" ]] && mysql_configure_replication # we run mysql_upgrade in order to recreate necessary database users and flush privileges - mysql_upgrade + mariadb_upgrade fi } @@ -485,6 +485,143 @@ mysql_start_bg() { fi } +######################## +# Initialize database data +# Globals: +# BITNAMI_DEBUG +# DB_* +# Arguments: +# None +# Returns: +# None +######################### +mariadb_install_db() { + local command="${DB_BIN_DIR}/mysql_install_db" + local -a args=("--defaults-file=${DB_CONF_FILE}" "--basedir=${DB_BASE_DIR}" "--datadir=${DB_DATA_DIR}") + + # Add flags specified via the 'DB_EXTRA_FLAGS' environment variable + read -r -a db_extra_flags <<< "$(mysql_extra_flags)" + [[ "${#db_extra_flags[@]}" -gt 0 ]] && args+=("${db_extra_flags[@]}") + + am_i_root && args=("${args[@]}" "--user=$DB_DAEMON_USER") + args+=("--auth-root-authentication-method=normal") + # Feature available only in MariaDB 10.5+ + # ref: https://mariadb.com/kb/en/mysql_install_db/#not-creating-the-test-database-and-anonymous-user + if [[ ! "$(mysql_get_version)" =~ ^10\.[01234]\. ]]; then + is_boolean_yes "$DB_SKIP_TEST_DB" && args+=("--skip-test-db") + fi + + debug_execute "$command" "${args[@]}" +} + +######################## +# Upgrade Database Schema +# Globals: +# BITNAMI_DEBUG +# DB_* +# Arguments: +# None +# Returns: +# None +######################### +mariadb_upgrade() { + local -a args=("--defaults-file=${DB_CONF_FILE}" "-u" "$DB_ROOT_USER") + info "Running mysql_upgrade" + mysql_start_bg + is_boolean_yes "${ROOT_AUTH_ENABLED:-false}" && args+=("-p$(get_master_env_var_value ROOT_PASSWORD)") + debug_execute "${DB_BIN_DIR}/mysql_upgrade" "${args[@]}" || echo "This installation is already upgraded" +} + +######################## +# Ensure a db user exists with the given password for the '%' host +# Globals: +# DB_* +# Flags: +# -p|--password - database password +# -u|--user - database user +# --auth-plugin - authentication plugin +# --use-ldap - authenticate user via LDAP +# --host - database host +# --port - database host +# Arguments: +# $1 - database user +# Returns: +# None +######################### +mariadb_ensure_user_exists() { + local -r user="${1:?user is required}" + local password="" + local auth_plugin="" + local use_ldap="no" + local hosts + local auth_string="" + # For accessing an external database + local db_host="" + local db_port="" + + # Validate arguments + shift 1 + while [ "$#" -gt 0 ]; do + case "$1" in + -p|--password) + shift + password="${1:?missing database password}" + ;; + --auth-plugin) + shift + auth_plugin="${1:?missing authentication plugin}" + ;; + --use-ldap) + use_ldap="yes" + ;; + --host) + shift + db_host="${1:?missing database host}" + ;; + --port) + shift + db_port="${1:?missing database port}" + ;; + *) + echo "Invalid command line flag $1" >&2 + return 1 + ;; + esac + shift + done + if is_boolean_yes "$use_ldap"; then + auth_string="identified via pam using '$DB_FLAVOR'" + elif [[ -n "$password" ]]; then + if [[ -n "$auth_plugin" ]]; then + auth_string="identified with $auth_plugin by '$password'" + else + auth_string="identified by '$password'" + fi + fi + debug "creating database user \'$user\'" + + local -a mysql_execute_cmd=("mysql_execute") + local -a mysql_execute_print_output_cmd=("mysql_execute_print_output") + if [[ -n "$db_host" && -n "$db_port" ]]; then + mysql_execute_cmd=("mysql_remote_execute" "$db_host" "$db_port") + mysql_execute_print_output_cmd=("mysql_remote_execute_print_output" "$db_host" "$db_port") + fi + + "${mysql_execute_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <&2 - return 1 - ;; - esac - shift - done - if is_boolean_yes "$use_ldap"; then - auth_string="identified via pam using '$DB_FLAVOR'" - elif [[ -n "$password" ]]; then - if [[ -n "$auth_plugin" ]]; then - auth_string="identified with $auth_plugin by '$password'" - else - auth_string="identified by '$password'" - fi - fi - debug "creating database user \'$user\'" - - local -a mysql_execute_cmd=("mysql_execute") - local -a mysql_execute_print_output_cmd=("mysql_execute_print_output") - if [[ -n "$db_host" && -n "$db_port" ]]; then - mysql_execute_cmd=("mysql_remote_execute" "$db_host" "$db_port") - mysql_execute_print_output_cmd=("mysql_remote_execute_print_output" "$db_host" "$db_port") - fi - - local mysql_create_user_cmd - [[ "$DB_FLAVOR" = "mariadb" ]] && mysql_create_user_cmd="create or replace user" || mysql_create_user_cmd="create user if not exists" - "${mysql_execute_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <