CentOS7 安装 PostgreSQL

最近比较闲,就测试下很早就想要测试的数据库--PostgreSQL。
安装
由于我很懒,最习惯的是二进制解压的安装,但是对于PostgreSQL来说,我找了很久也没找到相关的tar包,所以最终决定比较麻烦的编译安装。
首先清空环境

# rpm -qa | grep postgresql
# sudo yum remove postgresql*

包地址:
PostgreSQL17.2
当然我用的命令是

# mkdir -p /devdb/pgsql
# cd /devdb/pgsql
# wget https://download.postgresql.org/pub/latest/postgresql-17.2.tar.gz
# tar -xvf postgresql-17.2.tar.gz 
# cd postgresql-17.2
准备yum依赖
# yum -y install gcc zlib-devel readline-devel python-devel perl-ExtUtils-Embed 

重置postgres用户

# userdel -r postgres
# groupadd -g 701 postgres
# useradd -g 701 -u 701 -s /bin/bash -m postgres
# passwd postgres
配置postgres用户的.bashrc内容
# su - postgres
$ cd /home/postgres
$ vi .bashrc
export PATH=/devdb/pgsql/data/bin:$PATH
export LD_LIBRARY_PATH=/devdb/pgsql/data/lib:$LD_LIBRARY_PATH  ##设置共享库路径(PG使用某些功能需要预加载相关的共享库)
export PGDATA=/devdb/pgsql/data/data
export PGHOST=/tmp
$ source .bashrc

编译安装:configure,make,make install

# cd /devdb/pgsql/postgresql-17.2
# ./configure --prefix=/devdb/pgsql/data

# make
# make install 
# chown -R postgres:postgres /devdb/pgsql

初始化
# su - postgres
$ mkdir -p /devdb/pgsql/data/data
$ cd /devdb/pgsql/data/bin
$ initdb
必须配置:postgresql.conf 新建的postgres用户对 /var/run/postgresql 目录没有写权限
$ vim /devdb/pgsql/data/data/postgresql.conf
在文件最后加上(否则将无法启动数据库):
unix_socket_directories = '/tmp'
其他必须设定配置文件
配置远程连接
$ vim pg_hba.conf
将 
host    all             all             0.0.0.0/0               md5
host    all             all             0.0.0.0/0               password
补充到最后
#内容解析:
#TYPE(主机类型)、DATABASE(数据库名)、USER(用户名)、ADDRESS(IP地址和掩码)、METHOD(加密方法)
1.type
host:使用TCP/IP 连接
local:使用Unix-domainsocket
hostssl: 指定SSL
hostnossL:禁止SSL
2.database
"all",以及数据库名。对于多个数据库名用逗号隔开
3.use
和database相同
4.address
指定匹配地址
5.METHOD
加密方式:trust,reject,md5,password ......

配置网络(postgresql.conf内配置)
$ vim postgresql.conf
将
listen_addresses = '*' 
写入

备选-配置日志(postgresql.conf内配置),也可以不配
将
log_directory = '/devdb/pgsql/data/logs'
写入

启动数据库
$ pg_ctl start
停止数据库
$ pg_ctl stop

登录数据库
$ psql 
postgres=# ALTER USER postgres WITH PASSWORD '123456';
ALTER ROLE
查看所有数据库信息
\l
postgres=# \l
                                                     List of databases
   Name    |  Owner   | Encoding | Locale Provider |   Collate   |    Ctype    | Locale | ICU Rules |   Access privileges   
-----------+----------+----------+-----------------+-------------+-------------+--------+-----------+-----------------------
 postgres  | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | 
 template0 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | =c/postgres          +
           |          |          |                 |             |             |        |           | postgres=CTc/postgres
 template1 | postgres | UTF8     | libc            | zh_CN.UTF-8 | zh_CN.UTF-8 |        |           | =c/postgres          +
           |          |          |                 |             |             |        |           | postgres=CTc/postgres
(3 rows)

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注