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

前端之家收集整理的这篇文章主要介绍了数据库 – postgresql超级用户没有密码提示前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在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.

猜你在找的MsSQL相关文章