Docker部署PostgreSQL遇public schema权限拒绝错误求解决
解决PostgreSQL权限拒绝问题
问题根源
- 你创建了
retail_user用户,但却将数据库权限授予了未创建的testing用户,权限对象不匹配; - 仅授予数据库层面的权限不足以在默认的
publicschema下创建表,还需要单独授予schema的创建权限。
修复步骤
步骤1:进入PostgreSQL容器的命令行
执行以下命令,以超级用户postgres身份进入容器内的psql环境:
docker exec -it retail_pg psql -U postgres
步骤2:根据目标用户修正权限(二选一)
选项A:使用retail_user执行建表脚本
在psql中执行以下SQL:
-- 修正数据库权限的授予对象 GRANT ALL PRIVILEGES ON DATABASE retail_db TO retail_user; -- 授予public schema的建表权限 GRANT CREATE ON SCHEMA public TO retail_user;
退出psql后,执行建表脚本:
docker exec -it retail_pg psql -U retail_user -d retail_db -f /data/create_db_tables_pg.sql
选项B:使用testing执行建表脚本
先在psql中创建testing用户并完成授权:
-- 创建testing用户(替换your_password为实际密码) CREATE USER testing WITH ENCRYPTED PASSWORD 'your_password'; -- 授予数据库权限 GRANT ALL PRIVILEGES ON DATABASE retail_db TO testing; -- 授予public schema的建表权限 GRANT CREATE ON SCHEMA public TO testing;
退出psql后,执行建表脚本:
docker exec -it retail_pg psql -U testing -d retail_db -f /data/create_db_tables_pg.sql
内容的提问来源于stack exchange,提问作者FalloutATS21
相关产品推荐
相关产品推荐

