系统环境
下载压缩包
下载压缩包
解压压缩包
查看解压文件
编译安装
编译
安装
用户权限和环境变量设置
创建用户
创建数据目录和日志目录
设置权限
设置环境变量
初始化数据库
数据库访问控制配置文件
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,所以需要创建一个普通用户来操作数据库。
创建用户
#创建用户组postgres
groupadd postgres
#创建用户postgres并设置groups、gid和家目录
useradd -g postgres -G postgres -d /home/postgresql postgres
#设置用户密码
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]"的目录可以看到生成的数据和配置文件等。
- base目录是表空间目录
- global目录是相关全局变量的目录
- pg_hba.conf是访问控制配置,127.0.0.1改为信任的客户端ip网段使其可以远程访问
- postgresql.conf是PostgreSQL主配置文件,"listen_address=localhost"改为"*"使其监听整个网络,方便起见我这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问,算是提供一个最低级的安全防护
数据库访问控制配置文件
主要是配置postgresql.conf 和 pg_hba.conf 个。
- postgresql.conf 针对实例的配置
- 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"文件有执行的权限。
cp /opt/postgresql/postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql或者systemctl enable postgresql
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的超级用户。
su - postgres
psql
可以看到,已经连接上了数据库服务器。
设置用户postgres密码
postgres=# \password
命令"\l"是显示数据库。更多的SQL操作命令可以参考PostgreSQL的官方文档。退出pgsql客户端命令是"\q"或者exit
DBeaver连接测试
测试连接成功
PostgreSQL安装到此完毕。