up stuff
This commit is contained in:
parent
656c3fd414
commit
1c17b57d8a
37 changed files with 2818 additions and 469 deletions
105
setup_db.sh
Executable file
105
setup_db.sh
Executable file
|
@ -0,0 +1,105 @@
|
|||
#!/bin/bash
|
||||
# Script to install PostgreSQL, create user with appropriate permissions, and set up the database if not ready
|
||||
|
||||
# Default values
|
||||
DB_NAME=${DB_NAME:-"oedb"}
|
||||
DB_USER=${DB_USER:-"postgres"}
|
||||
DB_HOST=${DB_HOST:-"localhost"}
|
||||
NEW_USER=${NEW_USER:-"cipherbliss"}
|
||||
NEW_PASSWORD=${NEW_PASSWORD:-"tralalahihou"}
|
||||
|
||||
# Use POSTGRES_PASSWORD for database authentication
|
||||
export PGPASSWORD="${POSTGRES_PASSWORD}"
|
||||
|
||||
# Check if running as root
|
||||
if [ "$(id -u)" -eq 0 ]; then
|
||||
# Install PostgreSQL if not already installed
|
||||
if ! command -v psql &> /dev/null; then
|
||||
echo "PostgreSQL not found. Installing..."
|
||||
apt-get update
|
||||
apt-get install -y postgresql postgresql-contrib postgis
|
||||
|
||||
# Start PostgreSQL service
|
||||
service postgresql start
|
||||
|
||||
echo "PostgreSQL installed successfully."
|
||||
else
|
||||
echo "PostgreSQL is already installed."
|
||||
fi
|
||||
fi
|
||||
|
||||
# PGPASSWORD is already set at the top of the script
|
||||
|
||||
# Check if the specified user exists
|
||||
if ! psql -h $DB_HOST -U $DB_USER -tAc "SELECT 1 FROM pg_roles WHERE rolname='$NEW_USER'" | grep -q 1; then
|
||||
echo "Creating user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -c "CREATE USER $NEW_USER WITH PASSWORD '$NEW_PASSWORD';"
|
||||
psql -h $DB_HOST -U $DB_USER -c "ALTER USER $NEW_USER WITH SUPERUSER;"
|
||||
echo "User '$NEW_USER' created with superuser privileges."
|
||||
fi
|
||||
|
||||
# Check if database exists
|
||||
echo "Checking if database '$DB_NAME' exists..."
|
||||
if psql -h $DB_HOST -U $DB_USER -lqt | cut -d \| -f 1 | grep -qw $DB_NAME; then
|
||||
echo "Database '$DB_NAME' already exists."
|
||||
|
||||
# Grant privileges to the new user even if database already exists
|
||||
echo "Granting privileges on database '$DB_NAME' to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $NEW_USER;"
|
||||
|
||||
# Grant privileges on all tables to the new user
|
||||
echo "Granting privileges on all tables to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $NEW_USER;"
|
||||
|
||||
# Explicitly grant permissions on the events table
|
||||
echo "Explicitly granting permissions on the events table to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE events TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE events_deleted TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE geo TO $NEW_USER;"
|
||||
else
|
||||
echo "Database '$DB_NAME' does not exist. Creating..."
|
||||
|
||||
# Create database
|
||||
createdb -h $DB_HOST -U $DB_USER $DB_NAME
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Database '$DB_NAME' created successfully."
|
||||
|
||||
# Grant privileges to the new user
|
||||
echo "Granting privileges on database '$DB_NAME' to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $NEW_USER;"
|
||||
|
||||
# Run setup.sql
|
||||
echo "Running setup.sql to initialize the database schema..."
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -f setup.sql
|
||||
|
||||
# Grant privileges on all tables to the new user
|
||||
echo "Granting privileges on all tables to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "ALTER DATABASE $DB_NAME OWNER TO $NEW_USER;"
|
||||
|
||||
# Explicitly grant permissions on the events table
|
||||
echo "Explicitly granting permissions on the events table to user '$NEW_USER'..."
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE events TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE events_deleted TO $NEW_USER;"
|
||||
psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON TABLE geo TO $NEW_USER;"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "Database schema initialized successfully."
|
||||
else
|
||||
echo "Error: Failed to initialize database schema."
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "Error: Failed to create database '$DB_NAME'."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Database setup completed successfully."
|
||||
./check_tables.sh
|
||||
|
||||
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue