htlee

1、创建用户角色

create user XXX with password \'XXXXXX\';

--或者 

create role XXX with password \'XXXXX\' login;

 

注意:使用create role时,需要携带  login参数,否则将无法登录,如果忘记可使用命令修改:

alter role XXX  login;

 

2、创建数据库:

 1 CREATE DATABASE yysg
 2 WITH OWNER = yysg
 3 ENCODING = \'UTF8\'
 4 TABLESPACE = pg_default
 5 LC_COLLATE = \'en_US.UTF-8\'
 6 LC_CTYPE = \'en_US.UTF-8\'
 7 CONNECTION LIMIT = -1
 8 
 9 TEMPLATE template0;
10 
11 GRANT CONNECT, TEMPORARY ON DATABASE yysg TO public;
12 GRANT ALL ON DATABASE yysg TO yysg;
13 GRANT ALL ON DATABASE yysg TO postgres;
14 
15 COMMENT ON DATABASE yysg
16 IS \'XXX database name\';

 

注意:如果出现如下错误,请加上: TEMPLATE template0;

ERROR:  new collation (zh_CN.UTF-8) is incompatible with the collation of the template    database (en_US.UTF8)
HINT:  Use the same collation as in the template database, or use template0 as template.

3、修改整个schema所有表owner

DO $$
DECLARE
  r record;
  i int;
  v_schema text[] := \'{public}\';
  v_new_owner varchar := \'yysg\';
BEGIN
  FOR r IN
      SELECT \'ALTER TABLE "\' || table_schema || \'"."\' || table_name || \'" OWNER TO \' || v_new_owner || \';\' AS a FROM information_schema.tables WHERE table_schema = ANY (v_schema)
     UNION ALL
     SELECT \'ALTER TABLE "\' || sequence_schema || \'"."\' || sequence_name || \'" OWNER TO \' || v_new_owner || \';\' AS a FROM information_schema.sequences WHERE sequence_schema = ANY (v_schema)
     UNION ALL
     SELECT \'ALTER TABLE "\' || table_schema || \'"."\' || table_name || \'" OWNER TO \' || v_new_owner || \';\' AS a FROM information_schema.views WHERE table_schema = ANY (v_schema)
     UNION ALL
    SELECT \'ALTER FUNCTION "\' || nsp.nspname || \'"."\' || p.proname || \'"(\' || pg_get_function_identity_arguments(p.oid) || \') OWNER TO \' || v_new_owner || \';\' AS a FROM pg_proc p JOIN pg_namespace nsp ON p.pronamespace = nsp.oid WHERE nsp.nspname = ANY (v_schema)
     UNION ALL
     SELECT \'ALTER DATABASE "\' || current_database() || \'" OWNER TO \' || v_new_owner
 LOOP
     EXECUTE r.a;
 END LOOP;
 FOR i IN array_lower(v_schema, 1)..array_upper(v_schema, 1)
 LOOP
     EXECUTE \'ALTER SCHEMA "\' || v_schema[i] || \'" OWNER TO \' || v_new_owner;
 END LOOP;
END
$$;

 

 


分类:

技术点:

相关文章:

  • 2018-05-22
  • 2021-12-02
  • 2021-12-28
  • 2021-12-02
  • 2021-11-19
  • 2021-12-29
  • 2021-11-29
  • 2021-11-03
猜你喜欢
  • 2021-04-30
  • 2021-12-02
  • 2018-03-31
  • 2021-12-01
  • 2021-12-02
  • 2021-12-02
  • 2021-11-04
相关资源
相似解决方案