暂无图片
请问各位老大postgresql如何给用户授予创建schema的权限?
我来答
分享
yueli34
2024-06-11
请问各位老大postgresql如何给用户授予创建schema的权限?

请问各位老大postgresql如何给用户授予创建schema的权限?


[postgres@vm01 ~]$ psql -d postgres -h 10.10.10.2 -p 1921 -U u01
Password for user u01:
psql: error: FATAL: password authentication failed for user "u01"
[postgres@vm01 ~]$ psql -d postgres -h 10.10.10.2 -p 1921 -U erp_etl
Password for user erp_etl:
psql (12.18)
Type "help" for help.

postgres=> create schema ecuac;
ERROR: permission denied for database postgres

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
shunwahⓂ️

postgres=> create schema ecuac;
ERROR: permission denied for database postgres

这个错误表明你正在尝试在 postgres 数据库上创建 schema,但是你的用户 erp_etl 没有足够的权限来在 postgres 数据库上执行此操作。postgres 数据库是 PostgreSQL 的系统数据库,通常不建议在其中创建用户 schema 或其他对象,除非你确切知道你在做什么。

如果你想要在另一个数据库中创建 schema,比如叫做 mydatabase 的数据库,你需要首先确保你连接到了正确的数据库,然后再次尝试创建 schema。以下是如何做到这一点的步骤:

使用有权限的账号 psql 连接到正确的数据库:

复制

输入密码后,你应该在 mydatabase 数据库的上下文中。现在,尝试创建 schema:

CREATE SCHEMA ecuac;
复制

如果你收到关于权限的错误,你需要确保 erp_etl 用户有足够的权限在 mydatabase 上创建 schema。你可以通过以下 SQL 语句给 erp_etl 用户授予这些权限:

-- 作为数据库所有者(通常是 postgres 用户)登录  
GRANT USAGE, CREATE ON SCHEMA public TO erp_etl;  -- 允许在 public schema 中创建对象  
-- 如果你想允许在名为 ecuac 的 schema 中创建对象(但首先你需要创建它)  
CREATE SCHEMA ecuac;  
GRANT USAGE, CREATE ON SCHEMA ecuac TO erp_etl;
复制

注意,USAGE 权限允许用户访问 schema 中的对象,而 CREATE 权限允许用户在该 schema 中创建新对象。如果你只想允许在 public schema 中创建对象,那么你只需要授予 public schema 的权限。

或者
使用具有足够权限的用户(如 postgres)登录到数据库。

psql -d mydatabase -h 10.10.10.2 -p 1921 -U postgres
复制

给用户授予权限:
给用户 erp_etl 在 mydatabase 数据库中创建 schema 的权限:

GRANT CREATE ON DATABASE mydatabase TO erp_etl;
复制

创建一个新的 schema 并给 erp_etl 权限:

CREATE SCHEMA ecuac;  
GRANT USAGE, CREATE ON SCHEMA ecuac TO erp_etl;
复制

这里,USAGE 权限允许用户访问 schema 中的对象,而 CREATE 权限允许用户在该 schema 中创建新对象。

然后再让用户 erp_etl 登录并尝试创建 schema:

暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
小鲁菜
暂无图片

你可以按照以下步骤操作:

给用户 `erp_etl` 授予创建 schema 的权限:
GRANT CREATE ON DATABASE your_database_name TO erp_etl;

请将 `your_database_name` 替换为实际的数据库名。这将允许 `erp_etl` 在指定的数据库上创建 schema。

eg:

postgres=# GRANT CREATE ON DATABASE postgres TO erp_etl;
GRANT
postgres=# \q
[postgres@localhost ~]$ psql -d postgres -U erp_etl
psql (14.9)
Type "help" for help.

postgres=> create schema ecuac;
CREATE SCHEMA
postgres=> 

暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
pg_settings中的作用级别?
回答 1
有个列 context postmaster时重启才生效,这个是实例层面的如果contextuser 则这个参数可能被session设置过,setting<>
怎么能让postgresql 使用多个CPU?
回答 1
多来几个这个的SQL,多开几个这样的窗口。你就会发现都用起来了。
postgresql:shell如何将字符串按换行符分隔?
回答 1
试了下好像办不到呀[postgres@jiekexutestpgdata]$psql“psetfieldsep‘\n’”psql:error:invalidintegervalue“setfields
postgreSQL 数组操作都效率低吗?
回答 1
在PostgreSQL中,数组操作的效率与具体场景和使用方式有关。一般情况下,使用合适的技术和优化策略可以获得高效的数组操作。以下是一些影响PostgreSQL数组操作效率的因素:数据量和复杂度:数组
求:Postgresql如何快速插入几十万条数据,数据是通过解析JSON得到 有什么方法,能够快速且准确的插入这些数据?
回答 1
先创建一个临时表,使用copy命令导入所有的json数据。然后再把其中需要的内容导入到目标表中。createtabletmp01(tmpcontentjson);copytmp01from‘XXX.c
pg的流复制环境下,为啥备库中的pg_stat_all_tables的字段vacuum 和 analyze 都没有值,显示空呢??
回答 2
检查一下备库的hotstandbyfeedback参数是否为off,该参数控制备库是否向主库发送反馈信息,以便主库可以更新其统计信息。另外可以在备库手工执行VACUUM和ANALYZE命令,观察一下是
pg12分区表在sql中explain特别慢!
回答 1
由于返回的是0条数据,所以执行计划走tt列上索引时,优化器都自动进行了分区剪枝(每行最后都有neverexecute)!
Pg用进程的模式,用内存是不是很大?
回答 1
数据库都用内存大
postgresql 如何完整显示text内容?
回答 1
您好,可以补充一下具体写入多少数据不显示,任何截图或者复现的测试都可以。例如下面使用repeat函数插入多大长度的字符不能显示内容:createtablet(idint,infotext);inser
pg中索引的统计信息
回答 2
SELECTrelname,lastanalyze,lastautoanalyzeFROMpgstatalltablesWHERErelname'yourtablename';试一下
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~