PostgreSQL不像MySQL那样只能使用用户名密码登陆数据库,而在有些系统(如CentOS)默认是不能使用用户名密码登陆数据库。客户端登陆连接PostgreSQL数据库时会读取pg_hba.conf配置文件中的配置,然后决定使用那种方式登陆或连接数据库。
如果你不了解pg_hba.conf
配置文件,查看:pg_hba.conf配置文件解析
配置登陆认证方式
一般安装PostgreSQL后,pg_hba.conf
配置文件的内容如下:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
修改后的pg_hba.conf
内容如下:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
PostgreSQL命令行工具连接数据库解释
安装PostgreSQL数据库后,很多教程使用如下方式操作数据库:
su - postgres
上一次登录:二 9月 19 16:37:28 CST 2017pts/0 上
-bash-4.2$
然后输入命令psql就能对数据库操作:
-bash-4.2$ psql
psql (9.6.5)
输入 "help" 来获取帮助信息.
postgres=#
具体解释:
PostgreSQL安装后,为创建一个数据库用户postgres
,同时创建一个Linux系统用户postgres
,su – postgres
是使用Linux用户postgres
登陆Shell。当Linux用户postgres
登陆Shell后,输入命令psql
连接PostgreSQL数据库,那么此时匹配pg_hba.conf
中的连接类型为local
,然后对应的认证方式为peer
。PostgreSQL获取运行psql
客户端应用程序的Linux用户postgres
,查找PostgreSQL数据库是否存在角色postgres
,存在,然后就直接使用PostgreSQL角色postgres
登陆数据库,无需输入密码。
Python,PHP应用程序连接数据库解释
Python,PHP应用程序连接PostgreSQL数据库时,它要求用户提供用户名和密码,它需要使用用户名和密码认证方式,当连接PostgreSQL时配置pg_hba.conf
文件中的host记录,所以要把认证方式改为md5
。如果你使用Ident
认证方式,会出现dent认证失败
错误。
本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!
- 浏览量:537