当前位置:   article > 正文

PostgreSQL编译安装教程_postgresql 编译安装

postgresql 编译安装

目录

系统环境

下载压缩包

下载压缩包

解压压缩包

查看解压文件

编译安装

编译

安装

用户权限和环境变量设置

创建用户

创建数据目录和日志目录

设置权限

设置环境变量

初始化数据库

数据库访问控制配置文件

postgresql.conf

pg_hba.conf

PostgreSQL启动与关闭

手动

自动

客户端测试连接

设置用户postgres密码

DBeaver连接测试


系统环境

1.操作系统:CentOS 7.6.1810

2.PostgreSQL版本: 16.0

下载压缩包

官网地址:PostgreSQL: File Browser

下载压缩包

wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz

解压压缩包

tar -xzvf  postgresql-16.0.tar.gz

查看解压文件

解压之后会看到下面的文件

编译安装

编译

进入postgresql-16.0目录,编译configure文件

./configure --prefix=/usr/local/pgsql

参数:--prefix=/usr/local/pgsql
表示编译好的文件放到目录"/usr/local/pgsql"里,这个目录不用用户自己创建,编译过程会自动创建。

注意事项:

PostgreSQL编译过程会用到一些依赖的库,如果你的操作系统比较旧,编译过程可能会出现错误,告诉你要安装缺少的依赖库。

看到./config.status说明编译完成,可以看见config.status文件

安装

make && make install 

完成以后,在"--prefix=/usr/local/pgsql"参数对应的"/usr/local/pgsql"的目录就是我们所有PostgreSQL存放的文件,这里的这个data和log文件现在是没有的。

用户权限和环境变量设置

编译安装成功后,接下来要做的就是创建一个普通用户,因为默认Linux超级用户(root)不能启动PostgreSQL,所以需要创建一个普通用户来操作数据库。

创建用户

  1. #创建用户组postgres
  2. groupadd postgres
  3. #创建用户postgres并设置groups、gid和家目录
  4. useradd -g postgres -G postgres -d /home/postgresql postgres
  5. #设置用户密码
  6. passwd postgres

创建数据目录和日志目录

注意当前路径是在/usr/local/pgsql下

mkdir data log

设置权限

接下来需要设置权限,将/usr/local/pgsql (我们安装PostgreSQL数据库的目录) 目录全部赋权给postgres用户

chown -R postgres.postgres /usr/local/pgsql/

设置环境变量

为了方便起见设置一下相关的环境变量,此处是要设置postgres用户的环境变量,所以首先要把Linux的登陆用户由root切换到以postgres用户登陆。

su - postgres

因为我们创建Linux用户"postgres"是指定了用户的目为"/home/postgresql",所以登陆后显示的目录是:/home/postgresql

要创建环境变量,实际上就是对文件.bash_profile的修改,所以我们首先要找到这个文件,这个文件就在"/home/postgresql"里,由于这个文件是隐藏文件所以要加-a参数

ll -a 

编辑.bash_profile文件

vim .bash_profile

添加下面的内容

使配置的环境变量生效

source /home/postgresql/.bash_profile

检查是否生效

psql -V

看到安装PostgreSQL的版本号则代表生效

初始化数据库

新安装的PostgreSQL数据库系统,要先初始化基本的基础数据库,然后我们才能在上面创建我们自己的数据库。初始化数据库的指令是"initdb",这个指令位于"/usr/local/pgsql/bin/"

我们可以用指令"initdb --help"看看这个文件的帮助信息。

如上图,可以看到在使用"initdb"进行初始化的时,可以指定参数进行一些初始化工作,例如指定pgdata(postgresql数据库目录)、指定encoding(编码)、指定数据库超级用户的用户名和密码等等。注意,如果pgdata目录没有指定,则会默认使用环境变量中的PGDATA指定的目录作为数据库存放的目录,由于之前我们刚刚设置了"PGDATA=/usr/local/pgsql/data"环境变量,所以此处我们也就无需再额外指定,直接执行初始化命令即可。

initdb

