🗃️ [drust] Nivel pro para los scripts de la BD
This commit is contained in:
parent
1b413a2aaf
commit
62f5703989
8 changed files with 252 additions and 219 deletions
82
tools/db-setup.sh
Normal file
82
tools/db-setup.sh
Normal file
|
|
@ -0,0 +1,82 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Carga variables de entorno si existe el archivo .env
|
||||
if [ -f ./.env ]; then
|
||||
source ./.env
|
||||
else
|
||||
echo "Warning: .env file not found. Values will be prompted if not set."
|
||||
fi
|
||||
|
||||
# Función para solicitar una variable si no está definida, con un valor por defecto opcional
|
||||
read_if_not_set() {
|
||||
local var_name=$1
|
||||
local prompt_message=$2
|
||||
local default_value=$3
|
||||
|
||||
if [ -z "${!var_name}" ]; then
|
||||
if [ -n "$default_value" ]; then
|
||||
read -p "$prompt_message [default: $default_value]: " user_input
|
||||
declare -g $var_name="${user_input:-$default_value}"
|
||||
else
|
||||
read -p "$prompt_message: " user_input
|
||||
declare -g $var_name="$user_input"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para solicitar una contraseña si no está configurada
|
||||
pass_if_not_set() {
|
||||
local var_name=$1
|
||||
local prompt_message=$2
|
||||
|
||||
if [ -z "${!var_name}" ]; then
|
||||
read -sp "$prompt_message: " user_input
|
||||
echo
|
||||
declare -g $var_name="$user_input"
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para solicitar las variables necesarias según el sistema de base de datos
|
||||
initial_setup() {
|
||||
read_if_not_set "DB_SYSTEM" "Enter database system (mysql/psql/sqlite)" "mysql"
|
||||
|
||||
case "$DB_SYSTEM" in
|
||||
mysql)
|
||||
read_if_not_set "DB_HOST" "Enter MySQL host" "localhost"
|
||||
read_if_not_set "DB_PORT" "Enter MySQL port" "3306"
|
||||
read_if_not_set "DB_NAME" "Enter database name" "database"
|
||||
read_if_not_set "DB_USER" "Enter database user" "username"
|
||||
pass_if_not_set "DB_PASS" "Enter password for database user \"$DB_USER\""
|
||||
read_if_not_set "DB_ADMIN" "Enter MySQL admin user" "root"
|
||||
pass_if_not_set "DB_ADMIN_PASS" "Enter MySQL admin password"
|
||||
# Verifica la contraseña del administrador de MySQL
|
||||
MYSQL_PWD="$DB_ADMIN_PASS" mysql -u "$DB_ADMIN" -h "$DB_HOST" -P "$DB_PORT" -e "SELECT 1;" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Invalid MySQL admin password. Please check and try again."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
psql)
|
||||
read_if_not_set "DB_HOST" "Enter PostgreSQL host" "localhost"
|
||||
read_if_not_set "DB_PORT" "Enter PostgreSQL port" "5432"
|
||||
read_if_not_set "DB_NAME" "Enter database name" "database"
|
||||
read_if_not_set "DB_USER" "Enter database user" "username"
|
||||
pass_if_not_set "DB_PASS" "Enter password for database user \"$DB_USER\""
|
||||
read_if_not_set "DB_ADMIN" "Enter PostgreSQL admin user" "postgres"
|
||||
pass_if_not_set "DB_ADMIN_PASS" "Enter PostgreSQL admin password"
|
||||
# Verifica la contraseña del administrador
|
||||
PGPASSWORD="$DB_ADMIN_PASS" psql -U "$DB_ADMIN" -h "$DB_HOST" -p "$DB_PORT" -c "\q" 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: Invalid PostgreSQL admin password. Please check and try again."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
sqlite)
|
||||
read_if_not_set "DB_NAME" "Enter SQLite database name" "database.sqlite"
|
||||
;;
|
||||
*)
|
||||
echo "Error: Invalid database system. Please choose either 'mysql', 'psql', or 'sqlite'."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue