b7c8d2ed80
Co-authored-by: Cursor <cursoragent@cursor.com>
61 lines
1.9 KiB
Bash
61 lines
1.9 KiB
Bash
#!/bin/bash
|
|
# PostgreSQL — пользователь и БД shop (после install-postgresql-ubuntu.sh)
|
|
# sudo bash scripts/setup-postgres-ubuntu.sh
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
SHOP_ROOT="${SHOP_ROOT:-$(cd "$SCRIPT_DIR/.." && pwd)}"
|
|
|
|
DB_USER="${DB_USER:-shop}"
|
|
DB_PASS="${DB_PASS:-shop}"
|
|
DB_NAME="${DB_NAME:-shop}"
|
|
|
|
if ! command -v psql >/dev/null; then
|
|
echo "PostgreSQL не установлен. Запустите:"
|
|
echo " sudo bash $SCRIPT_DIR/install-postgresql-ubuntu.sh"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Запуск PostgreSQL..."
|
|
systemctl enable postgresql 2>/dev/null || true
|
|
systemctl start postgresql
|
|
|
|
for i in $(seq 1 30); do
|
|
if pg_isready -h 127.0.0.1 -p 5432 -q 2>/dev/null; then
|
|
break
|
|
fi
|
|
sleep 1
|
|
if [ "$i" -eq 30 ]; then
|
|
echo "Ошибка: PostgreSQL не слушает 127.0.0.1:5432"
|
|
echo " journalctl -u postgresql -n 30 --no-pager"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo "Создание пользователя и базы..."
|
|
sudo -u postgres psql -v ON_ERROR_STOP=1 <<EOF
|
|
DO \$\$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${DB_USER}') THEN
|
|
CREATE ROLE ${DB_USER} LOGIN PASSWORD '${DB_PASS}';
|
|
END IF;
|
|
END
|
|
\$\$;
|
|
|
|
SELECT 'CREATE DATABASE ${DB_NAME} OWNER ${DB_USER}'
|
|
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '${DB_NAME}')\gexec
|
|
EOF
|
|
|
|
sudo -u postgres psql -v ON_ERROR_STOP=1 -d "${DB_NAME}" <<EOF
|
|
GRANT ALL ON SCHEMA public TO ${DB_USER};
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO ${DB_USER};
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO ${DB_USER};
|
|
EOF
|
|
|
|
echo ""
|
|
echo "PostgreSQL готов."
|
|
echo "Добавьте в ${SHOP_ROOT}/.env:"
|
|
echo "DATABASE_URL=postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}"
|
|
echo ""
|
|
echo "Проверка: psql \"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}\" -c 'SELECT 1'"
|