오류: 언어 c에 대한 사용 권한이 거부되었습니다.
슈퍼 유저가 아닌 사용자로 이와 같은 기능을 만들 때 아래와 같은 오류가 나타납니다.
ERROR: permission denied for language c SQL state: 42501
생성된 함수는 다음과 같습니다.
CREATE OR REPLACE FUNCTION dblink_connect (text)
RETURNS text
AS '$libdir/dblink','dblink_connect'
LANGUAGE C STRICT;
하지만 비슈퍼 유저에게 C 언어에 대한 권한을 부여하고 싶었더라면 아래와 같은 오류가 발생합니다.postgres=# grant usage on language c to caixa; ERROR: language "c" is not trusted
즉, 슈퍼 유저가 아닌 사용자는 C 언어로 기능을 만들 수 없는 것입니까? 아니면 제가 잘못하고 있는 것이 있습니까?
문서에 의하면 그렇습니다.
슈퍼유저만 신뢰할 수 없는 언어로 함수를 만들 수 있습니다.
빠른 확인:
SELECT lanpltrusted FROM pg_language WHERE lanname LIKE 'c';
lanpltrusted
--------------
f
(1 row)
당신이 이것을 정말 원한다면 당신은 수정할 수 있습니다.pg_language
시스템 카탈로그(ALTER LANGUAGE
해당 옵션 없음):
UPDATE pg_language SET lanpltrusted = true WHERE lanname LIKE 'c';
아래 사용자별 @Otheus: UPDATE 문은 함수가 위치할 DB에서 수행해야 합니다.
언어를 나쁘고 위험한 신뢰할 수 있는 것으로 설정하는 대신 역할을 사용하여 사용자가 저장 프로시저를 조작하는 동안 슈퍼유저 권한을 일시적으로 제공해야 합니다.
슈퍼유저로서:
create role dba with superuser noinherit;
grant dba to user;
그런 다음 사용자가 할 수 있는 대로 로그인합니다.set role dba
그리고 C에 저장 프로시저를 생성할 수 있습니다. 그리고 당신은 임시로 역할을 가지고 있습니다.dba
.
reset role;
당신이 정상적인 권리로 돌아오는 것을 끝내면.
RDS 포스트그레스 12.5의 uuid 함수에 대한 나의 경우.제가 해야 할 일은
CREATE EXTENSION IF NOT EXISTS "uuid-ossp';
아마도 제 답변은 관련 주제를 다루는 사람에게 도움이 될 것입니다.
한 프로젝트에서 다른 프로젝트로 DB를 이동하는 동안 함수를 다시 만들고 복구하려고 했습니다.uuid_generate_v1
GCP Postres 설치 시:
CREATE OR REPLACE FUNCTION public.uuid_generate_v1()
RETURNS uuid
LANGUAGE c
PARALLEL SAFE STRICT
AS '$libdir/uuid-ossp', $function$uuid_generate_v1$function$;
문제와 같은 오류로 실패한 것입니다.ERROR: language "c" is not trusted
.
GCP가 Postgres에 대한 슈퍼유저 액세스를 제공하지 않기 때문에 제공된 답변을 사용할 수 없었습니다.하지만 누군가에게 도움이 될 수 있는 방법을 찾았습니다.
이 기능은 다른 기능들과 마찬가지로 나타났습니다 (uuid_generate_v1mc
,uuid_generate_v3
,uuid_generate_v4
,uuid_generate_v5
,uuid_nil
,uuid_ns_dns
,uuid_ns_oid
,uuid_ns_url
,uuid_ns_x500
)와 함께 제공됩니다.uuid-ossp
내선그래서 필요한 모든 기능을 제공하는 확장 기능을 만들었을 뿐입니다.
CREATE EXTENSION "uuid-ossp";
언급URL : https://stackoverflow.com/questions/7014437/error-permission-denied-for-language-c
'programing' 카테고리의 다른 글
스프링 부트 탄성 검색 구성 (0) | 2023.11.04 |
---|---|
connect to maria db with mauricio/postgresql-mysql driver in play2.5 (0) | 2023.11.04 |
상대 경로가 있는 다른 PowerShell 스크립트를 호출하려면 어떻게 해야 합니까? (0) | 2023.11.04 |
숨김 및 표시 설정에서 작동하지 않는 ng-애니메이트 (0) | 2023.11.04 |
'table'에서 'alias'로 삭제...여기서 'alias'.'열'...왜 구문 오류입니까? (0) | 2023.11.04 |