zoukankan      html  css  js  c++  java
  • postgres数据库建库、修改owner

    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
    $$;
     
    
    
    
    
  • 相关阅读:
    python 面向对象之路(1) 类和对象 三大特性 封装 继承 多态
    python 模块之路 异常处理基础 异常处理其他 报错处理
    python 模块之路 序列化 json pickle
    python 模块之路 random模块 时间模块 sys模块 os模块
    python 模块之路 re模块运用
    python -模块之路 正则表达式
    【Unity】粒子特效优化实践
    快速实现Low Poly地形
    【Unity】屏幕空间位置变换到世界空间位置的方法
    Substance Designer 使用手册
  • 原文地址:https://www.cnblogs.com/htlee/p/11677398.html
Copyright © 2011-2022 走看看