注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

PostgreSQL 中文网

 
 
 

日志

 
 

PostgreSQL9.5:Allow CREATE/ALTER DATABASE to manipulate datistemplate and datallowconn  

2015-08-16 15:18:47|  分类: Postgres基础 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

          pg_database 系统表展现了数据库信息,例如数据库名称,字符集,是否是模板库(datistemplate),是否允许连接(datallowconn)等信息。系统表在绝大多数情况下是不建议修改的,因为万一带来不可控的影响就悲剧了。 datistemplate 和 datallowconn 属性在之前版不支持数据库命令操作,如果要修改只能通过更新 pg_database 系统表的形式,9.5 版本则支持 ALTER DATABASE  命令设置这两个属性,下面演示下。
    
--pg_database 系统表

[pg95@db2 ~]$ psql
psql (9.5alpha1)
Type "help" for help.

postgres=# \d pg_database
    Table "pg_catalog.pg_database"
    Column     |   Type    | Modifiers
---------------+-----------+-----------
 datname       | name      | not null
 datdba        | oid       | not null
 encoding      | integer   | not null
 datcollate    | name      | not null
 datctype      | name      | not null
 datistemplate | boolean   | not null
 datallowconn  | boolean   | not null
 datconnlimit  | integer   | not null
 datlastsysoid | oid       | not null
 datfrozenxid  | xid       | not null
 datminmxid    | xid       | not null
 dattablespace | oid       | not null
 datacl        | aclitem[] |
Indexes:
    "pg_database_datname_index" UNIQUE, btree (datname), tablespace "pg_global"
    "pg_database_oid_index" UNIQUE, btree (oid), tablespace "pg_global"
Tablespace: "pg_global"


--查看数据库 datistemplate, datallowconn 属性

postgres=# select datname,encoding,datistemplate,datallowconn from pg_database;
  datname  | encoding | datistemplate | datallowconn
-----------+----------+---------------+--------------
 template1 |        6 | t             | t
 template0 |        6 | t             | f
 postgres  |        6 | f             | t
 fdb       |        6 | f             | t
(4 rows)


--修改 fdb 数据库 datistemplate 属性,将它设置成 t

postgres=# alter database fdb IS_TEMPLATE true;
ALTER DATABASE

postgres=# select datname,encoding,datistemplate,datallowconn from pg_database;
  datname  | encoding | datistemplate | datallowconn
-----------+----------+---------------+--------------
 template1 |        6 | t             | t
 template0 |        6 | t             | f
 postgres  |        6 | f             | t
 fdb       |        6 | t             | t
(4 rows)

备注: fdb 库的 datistemplate 值变成 t 了。

--修改 fdb 数据库 datallowconn 属性,将它设置成 f

postgres=# alter database fdb ALLOW_CONNECTIONS false;
ALTER DATABASE

postgres=# select datname,encoding,datistemplate,datallowconn from pg_database;
  datname  | encoding | datistemplate | datallowconn
-----------+----------+---------------+--------------
 template1 |        6 | t             | t
 template0 |        6 | t             | f
 postgres  |        6 | f             | t
 fdb       |        6 | t             | f
(4 rows)    

备注: fdb 库的 datallowconn 值变成 f 了。

--另开一会话:尝试连接 fdb 库

[pg95@db2 ~]$ psql fdb fdb
psql: FATAL:  database "fdb" is not currently accepting connections

备注:报错,不允许连接 fdb 库;这个特性在数据库某些维护场景下特别有用。之前的方法一般是通过更改防火墙或数据库的 pg_hba.conf 策略来达到这个目标。

--参考
  评论这张
 
阅读(551)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016