Skip to content

Instantly share code, notes, and snippets.

@rakeshtembhurne
Last active February 18, 2025 11:58
Show Gist options
  • Save rakeshtembhurne/838a269ed6c315fae4d087625465359c to your computer and use it in GitHub Desktop.
Save rakeshtembhurne/838a269ed6c315fae4d087625465359c to your computer and use it in GitHub Desktop.
bash: Install Postgres Database for usage in LAN
#!/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