Co-Authored-By: Claude Sonnet 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01JXVi2GMQ7bR5EmbUFdDj7N
21 lines
1.3 KiB
Bash
Executable File
21 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Starts a throwaway PostgreSQL 16 on 127.0.0.1:5451 (apt: postgresql-16, no Docker) and loads sql/schema.sql.
|
|
# Database t2s, superuser t2s_admin/admin, assistant role t2s_reader/reader (created by schema.sql).
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
SQL="$PWD/sql/schema.sql"
|
|
RUN=/tmp/t2s-run; PGBIN=/usr/lib/postgresql/16/bin; PGDATA=$RUN/pgdata; PORT=5451
|
|
mkdir -p "$RUN"; chmod 777 "$RUN"
|
|
if (exec 3<>/dev/tcp/127.0.0.1/$PORT) 2>/dev/null; then echo "already listening on $PORT"; exit 0; fi
|
|
id postgres >/dev/null 2>&1
|
|
rm -rf "$PGDATA"; mkdir -p "$PGDATA"; chown postgres "$PGDATA"
|
|
su postgres -c "$PGBIN/initdb -D $PGDATA -A trust >/dev/null"
|
|
su postgres -c "$PGBIN/pg_ctl -D $PGDATA -o '-p $PORT -c listen_addresses=127.0.0.1 -c unix_socket_directories=$RUN' -l $RUN/pg.log -w start >/dev/null"
|
|
cp "$SQL" "$RUN/schema.sql"; chmod 644 "$RUN/schema.sql"
|
|
su postgres -c "psql -q -h $RUN -p $PORT -d postgres -c \"CREATE ROLE t2s_admin LOGIN PASSWORD 'admin' SUPERUSER\" -c 'CREATE DATABASE t2s OWNER t2s_admin'"
|
|
su postgres -c "psql -q -h $RUN -p $PORT -d t2s -v ON_ERROR_STOP=1 -f $RUN/schema.sql"
|
|
# trust auth was only for setup; require passwords from now on
|
|
sed -i 's/trust/scram-sha-256/' "$PGDATA/pg_hba.conf"
|
|
su postgres -c "$PGBIN/pg_ctl -D $PGDATA reload >/dev/null"
|
|
echo "postgres :$PORT db t2s ready"
|