first add

This commit is contained in:
2025-08-17 22:18:45 +08:00
commit 093d8efd3b
32 changed files with 3531 additions and 0 deletions

28
docker-init/01-app.sql Normal file
View File

@@ -0,0 +1,28 @@
-- 1) 如果没有就创建应用用户
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'appuser') THEN
CREATE ROLE appuser LOGIN PASSWORD 'changeme';
END IF;
END
$$;
-- 2) 如果没有就创建数据库(顶层语句,不能放在 DO/事务里)
SELECT
'CREATE DATABASE appdb ENCODING ''UTF8'' TEMPLATE template0 ' ||
'LC_COLLATE ''en_US.UTF-8'' LC_CTYPE ''en_US.UTF-8'';'
WHERE NOT EXISTS (SELECT 1 FROM pg_database WHERE datname = 'appdb')
\gexec
-- 3) 设定库所有者/权限(无论是否新建都可安全执行)
ALTER DATABASE appdb OWNER TO appuser;
GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser;
-- 4) 进入 appdb配置 schema 与默认权限(可选但常用)
\connect appdb
GRANT ALL ON SCHEMA public TO appuser;
ALTER SCHEMA public OWNER TO appuser;
-- 让以后在 public 里新建的对象默认给 appuser 权限(可按需保留)
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO appuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO appuser;