mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-10-24 04:05:03 +00:00
Every interactive prompt takes a var_<app>_<name> override and treats a closed stdin like Enter (`|| true`), so an install keeps going after the console that started it is gone. Values the script cannot do without end with exit 64 and name the variable to set. Validation loops stop asking when nobody can answer instead of spinning on an empty read.
78 lines
2.3 KiB
Bash
78 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Copyright (c) 2021-2026 tteck
|
|
# Author: tteck
|
|
# Co-Author: MickLesk (Canbiz)
|
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
|
# Source: https://www.mysql.com/products/community | https://www.phpmyadmin.net
|
|
|
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
|
color
|
|
verb_ip6
|
|
catch_errors
|
|
setting_up_container
|
|
network_check
|
|
update_os
|
|
|
|
msg_info "Installing Dependencies"
|
|
$STD apt install -y \
|
|
lsb-release
|
|
msg_ok "Installed Dependencies"
|
|
|
|
RELEASE_REPO="mysql-8.0"
|
|
RELEASE_AUTH="mysql_native_password"
|
|
prompt="${var_mysql_lts:-}"
|
|
[[ -n "$prompt" ]] || read -r -p "${TAB3}Would you like to install the MySQL 8.4 LTS release instead of MySQL 8.0 (bug fix track; EOL April-2026)? <y/N> " prompt || true
|
|
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
|
RELEASE_REPO="mysql-8.4-lts"
|
|
RELEASE_AUTH="caching_sha2_password"
|
|
fi
|
|
|
|
msg_info "Installing MySQL"
|
|
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 | gpg --dearmor -o /usr/share/keyrings/mysql.gpg
|
|
if [ "$(lsb_release -si)" = "Debian" ]; then
|
|
cat <<EOF >/etc/apt/sources.list.d/mysql.sources
|
|
Types: deb
|
|
URIs: http://repo.mysql.com/apt/debian
|
|
Suites: $(lsb_release -sc)
|
|
Components: ${RELEASE_REPO}
|
|
Signed-By: /usr/share/keyrings/mysql.gpg
|
|
EOF
|
|
else
|
|
cat <<EOF >/etc/apt/sources.list.d/mysql.sources
|
|
Types: deb
|
|
URIs: http://repo.mysql.com/apt/ubuntu
|
|
Suites: $(lsb_release -sc)
|
|
Components: ${RELEASE_REPO}
|
|
Signed-By: /usr/share/keyrings/mysql.gpg
|
|
EOF
|
|
fi
|
|
apt_update_safe
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
$STD apt install -y \
|
|
mysql-community-client \
|
|
mysql-community-server
|
|
msg_ok "Installed MySQL"
|
|
|
|
msg_info "Configure MySQL Server"
|
|
ADMIN_PASS="$(random_password 13)"
|
|
$STD mysql -uroot -p"$ADMIN_PASS" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH $RELEASE_AUTH BY '$ADMIN_PASS'; FLUSH PRIVILEGES;"
|
|
echo "" >~/mysql.creds
|
|
echo -e "MySQL user: root" >>~/mysql.creds
|
|
echo -e "MySQL password: $ADMIN_PASS" >>~/mysql.creds
|
|
msg_ok "MySQL Server configured"
|
|
|
|
prompt="${var_mysql_phpmyadmin:-}"
|
|
[[ -n "$prompt" ]] || read -r -p "${TAB3}Would you like to add PhpMyAdmin? <y/N> " prompt || true
|
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/phpmyadmin.sh)"
|
|
fi
|
|
|
|
msg_info "Start Service"
|
|
systemctl enable -q --now mysql
|
|
msg_ok "Service started"
|
|
|
|
motd_ssh
|
|
customize
|
|
cleanup_lxc
|