Postgresql连接简析

来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:29 点击:
 
一、正确的方式连接到了正确的数据库
 
  如果想知道是否以正确的方式连接到了正确的数据库,我们可以执行下面给出的命令加以验证:
  SELECT inet_server_port(); 该命令显示服务器所侦听的端口号。
  SELECT current_database(); 显示当前的数据库。
  SELECT current_user; 该命令显示当前的userid。
  SELECT inet_server_addr(); 显示接受连接的服务器的IP地址。
  很明显,用户的口令是无法以普通SQL进行访问的。  www.2cto.com  
 
二、远程访问数据库
 
  为安全起见,PostgreSQL的许多版本 默认时禁用了其远程访问功能。那么,如何启用该功能呢?
  为了启用网络或者远程访问功能,我们需要在postgresql.conf文件中添加或者编辑下列内容:
  listen_addresses = '*'
  在pg_hba.conf的第一行添加如下内容,以便允许所有用户通过加密口令来访问所有数据库:
  # TYPE DATABASE USER CIDR-ADDRESS METHOD
  host all all 0.0.0.0/0 md5
  下面我们对上面的内容做简单说明。参数listen_addresses指定了要侦听的IP地址。这样的话,即使每个系统上有多个网卡也没关系了。在大多数情况下,我们会接受所有网卡上的连接,所以可以使用“*”,它表示所有IP地址。
 
  pg_hba.conf中存放有一组基于主机的认证规则。每条规则会被逐条应用,直到找到一条符合的,就能通过认证;或者访问被reject方法显式拒绝。上面的示例中给出的规则表示,所有远程连接,无论用户为谁,无论访问那个数据库,也无论来自哪个IP地址,都要求通过md5加密的口令进行认证。  www.2cto.com  
  Type = host表示远程连接。Database = all 表示所有数据库。其他名字要求严格匹配,除非带有前缀+,这个前缀表示组角色,而非某个用户。我们还可以规定一个由逗号分隔的用户表,或者使用@ symbol 来包含一个存放用户表的文件。我们还可以使用sameuser,这样的话只有当用户名和数据库名称一致时才匹配。
  User = all 表示所有用户。其他名字要求严格匹配,除非带有前缀+,这个前缀表示组角色,而非某个用户。我们还可以规定一个由逗号分隔的用户表,或者使用@ symbol来包含一个存放用户表的文件。
 
  CIDR-ADDRESS 由两部分组成,即IP地址/子网掩码。子网掩码规定了IP地址中前面哪些位表示网络编号。这里/0表示IP地址中没有表示网络编号的位,这样的话全部的IP地址都匹配,例如192.168.0.0/24表示匹配前24位,所以它匹配任何192.168.0.x形式的IP地址。我们还可以使用samenet或者samehost。
  这里一定要注意,千万不要使用password设置,这样会允许明文形式的口令。
  Method = trust 实际上表示无需认证。其他的认证方法包括GSSAPI、SSPI、LDAP、RADIUS和PAM。此外,我们还可以使用SSL连接PostgreSQL,这时用客户端的SSL证书进行认证。
 
 
 
作者 Joe-xXx
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Request.ServerVariables 参数大全
    • 执行全文索引时出现权限不足的解决方法
    • 导入excel文件处理流程节点的解决方案
    • 查看sql修改痕迹(SQL Change Tracking on Table)
    • MongoDB安装为Windows服务方法与注意事项
    • App数据层设计及云存储使用指南
    • PostgreSQL启动过程中的那些事三:加载GUC参数
    • 写给MongoDB开发者的50条建议Tip1
    • Percolator与分布式事务思考(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1