数据库 – postgresql超级用户没有密码提示

@H_404_0@
在Ubuntu 12.04上安装Postgresql 9.1之后,我设置了“postgres”超级用户帐户的密码.我希望所有用户登录时输入密码,这就是为什么我配置了pg_hba.conf,如下所示:
#Database administrative login by Unix domain socket
local   all             postgres                                md5

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5

进行这些更改后,我重新启动了postgresql.当我这样做psql -U testuser我得到一个密码,但是当我使用这样psql -U postgres的“postgres”帐户登录时,我没有密码提示并且已经登录.
如果我用psql -U postgres -W强制密码提示,我可以通过键入正确的密码或根本不输入任何内容登录.键入错误的密码被拒绝.

有人可以向我解释为什么会发生这种情况吗?

在相关的说明中:我看到很多例子,人们使用ident作为“postgres”用户的身份验证方法,认为要成为“postgres”用户需要机器的root密码.我认为推理是,如果攻击者获得root访问权限,那么你完成了任务.我更喜欢使用密码登录,与密码不一致.我推荐为不同的东西使用不同的密码.这是否合理?

输出grep’^ [^#]’pg_hba.conf

local   all             postgres                                md5
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5

解决方法

您的pg_hba.conf应该确实需要unix套接字连接的密码,但还有一些方法应该验证:

>包含密码的postgres主目录中的.pgpass文件(也检查非标准路径的PGPASSFILE环境变量).
>可以设置PGPASSWORD环境变量.

还有可能您编辑错误的pg_hba.conf文件.
以Postgres连接时,可以使用SHOW hba_file sql命令获取正确的路径进行验证.

此外,您可能需要检查日志文件/var/log/postgresql/postgresql-9.1-main.log,以确认在请求时重新加载配置文件,并在身份验证期间查找任何可疑消息.

至于与postgres用户无密码连接的原因,debian PG-9.1 pg_hba.conf有关于不允许的注释:

# DO NOT DISABLE!  
# If you change this first entry you will need to make sure that the  
# database superuser can access the database using some other method.  
# Noninteractive access to all databases is required during automatic  
# maintenance (custom daily cronjobs,replication,and similar tasks).  
#  
# Database administrative login by Unix domain socket  
local   all             postgres                                peer

由于Debian和Ubuntu使用相同的postgres软件包,所以这也适用于Ubuntu.

相关文章

(一)日志传送架构 (1.1)相关服务器 主服务器 :用于生产的服务器,上面运行这生产SQL Server数据库...
(一)事故背景 最近在SQL Server 2012生产数据库上配置完事物复制(发布订阅)后,生产数据库业务出现了...
(一)测试目的 目前公司使用的SQL SERVER 2012高可用环境为主备模式,其中主库可执行读写操作,备库既...
(一)背景个人在使用sql server时,用到了sql server的发布订阅来做主从同步,类似MySQL的异步复制。在...
UNION和OR谓词 找出 product 和 product2 中售价高于 500 的商品的基本信息. select * from product wh...
datawhale组队学习task03