我目前无法在函数内创建postgresql数据库用户。
背景:
我有一个Java Swing应用程序,我的目标是开发一个菜单来创建、修改和删除数据库用户。为了增加安全性,我创建了一个名为“usermanagement”的角色,只有该角色的成员才被允许使用创建用户的功能。该角色还包含了“createuser”权限。
查询运行没有任何问题,但它并没有创建新用户... 所以我不知道哪里出了问题。
以下是我尝试使用该函数的方法:
查询运行没有任何问题,但它并没有创建新用户... 所以我不知道哪里出了问题。
以下是我尝试使用该函数的方法:
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;