|
[postgres@master tmp]$ psql
psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
Is the server running locally and accepting connections on that socket?
从上面的报错信息看,和socket套接字有关。socket套接字连接,是一种本地连接的方式。很多数据库也有socket套接字连接,比如mysql,当然数据库也有通过IP、SSL等连接的方式。
打开postgresql.conf文件,发现确实有关于socket的配置内容如下:
unix_socket_directories = '/home/postgres/training/pgsql/data' # comma-separated list of directories
默认情况下,unix_socket_directories配置通常被注释掉的,并没有启用。从该参数的英语内容看,该参数中可以设置多个用逗号分隔的目录。如果要改变此参数的设置,也是要重启的。
和socket有关的,还有两个参数。如下所示
#unix_socket_group = '' # (change requires restart)
#unix_socket_permissions = 0777 # begin with 0 to use octal notation
上面的两个参数,默认也是不启用的。一个所属的组,一个关于套接字权限的,要以0开头,使用10进制计数法表示。
上面三个关于unix_socket都是不启用的,我就在配置文件将其注释不用。
然后使用pg_ctl reload -D $PGDATA,重新加载配置文件。
然后再重新登录,果然可以成功登录了。
[postgres@master ~]$ psql
psql (15.3)
Type "help" for help.
总结:PG数据库的启动,离不开配置文件参数内容的支撑。通常遇到故障时,大家可以根据报错信息做相应的判断。另外要注意,要根据日志内容进行故障判断。
合作电话:010-64087828
社区邮箱:greatsql@greatdb.com