PostgreSQL如何登陆连接数据库

译者:anxin
日期:2017-09-26

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系统用户postgressu – 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认证失败错误。

本文链接:/tutorial/postgresql/postgresql-denglu-lianjie-shujuku

本文版权归知站所有,未经站长同意不得转载,谢谢尊重作者劳动成果!