若是执行initdb看到下面报错,说明现在登陆的不是postgres用户,需要切换到postgres用户来执行initdb命令

看到下面信息就代表成功

同时在"/usr/local/pgsql/data]"的目录可以看到生成的数据和配置文件等。

  1. base目录是表空间目录
  2. global目录是相关全局变量的目录
  3. pg_hba.conf是访问控制配置,127.0.0.1改为信任的客户端ip网段使其可以远程访问
  4. postgresql.conf是PostgreSQL主配置文件,"listen_address=localhost"改为"*"使其监听整个网络,方便起见我这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问,算是提供一个最低级的安全防护

数据库访问控制配置文件

主要是配置postgresql.conf 和 pg_hba.conf 个。

  1. postgresql.conf 针对实例的配置
  2. pg_hba.conf 针对数据库访问的控制

postgresql.conf

vim postgresql.conf 

找到"#port"和"#listener_address"这两个参数,这两个参数是相邻的,将两行行首的"#"删除。
将"listen_addressee='localhost'"改为当前服务器的IP,如果改为

"listen_addressee='*'",将监听整个网络。
默认的监听端口是5432,可以自行指定另外一个端口号。
max_connections是客户端最大的连接数, 缺省值100有点少,特别是业务系统,可以调整成1000或者更高。

pg_hba.conf

vim pg_hba.conf

将红框设置为 10.10.100.0/24,意思是10.10.100网段的IP 连接此服务器上的PostgreSQL. 如果想允许所有IP都可以连接此服务器,则可以配置成0.0.0.0/0,但这样是不安全的,可以把trust改为md5,表示需要密码访问,算是提供一个最低级的安全防护。

PostgreSQL启动与关闭

手动

启动与关闭数据库是执行pg_ctl命令,在执行时,需要指定数据库路径和日志文件路径,格式如下。

pg_ctl -D <数据存放路径> -l <日志文件路径> [ stop | start ]

如果已经指定了环境变量PGDATA,"数据存放路径"参数可以省略。

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg_server.log start

自动

此步骤需要root用户操作,如果你是用PostgreSQL的用户postgres登陆的话,要用exit指令退出,回到root登陆才能操作。
PostgreSQL解压后的安装包目录中提供了数据库启动与关闭的脚本,此脚本不但可以帮助我们简化操作,而且可以用作开机启动的脚本和service/systemctl 控制服务的脚本。目录里"linux"文件就是我们要找的文件。

如果找不到linux文件可以执行下面命令查看

find / -name macos

把文件"linux"拷贝到目录"etc/init.d/"下,并改名为postgresql。
把脚本文件"postgresql"加入到开机启动的程序列表。
赋予"postgresql"文件有执行的权限。

  1. cp /opt/postgresql/postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
  2. chkconfig --add postgresql或者systemctl enable postgresql
  3. chmod 755 /etc/init.d/postgresql

主要设置文件"postgresql"的四个变量的值。

vim /etc/init.d/postgresql

prefix 是软件的安装路径
PGDATA 是数据存放路径
PGUSER 是启动PostgreSQL服务器的用户
PGLOG 是日志文件

以后可以开机启动和通过service命令控制启动和关闭了。

service postgresql start/stop

客户端测试连接

可以通过PostgreSQL自带的客户端工具程序psql来进行连接,这个psql指令文件位于/usr/local/pgsql/bin目录下,因为我们做了变量环境设置,所以可以在任何目录下直接输入psql连接PostgreSQL服务器。温馨提示:用客户端程序psql连接数据库前,要把当前Linux登陆用户从root切换到postgres用户,这个是我们创建的PostgreSQL的超级用户。

  1. su - postgres
  2. psql

可以看到,已经连接上了数据库服务器。

设置用户postgres密码

postgres=# \password

命令"\l"是显示数据库。更多的SQL操作命令可以参考PostgreSQL的官方文档。退出pgsql客户端命令是"\q"或者exit

DBeaver连接测试

测试连接成功

PostgreSQL安装到此完毕。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/905118
推荐阅读
相关标签
  

闽ICP备14008679号