108 lines
3.7 KiB
Bash
108 lines
3.7 KiB
Bash
#!/bin/bash
|
|
|
|
# Цвета для вывода
|
|
GREEN='\033[0;32m'
|
|
BLUE='\033[0;34m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}PostgreSQL Installation and Setup Script by izzzzzi${NC}"
|
|
echo "----------------------------------------"
|
|
|
|
# Запрос данных у пользователя
|
|
read -p "Enter PostgreSQL port (default: 5432): " DB_PORT
|
|
read -p "Enter database name: " DB_NAME
|
|
read -p "Enter database user: " DB_USER
|
|
read -s -p "Enter database password: " DB_PASS
|
|
echo
|
|
read -s -p "Confirm database password: " DB_PASS_CONFIRM
|
|
echo
|
|
|
|
# Проверка паролей
|
|
if [ "$DB_PASS" != "$DB_PASS_CONFIRM" ]; then
|
|
echo -e "${RED}Passwords do not match!${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Использование значения по умолчанию для порта
|
|
DB_PORT=${DB_PORT:-5432}
|
|
|
|
# Установка PostgreSQL
|
|
echo -e "${GREEN}Installing PostgreSQL...${NC}"
|
|
apt-get update
|
|
apt-get install -y postgresql postgresql-contrib
|
|
|
|
# Остановка PostgreSQL для изменения конфигурации
|
|
systemctl stop postgresql
|
|
|
|
# Настройка PostgreSQL для внешних подключений
|
|
echo -e "${GREEN}Configuring PostgreSQL...${NC}"
|
|
|
|
# Настройка postgresql.conf
|
|
PG_VERSION=$(ls /etc/postgresql/)
|
|
PG_CONF="/etc/postgresql/$PG_VERSION/main/postgresql.conf"
|
|
PG_HBA="/etc/postgresql/$PG_VERSION/main/pg_hba.conf"
|
|
|
|
# Backup конфигурационных файлов
|
|
cp $PG_CONF "${PG_CONF}.backup"
|
|
cp $PG_HBA "${PG_HBA}.backup"
|
|
|
|
# Изменение postgresql.conf
|
|
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" $PG_CONF
|
|
sed -i "s/#port = 5432/port = $DB_PORT/" $PG_CONF
|
|
|
|
# Изменение pg_hba.conf
|
|
cat > $PG_HBA << EOL
|
|
# TYPE DATABASE USER ADDRESS METHOD
|
|
local all postgres peer
|
|
local all all peer
|
|
host all all 127.0.0.1/32 md5
|
|
host all all ::1/128 md5
|
|
host all all 0.0.0.0/0 md5
|
|
EOL
|
|
|
|
# Запуск PostgreSQL
|
|
systemctl start postgresql
|
|
systemctl enable postgresql
|
|
|
|
# Создание пользователя и базы данных
|
|
echo -e "${GREEN}Creating database and user...${NC}"
|
|
sudo -u postgres psql << EOF
|
|
CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';
|
|
CREATE DATABASE $DB_NAME OWNER $DB_USER;
|
|
ALTER USER $DB_USER WITH SUPERUSER;
|
|
EOF
|
|
|
|
# Настройка файрвола
|
|
echo -e "${GREEN}Configuring firewall...${NC}"
|
|
if command -v ufw >/dev/null; then
|
|
ufw allow $DB_PORT/tcp
|
|
ufw status
|
|
fi
|
|
|
|
# Проверка статуса PostgreSQL
|
|
systemctl status postgresql --no-pager
|
|
|
|
echo -e "${GREEN}Installation completed!${NC}"
|
|
echo -e "${BLUE}PostgreSQL is running on port: ${DB_PORT}${NC}"
|
|
echo -e "${BLUE}Database name: ${DB_NAME}${NC}"
|
|
echo -e "${BLUE}Database user: ${DB_USER}${NC}"
|
|
echo "You can now connect to your database using:"
|
|
echo "psql -h localhost -p $DB_PORT -U $DB_USER -d $DB_NAME"
|
|
echo
|
|
echo "For remote connections use:"
|
|
echo "psql -h YOUR_SERVER_IP -p $DB_PORT -U $DB_USER -d $DB_NAME"
|
|
echo
|
|
echo -e "${RED}Important: Make sure to save these credentials in a secure place!${NC}"
|
|
|
|
# Проверка подключения
|
|
echo -e "${GREEN}Testing connection...${NC}"
|
|
PGPASSWORD=$DB_PASS psql -h localhost -p $DB_PORT -U $DB_USER -d $DB_NAME -c "\conninfo"
|
|
|
|
# Добавление информации о создании бэкапов
|
|
echo
|
|
echo "To create a backup, use:"
|
|
echo "pg_dump -h localhost -p $DB_PORT -U $DB_USER -d $DB_NAME > backup.sql"
|
|
echo
|
|
echo "To restore from backup, use:"
|
|
echo "psql -h localhost -p $DB_PORT -U $DB_USER -d $DB_NAME < backup.sql" |