현재 함수 내에서 postgresql 데이터베이스 사용자를 만들 수 없습니다. 배경 : Java Swing 응용 프로그램이 있으며 목표는 데이터베이스 사용자를 만들고 변경하고 삭제할 수있는 메뉴를 개발하는 것입니다. 좀 더 보안을 강화하기 위해 "usermanagement"역할을 만들었으며이 역할의 구성원 만이 함수를 사용하여 사용자를 만들 수 있습니다. 역할에는 또한 "createuser"권한이 포함되어 있습니다.기능이있는 사용자를 만드는 Postgresql
쿼리는 문제없이 실행되지만 새로운 사용자를 생성하지는 않습니다 ... 그래서 잘못된 점은 모르겠습니다.
SELECT create_databaseuser(v_username := 'thisname' ,v_password := 'pwpwpw');
사람이 도와 드릴까요 :
이 내가 내 기능을 사용하려고 어떻게? ,
-- Function: public.create_databaseuser(text, text)
-- DROP FUNCTION public.create_databaseuser(text, text);
CREATE OR REPLACE FUNCTION public.create_databaseuser(
v_username text,
v_password text)
RETURNS numeric AS
$BODY$
DECLARE
r_id numeric;
BEGIN
--CREATE ROLE v_username LOGIN
--PASSWORD 'v_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
EXECUTE 'CREATE USER ' || v_username || ' WITH PASSWORD ' || v_password;
-- Alternative:CREATE ROLE v_username LOGIN PASSWORD v_password NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
return 1;
-- Simple Exception
EXCEPTION
WHEN others THEN
RETURN 0;
END;
$BODY$
LANGUAGE plpgsql VOLATILE SECURITY DEFINER
COST 100;
ALTER FUNCTION public.create_databaseuser(text, text)
OWNER TO postgres;
이 더 나은 형제 사이트에 게시 될 수도, http://dba.StackExchange.com/ –