服务器安装pgsql14.2

发布时间 2023-04-20 11:29:49作者: 余生请多指教ANT
1.0wget https://ftp.postgresql.org/pub/source/v14.2/postgresql-14.2.tar.gz  --no-check-certificate

2.0 tar -zxvf postgresql-14.2.tar.gz
3.0 mv postgresql-14.2/ postgresql

4.0cd   postgresql

5.0./configure --prefix=/usr/local/postgresql

【在执行
./configure的时候报错:
configure: error: readline library not found
解决方法:yum install -y readline-devel
报错:configure: error: zlib library not found
解决方法:yum install zlib-devel
】

6.0 make && make install

在/usr/local目录下就会有pgsql这个目录

mkdir /usr/local/pgsql/data
mkdir /usr/local/pgsql/log


7.加入系统环境变量【这一步看心情】
:view /etc/profile
export PGHOME=/usr/local/postgresql
export PGDATA=/usr/local/postgresql/data
export PATH=$PGHOME/bin

8.增加用户postgres并赋权
useradd postgres
chown -R postgres:root /usr/local/postgresql
chown -R postgres:root /usr/local/pgsql




9.初始化数据库
【
注意:
不能在 root 用户下初始数据库,否则会报错
[root@VM-8-15-centos ~]# /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/
initdb: cannot be run as root
Please log in (using, e.g., “su”) as the (unprivileged) user that will
own the server process.
】
su postgres
/usr/local/postgresql/bin/initdb -D /usr/local/pgsql/data/
10.编辑配置文件
vim /usr/local/pgsql/data/postgresql.conf
把60行的listen_addresses = 'localhost’改为listen_addresses = ‘*’
把对应的port=5432放开


vim /usr/local/pgsql/data/pg_hba.conf
添加一行:【一般情况下都这个,如果没有在添加】
host all all 0.0.0.0/0 trust   

说明:【pgsql.png】
TYPE:pg的连接方式,local:本地unix套接字,host:tcp/ip连接
DATABASE:指定数据库
USER:指定数据库用户
ADDRESS:ip地址,可以定义某台主机或某个网段,32代表检查整个ip地址,相当于固定的ip,24代表只检查前三位,最后一 位是0~255之间的任何一个
METHOD:认证方式,常用的有ident,md5,password,trust,reject。
md5是常用的密码认证方式。
password是以明文密码传送给数据库,建议不要在生产环境中使用。
trust是只要知道数据库用户名就能登录,建议不要在生产环境中使用。
reject是拒绝认证。

11.启动服务[如果没有配置到系统环境变量里面,这个命令不生效]
pg_ctl start -l /usr/local/pgsql/log/pg_server.log
可以使用如下命令:
/usr/local/postgresql/bin/pg_ctl  -D /usr/local/pgsql/data/  -l  /usr/local/pgsql/log/pg_server.log start



到相应目录下:/usr/local/postgresql/bin/pg_ctl
关闭:/usr/local/postgresql/bin/pg_ctl  -D /usr/local/pgsql/data/  -l  /usr/local/pgsql/log/pg_server.log stop
重启:/usr/local/postgresql/bin/pg_ctl  -D /usr/local/pgsql/data/  -l  /usr/local/pgsql/log/pg_server.log restart

12.0查看版本号
cd /usr/local/postgresql/bin
./pg_ctl --version


13.0登陆后设置密码
cd /usr/local/postgresql/bin
./psql -U postgres

ALTER USER postgres with encrypted password 'xxxxxx'; 
--------------------------------------------
这时相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为"postgres=#",表示这时已经进入了数据库控制台。以下的命令都在控制台内完成。

第一件事是使用\password命令,为postgres用户设置一个密码。

\password postgres
第二件事是创建数据库用户dbuser(刚才创建的是Linux系统用户),并设置密码。

CREATE USER dbuser WITH PASSWORD 'password';【之后记得重启服务器把pg_hba.conf里面的host all all 0.0.0.0/0 trust   的trust 改为md5 】
第三件事是创建用户数据库,这里为exampledb,并指定所有者为dbuser。

CREATE DATABASE exampledb OWNER dbuser;
第四件事是将exampledb数据库的所有权限都赋予dbuser,否则dbuser只能登录控制台,没有任何数据库操作权限。

GRANT ALL PRIVILEGES ON DATABASE exampledb to dbuser;


查看启动日志:/usr/local/postgresql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile start

14.把端口加入到防火墙
firewall-cmd --zone=public --add-port=5432/tcp --permanent
permanent参数表示永久生效,即重启也不会失效,最后不要忘记更新防火墙规则:

firewall-cmd --reload



每次登录要切换用户
sudo su - postgres