PostgreSQL安装及配置


1、pgsql安装

1.1 安装核心功能

# 1. 下载源码
$ cd /usr
$ sudo mkdir localsoft
$ cd localsoft
$ sudo mkdir pgsql
$ cd pgsql
# 下载  下载地址:https://www.postgresql.org/ftp/source/ 找到对应版本下载即可
# wget 下载
$ sudo wget https://ftp.postgresql.org/pub/source/v13.3/postgresql-13.3.tar.gz
$ sudo tar xf postgresql-13.3.tar.gz
$ cd postgresql-13.3

# 2. 检查编译环境
$ sudo ./configure --with-openssl     
# 这个地方后边的 --with-options 是编译选项(带上openssl),还有其他的选项可以使用,看官方文档即可
# 用的比较多的是 uuid,如果要使用uuid,使用下边的命令
$ sudo ./configure --with-openssl --with-uuid=e2fs   # 这个地方我没有使用ossp,这个包已经停止维护了,所以使用的是linux下常用的e2fs

# 新系统可能会出现个问题: no acceptable C compiler found in $PATH
# 解决方案就是需要安装 gcc  用下面的安装gcc  就行
# 注意:这个地方可能会出现xxx找不到,例如:readline、gcc、zlib library 这些找不到,那么需要安装
# 这几个安装任何的linux软件,都是需要的,所以需要安装
# 安装 readline : sudo apt-get install libreadline-dev
# 安装 gcc : sudo apt-get install build-essential
# 安装 zlib:sudo apt-get install zlib1g-dev
# 安装 crypto:sudo apt-get install libssl-dev
# 如果使用了uuid,可能会出现configure: error: library 'uuid' is required for E2FS UUID,这个是要我们配置一个uuid的库,使用 sudo apt-get install uuid-dev 安装即可



# 3. 编译
# 最后的结果输出 All of PostgreSQL successfully made. Ready to install. 就算是完成了,如果是其他的提示,那需要网上翻,找到问题
$ sudo make

# 4. 安装
# 输出:PostgreSQL installation complete. 就算是成功了。如果是其他的提示,那需要网上翻,找到问题
$ sudo make install

1.2 安装扩展模块

上边我们已经安装了pgsql的核心功能,但是有一些扩展功能还是很有用的,比如说UUID,下边我们主要是安装两个扩展uuid-ossppgcrypto,前边那个主要是用来处理随机值,后边那个模块提供了很多类似sha1md5等等这些算法的。

1.2.1 安装uuid-ossp

注意:这个模块安装需要上边./configure的时候,后边带上uuid的选项,否则安装这个扩展是没有意义的

$ cd /usr/localsoft/pgsql/postgresql-13.3/contrib
$ cd uuid-ossp
$ sudo make 
$ sudo make install

安装完成后,会有下边提示

/usr/bin/install -c -m 755  uuid-ossp.so '/usr/local/pgsql/lib/uuid-ossp.so'
/usr/bin/install -c -m 644 ./uuid-ossp.control '/usr/local/pgsql/share/extension/'
/usr/bin/install -c -m 644 ./uuid-ossp--1.1.sql ./uuid-ossp--1.0--1.1.sql  '/usr/local/pgsql/share/extension/'

然后进入到响应的目录,去看文件是否存在即可,如果存在,那么说明安装已经完成

1.2.2 安装 pgcrypto
$ cd pgcrypto
$ sudo make
$ sudo make install

安装完成后会有下列提示

/usr/bin/install -c -m 755  pgcrypto.so '/usr/local/pgsql/lib/pgcrypto.so'
/usr/bin/install -c -m 644 ./pgcrypto.control '/usr/local/pgsql/share/extension/'
/usr/bin/install -c -m 644 ./pgcrypto--1.3.sql ./pgcrypto--1.2--1.3.sql ./pgcrypto--1.1--1.2.sql ./pgcrypto--1.0--1.1.sql  '/usr/local/pgsql/share/extension/'

注意:上边只是把这两个扩展导入进来了,使用的时候,还是需要按照官网文档导入一下。

2、配置

安装完成后,默认的会把pgsql安装到 /usr/local/pgsql 路径下

2.1 创建用户

root用户不能启动postgresql,所以我们需要创建一个普通用户来启动和管理(通常都是使用postgres这个用户)

$ sudo groupadd -g 1111 postgres   # 1111是组ID
$ sudo useradd -g 1111 -u 1111 postgres  # 前边那个1111是组ID,后边那个1111是指定用户ID
$ sudo passwd postgres  # 设置密码   huahansoft_123
$ id postgres   # 查看postgres用户信息

2.2 创建数据目录和日志目录

