Ubuntu编译安装postgreSQL 10.5

    技术2022-07-11  85

    Ubuntu下编译安装postgreSQL 10.5

    ubuntu 16.04 LTS系统 postgreSQL 10.5

    安装包准备

    从PostgreSQL官网下载PostgreSQL的安装包

    安装过程

    解压源码包 tar zxvf postgresql-10.5.tar.gz cd postgresql-10.5

    检查环境配置

    #创建postgreSQL的安装目录 mkdir /usr/local/postgresql #检查环境配置--prefix是指定postgreSQL安装路径 ./configure --prefix=/usr/local/postgresql

    解决环境配置检查过程中出现的依赖问题

    出现readline library not found依赖的解决

    解决方法: 有网络:apt-get install -y libreadline-gplv2-dev 无网络:下载软件包使用dpkg命令安装 ,可在网站pkgs.org上下载 libtinfo-dev_6.0+20160213-1ubuntu1_amd64.deb libreadline-gplv2-dev_5.2+dfsg-3build1_amd64.deb 出现zlib library not found依赖问题的解决

    有网络:apt-get install zlib1g-dev 无网络:下载软件包 zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb

    再次重新检查环境 ./configure --prefix=/usr/local/postgresql 编译安装 #编译安装 make && make install

    出现下面的显示表示编译安装成功

    安装contrib目录下的一些工具,是第三方组织的一些工具代码,建议安装

    cd contrib make && make install 添加用户 root 用户不能启动postgresql 所以创建一个普通用户来启动和管理 #如果直接只用useradd添加用户的话,可能出现没有home下的文件夹 #可以使用adduser 命令 adduser postgres

    创建用户成功

    配置postgres用户环境变量

    #切换至postgres用户 su - postgres #修改配置文件 vim ~/.profile # 添加以下内容和修改PATH export PGHOME=/usr/local/postgresql export PGDATA=/var/postgresql/data export PGHOST=localhost export PATH="$HOME/bin:$HOME/.local/bin:$PATH:$PGHOME/bin" export MANPATH=$PGHOME/share/man:$MANPATH export LANG=en_US.utf8 export DATE=`date +"%Y-%m-%d %H:%M:%S"` export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH #下面只是启动服务的快捷配置,可不用配置 #alias pg_start='pg_ctl start -D $PGDATA' #alias pg_stop='pg_ctl stop -D $PGDATA -m fast'

    配置如下图

    启动数据库

    #初始化数据库 initdb -D /var/postgresql/data #启动服务 pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile start #连接数据库 psql #创建数据库 create database test; #创建表 create table t_user (id integer, name text); #插入测试数据 insert into t_user values (1,'joke'); #查询数据 select * from t_user ; #退出psql窗口 \q

    修改监听所有网络以及数据库连接数

    # 修改配置文件 vim /var/postgresql/data/postgresql.conf # listen_addresses = ‘localhost’ 监听本机,'*'监听所有网络 listen_addresses = '*' #max_connections 数据库的连接数根据具体需求更改

    . **修改远程访问 **

    vim /var/postgresql/data/pg_hba.conf #在文件的最下方加上下面的这句话,最后一个 trust 表示所有用户不需要密码,需要密码要设置为 md5 host all all 0.0.0.0/0 md5

    防火墙开启端口

    # 切换root用户 su - root # 防火墙 允许5432 端口 ufw allow 5432

    重启postgreSQL服务

    # 切换postgres用户 su - postgres #重启服务 pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile restart #停止服务 pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile stop

    设置开机自启动

    切换到root用户 su - root 1 找到解压后源码包里面的一个linux文件 cd /home/postgresql/postgresql-10.5/contrib/start-scripts 1

    修改linux文件属性,添加X属性

    chmod a+x linux

    复制linux文件到/etc/init.d目录下,更名为postgresql

    cp linux /etc/init.d/postgresql

    ​ 修改/etc/init.d/postgresql文件的两个变量

    vi /etc/init.d/postgresql #prefix设置为postgresql的安装路径:prefix=/usr/local/postgresql #PGDATA设置为postgresql的数据目录路径:PGDATA="/var/postgresql/data"

    执行service postgresql start,可以启动PostgreSQL服务

    service postgresql start

    如果这里执行命令后出现Failed to start postgresql.service: Unit postgresql.service not found.错误 请检查配置postgres用户的环境变量的时候是否将PATH给export了

    ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ 这里很重要,没有教程,有一个方法可用ubuntu18 |||||||||||||||||||||||||||||||| $ sudo service postgresql start Failed to start postgresql.service: Unit postgresql.service is masked. $ sudo systemctl unmask postgresql --执行这一句即可生效 Removed symlink /etc/systemd/system/postgresql.service. $ sudo systemctl restart postgresql $ sudo service postgresql start $ service postgresql status

    设置postgresql服务开机自启动

    #ubuntu 16.04前版本使用chkconfig命令 chkconfig --add postgresql #ubuntu 16.04版本使用sysv-rc-conf命令,可能需要进行安装 sysv-rc-conf postgresql on 1. sysv-rc-conf 离线安装依赖的包 libcurses-perl_1.33-1build1_amd64.deb libterm-readkey-perl_2.33-1build1_amd64.deb libcurses-ui-perl_0.9609-1_all.deb sysv-rc-conf_0.99-7_all.deb 从上至下依次安装即可 2. 在线安装 apt-get install sysv-rc-conf

    重新启动系统,postgreSQL自动启动

    Processed: 0.009, SQL: 9