@@ -12,7 +12,7 @@ setup_postgresql() {
1212
1313 info " Setting up PostgreSQL..."
1414
15- ssh -p " $SSH_PORT " " $SSH_USER @$SSH_HOST " \
15+ ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=5 - p " $SSH_PORT " " $SSH_USER @$SSH_HOST " \
1616 DB_NAME=" $DB_NAME " \
1717 DB_USER=" $DB_USER " \
1818 DB_PASSWORD=" $DB_PASSWORD " \
@@ -38,27 +38,51 @@ setup_postgresql() {
3838 $SUDO systemctl start postgresql
3939 $SUDO systemctl enable postgresql
4040
41+ # Configure PostgreSQL to accept TCP connections on localhost
42+ echo "Configuring PostgreSQL for TCP connections..."
43+
44+ # Find postgresql.conf path
45+ PG_VERSION=$(sudo -u postgres psql -t -c "SHOW server_version;" | cut -d. -f1 | tr -d ' ')
46+ PG_CONF="/etc/postgresql/$PG_VERSION/main/postgresql.conf"
47+ PG_HBA="/etc/postgresql/$PG_VERSION/main/pg_hba.conf"
48+
49+ # Set listen_addresses if not already configured
50+ if ! $SUDO grep -q "^listen_addresses.*localhost" "$PG_CONF"; then
51+ echo "Enabling TCP listener on localhost..."
52+ $SUDO sed -i "s/^#*listen_addresses.*/listen_addresses = 'localhost'/" "$PG_CONF"
53+ fi
54+
55+ # Add TCP connection rule to pg_hba.conf if not present
56+ if ! $SUDO grep -q "host.*all.*all.*127.0.0.1/32.*md5" "$PG_HBA"; then
57+ echo "Adding TCP authentication rule..."
58+ $SUDO bash -c "echo 'host all all 127.0.0.1/32 md5' >> '$PG_HBA'"
59+ fi
60+
61+ # Restart PostgreSQL to apply changes
62+ echo "Restarting PostgreSQL..."
63+ $SUDO systemctl restart postgresql
64+
4165 # Create database and user
4266 echo "Creating database '$DB_NAME' and user '$DB_USER'..."
4367
4468 # Create database if it doesn't exist
45- $SUDO -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
46- $SUDO -u postgres psql -c "CREATE DATABASE \"$DB_NAME\";"
69+ sudo -u postgres psql -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | grep -q 1 || \
70+ sudo -u postgres psql -c "CREATE DATABASE \"$DB_NAME\";"
4771
4872 # Create user if it doesn't exist
49- $SUDO -u postgres psql -tc "SELECT 1 FROM pg_user WHERE usename = '$DB_USER'" | grep -q 1 || \
50- $SUDO -u postgres psql -c "CREATE USER \"$DB_USER\" WITH PASSWORD '$DB_PASSWORD';"
73+ sudo -u postgres psql -tc "SELECT 1 FROM pg_user WHERE usename = '$DB_USER'" | grep -q 1 || \
74+ sudo -u postgres psql -c "CREATE USER \"$DB_USER\" WITH PASSWORD '$DB_PASSWORD';"
5175
5276 # Update password if user already exists
53- $SUDO -u postgres psql -c "ALTER USER \"$DB_USER\" WITH PASSWORD '$DB_PASSWORD';"
77+ sudo -u postgres psql -c "ALTER USER \"$DB_USER\" WITH PASSWORD '$DB_PASSWORD';"
5478
5579 # Grant privileges
56- $SUDO -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"$DB_NAME\" TO \"$DB_USER\";"
80+ sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE \"$DB_NAME\" TO \"$DB_USER\";"
5781
5882 # For PostgreSQL 15+, grant schema privileges
59- $SUDO -u postgres psql -d "$DB_NAME" -c "GRANT ALL ON SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
60- $SUDO -u postgres psql -d "$DB_NAME" -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
61- $SUDO -u postgres psql -d "$DB_NAME" -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
83+ sudo -u postgres psql -d "$DB_NAME" -c "GRANT ALL ON SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
84+ sudo -u postgres psql -d "$DB_NAME" -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
85+ sudo -u postgres psql -d "$DB_NAME" -c "GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO \"$DB_USER\";" 2>/dev/null || true
6286
6387 echo "PostgreSQL setup complete. Database '$DB_NAME' is ready."
6488 echo "Connection string: postgresql://$DB_USER:[REDACTED]@localhost:5432/$DB_NAME"
0 commit comments