安装PostgreSQL的时候,使用 sudo apt-get install
方式安装时,一直会出现这样的错误,而且默认的5432端口也打不开。
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket “/var/run/postgresql/.s.PGSQL.5432”?
按照网上提供的解决方法没有成功解决。于是我就卸载使用其他方式重装,参考link。安装方法如下:
1.官网上面下载包:
https://www.postgresql.org/ftp/source/
本文选择的是13.2版本。
2.解压文件
3.进入解压目录并配置参数
进入解压目录: cd postgresql-13.2
创建安装目录: sudo mkdir /opt/postgresql-13.2
配置安装参数: ./configure --prefix=/opt/postgresql-13.2
> 注:
--prefix 指定安装目录
如果缺少readline,zlib,会提示报错。
安装readline包: sudo apt-get install libreadline6-dev
安装zlib包: sudo apt-get install zlib1g.dev
4.编译并安装
make & make install
5.创建用户组和用户,并设置密码
root不能执行pgsql的一些命令,因此要创建postgresql这个用户
sudo useradd -d /home/postgres -m postgres #创建用户并为用户创建主目录,-m:自动建立用户的登入目录。
passwd postgres #为用户postgre设置密码
> 注:创建用户时没有密码,登录时又提示输入密码,那就 sudo passwd 用户名,然后回车输入两遍密码就可以为新用户添加密码了
6.创建数据库库文件存储目录并给postgresql用户赋予权限
进入数据库安装目录: cd /opt/postgresql-13.2
创建data目录: sudo mkdir data
给postgresql用户赋予权限:sudo chown postgres.postgres data
7.切换用户
su postgres
8.添加环境变量
export POSTGRESQL_HOME=/opt/postgresql-13.2
export PGDATA=/opt/postgresql-13.2/data
export PATH=$PATH:$POSTGRESQL_HOME/bin:$PGDATA
#查看环境变量
echo $POSTGRESQL_HOME
echo $PGDATA
echo $PATH
若环境变量出错,可执行
export PATH=.:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/opt/postgresql-13.2/bin:/opt/postgresql-13.2/data
9.初始化数据库目录
初始化数据: initdb
10.配置监听地址和端口
进入data/postgresql.conf修改为如下配置:
listen_addresses = '*'
port = 5432
也就是将注释号"#“去掉,并把"localhost"改为”*"
11、允许远程主机连接
进入data/pg_hba.conf添加如下配置:
host all all 0.0.0.0/0 trust
12.启动数据库
$ pg_ctl -D /opt/postgresql-13.2/data -l logfile start
报错了,没有权限:
waiting for server to start..../bin/sh: 1: cannot create logfile: Permission denied
stopped waiting
pg_ctl: could not start server
Examine the log output.
于是把-l删掉:
$ pg_ctl -D /opt/postgresql-13.2/data start
waiting for server to start....2021-04-04 11:49:25.853 CST [25368] LOG: starting PostgreSQL 13.2 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit
2021-04-04 11:49:25.894 CST [25368] LOG: listening on IPv4 address "0.0.0.0", port 5432
2021-04-04 11:49:25.895 CST [25368] LOG: listening on IPv6 address "::", port 5432
2021-04-04 11:49:25.898 CST [25368] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432"
2021-04-04 11:49:25.907 CST [25369] LOG: database system was shut down at 2021-04-04 11:42:26 CST
2021-04-04 11:49:25.911 CST [25368] LOG: database system is ready to accept connections
done
server started
这时候终于成功启动psql了,也成功打开5432端口了。
$ psql
psql (13.2)
Type "help" for help.
postgres=#