Use root account for database
This commit is contained in:
+17
-9
@@ -18,7 +18,7 @@ umask 077
|
|||||||
CONTAINER="${DOCKER_CONTAINER_NAME:-mariadb}"
|
CONTAINER="${DOCKER_CONTAINER_NAME:-mariadb}"
|
||||||
|
|
||||||
PASSWORD_FILE="${PASSWORD_FILE:-/root/.mariadb-backup.pw}"
|
PASSWORD_FILE="${PASSWORD_FILE:-/root/.mariadb-backup.pw}"
|
||||||
DB_USER="${DB_USER:-backup}"
|
DB_USER="${DB_USER:-root}"
|
||||||
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$(readlink -f "$0")")" && pwd)"
|
||||||
DUMP_DIR="${DUMP_DIR:-dump}"
|
DUMP_DIR="${DUMP_DIR:-dump}"
|
||||||
@@ -31,7 +31,10 @@ EXCLUDED_SCHEMAS="'information_schema','mysql','performance_schema','sys'"
|
|||||||
|
|
||||||
# =================================================================
|
# =================================================================
|
||||||
|
|
||||||
die() { echo "ERROR: $*" >&2; exit 1; }
|
die() {
|
||||||
|
echo "ERROR: $*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
warn() { echo "WARNING: $*" >&2; }
|
warn() { echo "WARNING: $*" >&2; }
|
||||||
|
|
||||||
cleanup() { rm -rf "$STAGING"; }
|
cleanup() { rm -rf "$STAGING"; }
|
||||||
@@ -41,8 +44,8 @@ trap cleanup EXIT
|
|||||||
|
|
||||||
command -v docker >/dev/null 2>&1 || die "docker not found in PATH"
|
command -v docker >/dev/null 2>&1 || die "docker not found in PATH"
|
||||||
|
|
||||||
[[ "$(docker inspect -f '{{.State.Running}}' "$CONTAINER" 2>/dev/null || echo false)" == "true" ]] \
|
[[ "$(docker inspect -f '{{.State.Running}}' "$CONTAINER" 2>/dev/null || echo false)" == "true" ]] ||
|
||||||
|| die "container '$CONTAINER' is not running"
|
die "container '$CONTAINER' is not running"
|
||||||
|
|
||||||
if [[ -n "${MYSQL_ROOT_PASSWORD:-}" ]]; then
|
if [[ -n "${MYSQL_ROOT_PASSWORD:-}" ]]; then
|
||||||
DB_PASS="$MYSQL_ROOT_PASSWORD"
|
DB_PASS="$MYSQL_ROOT_PASSWORD"
|
||||||
@@ -54,10 +57,12 @@ fi
|
|||||||
|
|
||||||
# Detect client binaries (MariaDB 11+ renamed them; MySQL keeps mysql/*).
|
# Detect client binaries (MariaDB 11+ renamed them; MySQL keeps mysql/*).
|
||||||
if docker exec "$CONTAINER" sh -c 'command -v mariadb-dump' >/dev/null 2>&1; then
|
if docker exec "$CONTAINER" sh -c 'command -v mariadb-dump' >/dev/null 2>&1; then
|
||||||
CLIENT=mariadb; DUMPER=mariadb-dump
|
CLIENT=mariadb
|
||||||
|
DUMPER=mariadb-dump
|
||||||
CLIENT_BIN="mariadb"
|
CLIENT_BIN="mariadb"
|
||||||
else
|
else
|
||||||
CLIENT=mysql; DUMPER=mysqldump
|
CLIENT=mysql
|
||||||
|
DUMPER=mysqldump
|
||||||
CLIENT_BIN="mysql"
|
CLIENT_BIN="mysql"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -123,8 +128,8 @@ dump_users_and_grants() {
|
|||||||
log "[dump] using mysqldump --users (MySQL 8.0.31+ style)"
|
log "[dump] using mysqldump --users (MySQL 8.0.31+ style)"
|
||||||
db_exec "$DUMPER" -u "$DB_USER" --users \
|
db_exec "$DUMPER" -u "$DB_USER" --users \
|
||||||
>"$out" 2>/dev/null
|
>"$out" 2>/dev/null
|
||||||
elif docker exec "$CONTAINER" sh -c "command -v mariadb-dump" >/dev/null 2>&1 \
|
elif docker exec "$CONTAINER" sh -c "command -v mariadb-dump" >/dev/null 2>&1 &&
|
||||||
&& docker exec "$CONTAINER" mariadb-dump --help 2>&1 | grep -q -- ' --system '; then
|
docker exec "$CONTAINER" mariadb-dump --help 2>&1 | grep -q -- ' --system '; then
|
||||||
# MariaDB: --system=users
|
# MariaDB: --system=users
|
||||||
log "[dump] using mariadb-dump --system=users"
|
log "[dump] using mariadb-dump --system=users"
|
||||||
db_exec "$DUMPER" -u "$DB_USER" --system=users \
|
db_exec "$DUMPER" -u "$DB_USER" --system=users \
|
||||||
@@ -146,7 +151,10 @@ failed=()
|
|||||||
|
|
||||||
verify_dump() {
|
verify_dump() {
|
||||||
local f="$1"
|
local f="$1"
|
||||||
[[ -s "$f" ]] || { warn "$(basename "$f"): empty"; return 1; }
|
[[ -s "$f" ]] || {
|
||||||
|
warn "$(basename "$f"): empty"
|
||||||
|
return 1
|
||||||
|
}
|
||||||
# mysqldump ends with "-- Dump completed on ..."; mysqlpump ends similarly.
|
# mysqldump ends with "-- Dump completed on ..."; mysqlpump ends similarly.
|
||||||
# For the mysql-schema fallback, just check non-empty (it has no marker).
|
# For the mysql-schema fallback, just check non-empty (it has no marker).
|
||||||
if grep -q '^-- Dump completed' "$f" 2>/dev/null; then
|
if grep -q '^-- Dump completed' "$f" 2>/dev/null; then
|
||||||
|
|||||||
Reference in New Issue
Block a user