最近比较闲,就测试下很早就想要测试的数据库--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)