mirror of
https://github.com/bitnami/containers.git
synced 2026-02-23 00:37:25 +08:00
[bitnami/percona-mysql] Release 8.1.0-1-debian-12-r26 (#69057)
Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>
This commit is contained in:
@@ -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-29T14:55:36Z" \
|
||||
org.opencontainers.image.created="2024-07-06T09:21:48Z" \
|
||||
org.opencontainers.image.description="Application packaged by Broadcom, Inc." \
|
||||
org.opencontainers.image.documentation="https://github.com/bitnami/containers/tree/main/bitnami/percona-mysql/README.md" \
|
||||
org.opencontainers.image.licenses="Apache-2.0" \
|
||||
org.opencontainers.image.ref.name="8.1.0-1-debian-12-r25" \
|
||||
org.opencontainers.image.ref.name="8.1.0-1-debian-12-r26" \
|
||||
org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/percona-mysql" \
|
||||
org.opencontainers.image.title="percona-mysql" \
|
||||
org.opencontainers.image.vendor="Broadcom, Inc." \
|
||||
@@ -29,7 +29,7 @@ RUN install_packages ca-certificates curl libaio1 libaudit1 libbrotli1 libbz2-1.
|
||||
RUN mkdir -p /tmp/bitnami/pkg/cache/ ; cd /tmp/bitnami/pkg/cache/ ; \
|
||||
COMPONENTS=( \
|
||||
"mysql-shell-8.1.1-3-linux-${OS_ARCH}-debian-12" \
|
||||
"ini-file-1.4.6-14-linux-${OS_ARCH}-debian-12" \
|
||||
"ini-file-1.4.7-2-linux-${OS_ARCH}-debian-12" \
|
||||
"percona-mysql-8.1.0-1-5-linux-${OS_ARCH}-debian-12" \
|
||||
) ; \
|
||||
for COMPONENT in "${COMPONENTS[@]}"; do \
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"arch": "amd64",
|
||||
"distro": "debian-12",
|
||||
"type": "NAMI",
|
||||
"version": "1.4.6-14"
|
||||
"version": "1.4.7-2"
|
||||
},
|
||||
"mysql-shell": {
|
||||
"arch": "amd64",
|
||||
|
||||
@@ -296,6 +296,47 @@ flush privileges;
|
||||
EOF
|
||||
}
|
||||
|
||||
########################
|
||||
# Initialize database data
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# DB_*
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
mysql_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")
|
||||
command="${DB_BIN_DIR}/mysqld"
|
||||
args+=("--initialize-insecure")
|
||||
|
||||
debug_execute "$command" "${args[@]}"
|
||||
}
|
||||
|
||||
########################
|
||||
# Upgrade Database Schema
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# DB_*
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
mysql_upgrade() {
|
||||
info "Running mysql_upgrade"
|
||||
mysql_stop
|
||||
mysql_start_bg "--upgrade=${DB_UPGRADE}"
|
||||
}
|
||||
|
||||
########################
|
||||
# Ensure MySQL/MariaDB is initialized
|
||||
# Globals:
|
||||
@@ -354,7 +395,7 @@ mysql_initialize() {
|
||||
# commands can still be executed until we restart or run 'flush privileges'
|
||||
info "Configuring authentication"
|
||||
mysql_execute "mysql" <<EOF
|
||||
DELETE FROM mysql.user WHERE user not in ('mysql.sys','mariadb.sys');
|
||||
DELETE FROM mysql.user WHERE user not in ('mysql.sys','mysql.infoschema','mysql.session','mariadb.sys');
|
||||
EOF
|
||||
# slaves do not need to configure users
|
||||
if [[ -z "$DB_REPLICATION_MODE" ]] || [[ "$DB_REPLICATION_MODE" = "master" ]]; then
|
||||
@@ -482,6 +523,96 @@ mysql_start_bg() {
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# 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
|
||||
#########################
|
||||
mysql_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" <<EOF
|
||||
create user if not exists '${user}'@'%' ${auth_string};
|
||||
EOF
|
||||
debug "Removing all other hosts for the user"
|
||||
hosts=$("${mysql_execute_print_output_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <<EOF
|
||||
select Host from user where User='${user}' and Host!='%';
|
||||
EOF
|
||||
)
|
||||
for host in $hosts; do
|
||||
"${mysql_execute_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <<EOF
|
||||
drop user '$user'@'$host';
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
#!/bin/bash
|
||||
# Copyright Broadcom, Inc. All Rights Reserved.
|
||||
# SPDX-License-Identifier: APACHE-2.0
|
||||
@@ -769,69 +900,6 @@ mysql_stop() {
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Initialize database data
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# DB_*
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
mysql_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")
|
||||
if [[ "$DB_FLAVOR" = "mariadb" ]]; then
|
||||
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
|
||||
else
|
||||
command="${DB_BIN_DIR}/mysqld"
|
||||
args+=("--initialize-insecure")
|
||||
fi
|
||||
debug_execute "$command" "${args[@]}"
|
||||
}
|
||||
|
||||
########################
|
||||
# Upgrade Database Schema
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# DB_*
|
||||
# Arguments:
|
||||
# None
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
mysql_upgrade() {
|
||||
local -a args=("--defaults-file=${DB_CONF_FILE}" "-u" "$DB_ROOT_USER")
|
||||
local major_version minor_version patch_version
|
||||
major_version="$(get_sematic_version "$(mysql_get_version)" 1)"
|
||||
minor_version="$(get_sematic_version "$(mysql_get_version)" 2)"
|
||||
patch_version="$(get_sematic_version "$(mysql_get_version)" 3)"
|
||||
info "Running mysql_upgrade"
|
||||
if [[ "$DB_FLAVOR" = *"mysql"* ]] && [[
|
||||
"$major_version" -gt "8"
|
||||
|| ( "$major_version" -eq "8" && "$minor_version" -gt "0" )
|
||||
|| ( "$major_version" -eq "8" && "$minor_version" -eq "0" && "$patch_version" -ge "16" )
|
||||
]]; then
|
||||
mysql_stop
|
||||
mysql_start_bg "--upgrade=FORCE"
|
||||
else
|
||||
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"
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Migrate old custom configuration files
|
||||
@@ -860,98 +928,6 @@ mysql_migrate_old_configuration() {
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# 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
|
||||
#########################
|
||||
mysql_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
|
||||
|
||||
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" <<EOF
|
||||
${mysql_create_user_cmd} '${user}'@'%' ${auth_string};
|
||||
EOF
|
||||
debug "Removing all other hosts for the user"
|
||||
hosts=$("${mysql_execute_print_output_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <<EOF
|
||||
select Host from user where User='${user}' and Host!='%';
|
||||
EOF
|
||||
)
|
||||
for host in $hosts; do
|
||||
"${mysql_execute_cmd[@]}" "mysql" "$DB_ROOT_USER" "$DB_ROOT_PASSWORD" <<EOF
|
||||
drop user '$user'@'$host';
|
||||
EOF
|
||||
done
|
||||
}
|
||||
|
||||
########################
|
||||
# Ensure a db user does not exist
|
||||
# Globals:
|
||||
@@ -1189,7 +1165,7 @@ mysql_ensure_optional_user_exists() {
|
||||
flags+=("-p" "$password")
|
||||
[[ -n "$auth_plugin" ]] && flags=("${flags[@]}" "--auth-plugin" "$auth_plugin")
|
||||
fi
|
||||
mysql_ensure_user_exists "${flags[@]}"
|
||||
"${DB_FLAVOR}"_ensure_user_exists "${flags[@]}"
|
||||
}
|
||||
|
||||
########################
|
||||
|
||||
@@ -47,6 +47,7 @@ mysql_env_vars=(
|
||||
MYSQL_COLLATE
|
||||
MYSQL_BIND_ADDRESS
|
||||
MYSQL_SQL_MODE
|
||||
MYSQL_UPGRADE
|
||||
MYSQL_IS_DEDICATED_SERVER
|
||||
MYSQL_CLIENT_ENABLE_SSL
|
||||
MYSQL_CLIENT_SSL_CA_FILE
|
||||
@@ -151,6 +152,8 @@ export MYSQL_BIND_ADDRESS="${MYSQL_BIND_ADDRESS:-}"
|
||||
export DB_BIND_ADDRESS="$MYSQL_BIND_ADDRESS"
|
||||
export MYSQL_SQL_MODE="${MYSQL_SQL_MODE:-}"
|
||||
export DB_SQL_MODE="$MYSQL_SQL_MODE"
|
||||
export MYSQL_UPGRADE="${MYSQL_UPGRADE:-AUTO}"
|
||||
export DB_UPGRADE="$MYSQL_UPGRADE"
|
||||
export MYSQL_IS_DEDICATED_SERVER="${MYSQL_IS_DEDICATED_SERVER:-}"
|
||||
export DB_IS_DEDICATED_SERVER="$MYSQL_IS_DEDICATED_SERVER"
|
||||
export MYSQL_CLIENT_ENABLE_SSL="${MYSQL_CLIENT_ENABLE_SSL:-no}"
|
||||
|
||||
Reference in New Issue
Block a user