Last active
February 18, 2025 11:58
-
-
Save rakeshtembhurne/838a269ed6c315fae4d087625465359c to your computer and use it in GitHub Desktop.
bash: Install Postgres Database for usage in LAN
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
DB_USER="admin" | |
DB_PASSWORD=$(openssl rand -base64 16) | |
DB_NAME="connectors" | |
DB_HOST=$(hostname -I | awk '{print $1}') | |
# Ensure PostgreSQL listens on all interfaces | |
configure_postgresql() { | |
sudo sed -i "s/^#listen_addresses = 'localhost'/listen_addresses = '*'/" /var/lib/pgsql/data/postgresql.conf | |
echo "host all all 0.0.0.0/0 md5" | sudo tee -a /var/lib/pgsql/data/pg_hba.conf | |
sudo systemctl restart postgresql | |
} | |
# Check if user exists | |
check_user() { | |
sudo -u postgres psql -tc "SELECT 1 FROM pg_roles WHERE rolname='$DB_USER';" | grep -q 1 | |
} | |
# Check if database exists | |
check_db() { | |
sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME';" | grep -q 1 | |
} | |
# Create user and database only if they don't exist | |
create_user_and_db() { | |
check_user || sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASSWORD';" | |
check_db || sudo -u postgres psql -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;" | |
sudo -u postgres psql -c "ALTER ROLE $DB_USER WITH CREATEDB;" | |
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" | |
} | |
# Verify if PostgreSQL is listening on 0.0.0.0 | |
verify_listening() { | |
if ss -tulnp | grep ":5432" | grep -q "0.0.0.0"; then | |
echo "β PostgreSQL is listening on all interfaces." | |
else | |
echo "β PostgreSQL is NOT listening on all interfaces." | |
exit 1 | |
fi | |
} | |
# Apply fixes | |
configure_postgresql | |
create_user_and_db | |
verify_listening | |
echo "β PostgreSQL setup completed." | |
echo "π Connection String:" | |
echo " postgresql://$DB_USER:$DB_PASSWORD@$DB_HOST:5432/$DB_NAME" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment