Skip to content

Commit fc586c2

Browse files
authored
Update restore script
Switch the mysql command to mariadb to resolve the deprecation warning. Fix the restore issue caused by missing SSL configuration (error message: "TLS/SSL error: SSL is required, but the server does not support it").
1 parent e9ed8d1 commit fc586c2

File tree

1 file changed

+97
-1
lines changed

1 file changed

+97
-1
lines changed

install/usr/local/bin/restore

Lines changed: 97 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -912,6 +912,83 @@ get_filename() {
912912
r_filename=${opt}
913913
}
914914

915+
get_ssl() {
916+
if grep -q "^DB${detected_host_num}_MYSQL_ENABLE_TLS=" "${restore_vars}" ; then
917+
detected_ssl_value=$(grep "^DB${detected_host_num}_MYSQL_ENABLE_TLS=" "${restore_vars}" | head -n1 | cut -d '=' -f 2)
918+
fi
919+
920+
if [[ -z "${detected_ssl_value}" ]]; then
921+
print_debug "Parsed SSL Variant: 1 - No Env Variable Found"
922+
default_ssl="false" # Default if no env variable
923+
q_ssl_variant=1
924+
q_ssl_menu_opt_default="| (${cwh}N${cdgy}) * "
925+
q_ssl_menu="" #No menu option
926+
else
927+
print_debug "Parsed SSL Variant: 2 - Env Variable DB${detected_host_num}_MYSQL_ENABLE_TLS = '${detected_ssl_value}'"
928+
default_ssl="${detected_ssl_value,,}"
929+
q_ssl_variant=2
930+
q_ssl_menu="E ) Environment Variable DB${detected_host_num}_MYSQL_ENABLE_TLS: '${detected_ssl_value}'"
931+
q_ssl_menu_opt_default="| (${cwh}E${cdgy}) * "
932+
fi
933+
934+
cat <<EOF
935+
936+
Do you wish to use SSL for the connection?
937+
${q_ssl_menu}
938+
939+
Y ) Yes
940+
N ) No
941+
Q ) Quit
942+
943+
EOF
944+
945+
r_ssl=""
946+
case "${q_ssl_variant}" in
947+
1) # No env variable, ask directly
948+
while true; do
949+
read -r -p "$(echo -e ${clg}** ${cdgy}Enter Value \(${cwh}Y${cdgy}\) \| \(${cwh}N\*${cdgy}\) : ${cwh}${coff}) " q_ssl
950+
case "${q_ssl,,}" in
951+
y*)
952+
r_ssl="true"
953+
break
954+
;;
955+
n* | "")
956+
r_ssl="false"
957+
break
958+
;;
959+
q*)
960+
print_info "Quitting Script"
961+
exit 1
962+
;;
963+
esac
964+
done
965+
;;
966+
2) # Env variable exists, offer it as an option
967+
while true; do
968+
read -r -p "$(echo -e ${clg}** ${cdgy}Enter Value \(${cwh}E\*${cdgy}\) \| \(${cwh}Y${cdgy}\) \| \(${cwh}N${cdgy}\) : ${cwh}${coff}) " q_ssl
969+
case "${q_ssl,,}" in
970+
e* | "") # Default to env variable if just enter is pressed.
971+
r_ssl="${detected_ssl_value}"
972+
break
973+
;;
974+
y*)
975+
r_ssl="true"
976+
break
977+
;;
978+
n*)
979+
r_ssl="false"
980+
break
981+
;;
982+
q*)
983+
print_info "Quitting Script"
984+
exit 1
985+
;;
986+
esac
987+
done
988+
;;
989+
esac
990+
}
991+
915992
#### SCRIPT START
916993
trap control_c INT
917994
bootstrap_variables restore_init
@@ -984,6 +1061,20 @@ else
9841061
fi
9851062
print_debug "Database Port '${r_dbport}'"
9861063

1064+
## Question SSL connection
1065+
if [[ "${r_dbtype,,}" == "mariadb" || "${r_dbtype,,}" == "mysql" ]]; then
1066+
if [ -n "${8}" ]; then
1067+
r_ssl="${8}"
1068+
else
1069+
get_ssl
1070+
fi
1071+
print_debug "SSL enable: '${r_ssl}'"
1072+
else
1073+
r_ssl="false"
1074+
print_debug "SSL disabled for ${r_dbtype}"
1075+
fi
1076+
1077+
9871078
## Parse Extension
9881079
case "${r_filename##*.}" in
9891080
bz* )
@@ -1013,8 +1104,13 @@ esac
10131104
## Perform a restore
10141105
case "${r_dbtype}" in
10151106
mariadb | mysql )
1107+
if [[ "${r_ssl,,}" == "false" ]]; then
1108+
mysql_ssl_option="--disable-ssl"
1109+
else
1110+
mysql_ssl_option=""
1111+
fi
10161112
print_info "Restoring '${r_filename}' into '${r_dbhost}'/'${r_dbname}'"
1017-
pv ${r_filename} | ${decompress_cmd}cat | mysql -u${r_dbuser} -p${r_dbpass} -P${r_dbport} -h${r_dbhost} ${r_dbname}
1113+
pv ${r_filename} | ${decompress_cmd}cat | mariadb -u${r_dbuser} -p${r_dbpass} -P${r_dbport} -h${r_dbhost} ${mysql_ssl_option} ${r_dbname}
10181114
exit_code=$?
10191115
;;
10201116
pgsql | postgres* )

0 commit comments

Comments
 (0)