From 51018b924ed46bf0b62de13afec0ae8ed464defe Mon Sep 17 00:00:00 2001 From: laobinghu <923190468@qq.com> Date: Sat, 28 Mar 2026 21:16:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20PostgreSQL=20?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 blog 用户授予 public 模式的完整权限 - 添加默认权限配置,确保未来创建的表自动授权 - 解决 'permission denied for schema public' 错误 --- scripts/init-db.sql | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/scripts/init-db.sql b/scripts/init-db.sql index a6b6739..6885e8a 100644 --- a/scripts/init-db.sql +++ b/scripts/init-db.sql @@ -7,23 +7,25 @@ -- 创建 pgcrypto 扩展 (用于密码哈希等) CREATE EXTENSION IF NOT EXISTS pgcrypto; --- 创建 uuid-ossp 扩展 (如果使用 UUID) --- CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; - -- 设置时区 SET timezone = 'UTC'; --- 创建性能优化索引 (将在 Prisma 迁移后创建) --- 这些索引可以在迁移文件中定义,这里作为补充 +-- 授予 blog 用户对 public 模式的所有权限 +-- 这是必要的,因为 Prisma 需要创建表、索引等 +GRANT ALL PRIVILEGES ON SCHEMA public TO blog; +GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO blog; +GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO blog; +GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public TO blog; --- 示例: 为常用查询字段创建索引 --- CREATE INDEX IF NOT EXISTS idx_user_email ON "User"(email); --- CREATE INDEX IF NOT EXISTS idx_article_slug ON "Article"(slug); --- CREATE INDEX IF NOT EXISTS idx_comment_article_status ON "Comment"("articleId", "status"); +-- 确保未来的表也继承权限 +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO blog; +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON SEQUENCES TO blog; +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON FUNCTIONS TO blog; -- 输出完成信息 DO $$ BEGIN RAISE NOTICE 'Database initialization completed successfully!'; RAISE NOTICE 'Extensions: pgcrypto'; + RAISE NOTICE 'Permissions granted to user: blog'; END $$;