$ sudo mkdir /usr/local/pgsqldata/13.3/{data,logs}
# 将数据目录和日志目录权限赋予postgres
$ sudo chown -R postgres.postgres /usr/local/pgsqldata

2.3 初始化数据目录

$ su postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsqldata/13.3/data -U postgres -W 
# -D 指定数据目录   
# -U 设置数据库超级用户的用户名,默认是postgres ,如果你建立的设置的超级用户就是postgres的话,那么就没有必要加了
# -W 在initdb的过程中为数据库超级用户设置一个密码。上边我们已经为postgres这个用户设置了一个密码,这个地方重新输入一下那个密码就可以。

# 执行完上边的命令后,会有 /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsqldata/13.3/data -l logfile start 的提示,这个命令就可以启动数据库,但是不要执行

2.4 创建linux服务

注意:创建服务不能使用postgres用户,所以需要切换到登录用户或者新开一个连接

$ cd /etc/systemd/system
$ sudo vim pgsql-13.3.service  # 注意:这个名称是自己起的

将下边的内容拷贝进去(注意路径)

pgsql服务文件

[Unit]
Description=PostgreSQL 13.3 database server
Documentation=man:postgres(1)

[Service]
Type=forking
User=postgres
ExecStart=/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsqldata/13.3/data -l /usr/local/pgsqldata/13.3/logs/serve.log start
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=0

[Install]
WantedBy=multi-user.target

保存,退出

执行下边的命令,重新加载服务文件

$ sudo systemctl daemon-reload

启动pgsql

$ sudo systemctl start pgsql-13.3

# 设置开机启动
$ sudo systemctl enable pgsql-13.3

# 查看启动状态
$ sudo systemctl status pgsql-13.3
# 关闭服务
$ sudo systemctl stop pgsql-13.3
# 重启服务
$ sudo systemctl restart pgsql-13.3

2.5 修改端口和ip

$ sudo vim /usr/local/pgsqldata/13.3/data/postgresql.conf

然后修改下边两个

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432

这两个一个是ip,一个是端口。按照实际的需求修改既可。默认都是没有启动的,需要把前边的#去掉。

3、创建数据库

数据库创建有两种情况

3.1 在内网上或者其他服务器上没有创建

这种情况就是开发的时候创建

$ sudo -u postgres /usr/local/pgsql/bin/psql  # 使用默认端口连接
$ /usr/local/pgsql/bin/psql postgres postgres -p 5980  # 使用指定端口连接

# 创建用户"huahansoft"并设置密码
$ postgres=# create user huahansoft with password 'huahansoft';

# 创建数据库,所有者为huahansoft
$ postgres=# create database dhhhuahantest owner huahansoft;

# 将DHHHuaHanTest数据库的所有权限赋予huahansoft,否则huahansoft只能登陆psql,没有任何操作数据库的权限
$ grant all privileges on database dhhhuahantest to huahansoft;
3.1.1 修改可以远程访问
$ sudo vim /usr/local/pgsqldata/13.3/data/pg_hba.conf

该配置文件就是它所在数据库实例的“防火墙”,文件格式如下

TYPE    DATABASE       USER        ADDRESS    METHOD 
host   dhhhuahantest  huahansoft  0.0.0.0/0  md5

按照实际业务情况,添加一条既可

修改完成以后重启postgre的服务。

3.2 从其他服务器上拷贝过来

这个就简单了,上边已经安装完成,并且data目录已经初始化完成,下边要做的就是把其他服务器上的文件夹拷贝过来即可。

在目标服务器上执行

$ sudo mv /usr/local/pgsqldata/13.3/data /usr/local/pgsqldata/13.3/data.bak

在原服务器上执行

$ sudo scp -r /usr/local/pgsqldata/12.4/data ubuntu@81.71.123.29:~

-r后边的是要拷贝的文件夹

ubuntu@81.71.123.29:~是目标服务器上的用户名和IP,:后边的是目标服务器上的地址,就是将这个文件夹拷贝到目标服务器上什么地方。

接着,在目标服务器上执行

$ sudo cp -r ~/data /usr/local/pgsqldata/13.3
# 修改data的所有者
$ sudo chown postgres.postgres /usr/local/pgsqldata/13.3/data

然后修改data下边的postgresql.conf,将IP和端口修改成自己想要的即可。

修改pg_hba.conf,将跟该项目没有关系的数据库访问清除一下,这个地方只是将访问限制清除了,想彻底清除,还需要使用postgres用户登录一下,然后使用drop database命令将所有没有用的数据库清空。

完成上边的命令后,重启数据库服务即可。

results matching ""

    No results matching ""