Linux系统PostgreSQL源码编译安装笔记【CentOS & Ubuntu篇】

操作系统:
    CentOS 7
    Ubuntu 18.04
安装版本:
    PostgreSQL 12.3 (当前最新版)

内容提要:

    1.在CentOS和Ubuntu两种主流Linux分支上源码编译安装PostgreSQL

    2.添加postgresql服务到Linux系统service以开机自启动(/etc/init.d)

    3.设置PostgreSQL默认超级账户`postgres'密码并开启远程访问

1.安装依赖

CentOS系统

yum install bison-devel readline-devel zlib-devel openssl-devel wget
yum groupinstall 'Development Tools'

Ubuntu系统

apt install build-essential libreadline-dev zlib1g-dev flex bison libxml2-dev libxslt-dev libssl-dev libxml2-utils xsltproc

2.下载源码

wget https://ftp.postgresql.org/pub/source/v12.3/postgresql-12.3.tar.gz
tar -xz -f postgresql-12.3.tar.gz
cd postgresql-12.3/ ; ls

3.编译安装

./configure --prefix=/usr/local/pgsql
make && make install
useradd postgres
mkdir /usr/local/pgsql/data
chown -R postgres:postgres /usr/local/pgsql/
echo -e '# PostgreSQL PATH\nexport PATH=/usr/local/pgsql/bin:$PATH\n' >> /etc/profile
source /etc/profile

4.设置开机启动

cp contrib/start-scripts/linux /etc/init.d/postgresql
chmod a+x /etc/init.d/postgresql

CentOS系统

ln -s /etc/init.d/postgresql /etc/rc.d/rc0.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc.d/rc1.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc.d/rc2.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc.d/rc3.d/S98postgresql
ln -s /etc/init.d/postgresql /etc/rc.d/rc4.d/S98postgresql
ln -s /etc/init.d/postgresql /etc/rc.d/rc5.d/S98postgresql
chkconfig --add postgresql
chkconfig postgresql on
firewall-cmd --add-port=5432/tcp --permanent
systemctl restart firewalld.service

Ubuntu系统

ln -s /etc/init.d/postgresql /etc/rc0.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc1.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc2.d/K02postgresql
ln -s /etc/init.d/postgresql /etc/rc3.d/S98postgresql
ln -s /etc/init.d/postgresql /etc/rc4.d/S98postgresql
ln -s /etc/init.d/postgresql /etc/rc5.d/S98postgresql
update-rc.d postgresql defaults

5.启动安装服务

这一步开始操作系统切换到`postgres'用户。

su - postgres
initdb -D /usr/local/pgsql/data
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/serverlog start

6.开启远程访问

sed -i "s/host    all             all             127.0.0.1\/32            trust/# host    all             all             127.0.0.1\/32            trust/" /usr/local/pgsql/data/pg_hba.conf
echo 'host    all             all             0.0.0.0/0               md5' >> /usr/local/pgsql/data/pg_hba.conf
sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/" /usr/local/pgsql/data/postgresql.conf
pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/serverlog reload

到此,就可以登录PG了。直接在命令行输入`psql'即可以PostgreSQL默认超级账户`postgres'无密码本地localhost登录。登录进PG以后设置一个密码,即可用其他GUI工具以TCP/IP远程访问本次安装的PostgreSQL。

$ psql
psql (12.3)
Type "help" for help.

postgres=# ALTER USER postgres WITH PASSWORD '1024';
ALTER ROLE
postgres=# SELECT VERSION();
                                               version                                               
-----------------------------------------------------------------------------------------------------
 PostgreSQL 12.3 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit
(1 row)

postgres=# \q

因为之前已经将postgresql添加到操作系统/etc/init.d,以后就可以以系统管理员熟悉的service管理PG。

service postgresql status
service postgresql stop
service postgresql start
service postgresql restart
service postgresql reload

也可以以其他操作系统账户,如root账户,来直接登录PG。

root@ubuntu:~# psql -Upostgres
psql (12.3)
Type "help" for help.

postgres=# \q
root@ubuntu:~# psql -Upostgres -dpostgres
psql (12.3)
Type "help" for help.

postgres=# \q

 

 

参考:

https://www.postgresql.org/ftp/source/

https://www.postgresql.org/docs/current/installation.html

https://wiki.postgresql.org/wiki/Compile_and_Install_from_source_code

你可能感兴趣的:(#,PostgreSQL,#,Unix,/,Linux,Linux源码编译安装PG,CentOS源码编译安装PG,Ubuntu源码编译安装PG,postgresql开机自启动,postgresql远程访问)