如果你是第一次玩postgresql数据库,你会发现你给role或者user明明设置了密码,但在登录的时候毛都不用输入,直接就进去了,怎么那么爽快!?

虽然爽快,但貌似不该这样啊.

其实这些都和一个重要的文件有关,它就是pg_hba.conf!

那么这个文件在哪呢?如果你是mac或是linux系统,你可以通过如下方式找到这个文件:

ps aux|grep postgres
//你会发现输出其中有-D的一行
apple           70988   0.0  0.2  2604888   8884 s001  S     2:05下午   0:00.54 /usr/local/Cellar/postgresql/9.4.4/bin/postgres -D /usr/local/var/postgres

上面-D后面就是pg_hba.conf的位置所在,用编辑器打开它,你会发现其中包含了详细的说明文档.如果你不想鸟这些东东,你只要知道每一条都是一条策略,说明了访问那些位置需要什么样的认证方式,比如:

local   all             all                     trust

说明了所有本地访问都是受到信任的,在认证时是不需要输入密码的,像trust这一列称为method,有很多种method,比如:

"trust", "reject", "md5", "password", "gss", "sspi",
"ident", "peer", "pam", "ldap", "radius" or "cert"

有兴趣的可以自行进一步研究下,那么如果我希望在本地登录统统需要输入密码,你只要吧local最后的method改为password即可.你当然可以制定更加具体一点的策略:

host    db_name user_name   10.10.10.1  password

比如以上策略表示通过socket连接,使用用户user_name访问地址10.10.10.1上的数据库db_name需要输入密码!

ok!现在通过psql登录本地任何数据库都需要输入密码啦,但是通过gui工具pgadmin登录还是不需要密码,我们还需要修改另2条策略:

# IPv4 local connections:
#host    all             all             127.0.0.1/32            password
# IPv6 local connections:
#host    all             all             ::1/128                 password

因为pgadmin不是通过local来登录postgresql的.你还可以设置一条策略,就是所有通过网络来访问的都要输入密码:

host    all             all              samehost                password

其中samehost代码任何host地址.

最后还要说另一个文件.pgpass,这个文件的目的是如果登录时需要输入密码,那么你可以把对应的密码写在这里,这样你就可以直接登录了.

该文件是在用户的home目录中,也可能开始并不存在,需要手动创建:

touch ~/.pgpass
chmode 0600 ~/.pgpass

后面一句是postgresql所要求的,增加安全性.

比如test用户的密码为pwd,则我们可以在.pgpass文件中增加一行:

*:5432:*:test:pwd

那么用test用户访问任何地址的任何数据库(通过5432端口)都不需要手动输入密码了,但是其它用户还是需要输入密码的.

MacOS下postgresql数据库密码的那些事的更多相关文章

  1. Windows下Postgresql数据库的下载与配置方法

    注意下载的是二进制版,不是带Windows Installer的,即绿色版本 http://www.enterprisedb.com/products-services-training/pgbind ...

  2. MetaSploit攻击实例讲解------终端下PostgreSQL数据库的使用(包括kali linux 2016.2(rolling) 和 BT5)

    不多说,直接上干货! 配置msf连接postgresql数据库 我这里是使用kali linux 2016.2(rolling)   用过的博友们都知道,已经预安装好了PostgreSQL. 1. p ...

  3. centos7下postgresql数据库安装及配置

    1.安装 #yum install -y postgresql-server 2.postgresql数据库初始化 #service postgresql initdb 3.启动postgresql服 ...

  4. linux下PostgreSQL数据库的源码安装

    实验环境>>>>>>>>>>>>>>>>>>操作系统:CentOS release 6.3 ...

  5. Linux下postgresql数据库部署与配置

    1.检查postgresql是否已经安装:rpm -qa | grep postgres 2.检查PostgreSQL 安装位置:rpm -qal | grep postgres 3.卸载Postgr ...

  6. 避免硬编码你的PostgreSQL数据库密码

    一个密码文件包含了我们需要连接的五个字段,所以我们可以使用文件权限来使密码更安全. host:port:dbname:user:password such as myhost:5432:postgre ...

  7. windows下postgresql数据库备份和还原

    1.通过cmd进入数据库的bin目录 cd C:\Program Files\PostgreSQL\9.6\bin 2.执行pg_dump备份命令,localhost 或者IP pg_dump -h ...

  8. PostgreSQL介绍以及如何开发框架中使用PostgreSQL数据库

    最近准备下PostgreSQL数据库开发的相关知识,本文把总结的PPT内容通过博客记录分享,本随笔的主要内容是介绍PostgreSQL数据库的基础信息,以及如何在我们的开发框架中使用PostgreSQ ...

  9. odoo开发笔记 -- odoo和postgresql数据库导入相关

    odoo数据库 导入.导出 首先odoo框架下postgresql数据库中,表结构的存储方式: 存在id(小写),并没有所谓的外部ID 例如数据库中的国家表:模块名_tb_country   (注意: ...

随机推荐

  1. 【转】cookielib模块

    cookielib模块 cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.例如可以利用本模块 的CookieJar类的对象来 ...

  2. php怎么返回json格式的数据

  3. Java基础之程序流程控制

    Java中的程序流程控制 Java中的程序流程分为三种结构:①顺序结构:②分支结构:③循环结构 一.顺序结构 Java中定义成员变量的时候,采用的是前向引用,也就是后面的变量可以引用之前定义好的变量. ...

  4. Resource 的 IsSealed 问题

    WFP 的 Generic.xaml ,App.xaml 等中的资源会被调用 Freezable. 在后台对该资源进行修改等操作会被提示.资源为密封对象. 如果,确定需要在后台对资源进行修改. 则需要 ...

  5. requests之一:HTTP请求 状态码

    1.请求方法主要有如下几种: Verb 描述 HEAD 只获取某个资源的头部信息,元数据.比如只想了解某个文件的大小,某个资源的修改日期等 GET 获取资源,一个或者多个 POST 创建资源 PATC ...

  6. iframe 里的高度自适应

    由于公司里的很多东西都要用到iframe 导致我不得不各种百度 首先是自适应高度 // document.domain = "caibaojian.com"; function s ...

  7. Tab标签js切换高效率写法

    原来的传统写法: function tabit(id,cid) { for(var i=0; i<10; i++){ gi(["tab"+i]).className = &q ...

  8. vue 2.0 路由切换以及组件缓存源代码重点难点分析

    摘要 关于vue 2.0源代码分析,已经有不少文档分析功能代码段比如watcher,history,vnode等,但没有一个是分析重点难点的,没有一个是分析大命题的,比如执行router.push之后 ...

  9. 小白学习java设计模式之策略模式

    策略模式:1.分析项目中的变化部分与不变部分(每个设计模式都要分析的)2.多用组合少用继承;用行为类组合,而不是行为继承,更具有弹性直接上代码: package com.wz.oneStrategis ...

  10. 模板 AC自动机

    题目描述 有$N$ 个由小写字母组成的模式串以及一个文本串$T$ .每个模式串可能会在文本串中出现多次.你需要找出哪些模式串在文本串$T$ 中出现的次数最多. 输入输出格式 输入格式: 输入含多组数据 ...