实现目标:需要在Linux上配置postgresql环境并且进行远程连接,通过编译pg源码的方式进行安装,Linux为全新无其他预安装软件,每一步都是自己实际安装中踩到的坑,亲测可用,具体步骤如下:
资源获取:pg源码安装包,所需版本为12.9。资源链接:PostgreSQL: Downloads,源码压缩包链接:PostgreSQL: File Browser。下载pgsql12.9版本: postgresql-12.9.tar.gz
一、解压文件。将下载后的安装包放到需要安装的文件夹下,运行命令行。
gunzip postgresql-12.9.tar.gz
tar xf postgresql-12.9.tar
参考链接:PostgreSQL: Documentation: 14: 17.3. Getting the Source
二、完成对压缩文件的解压后,在解压路径下,通过一系列安装命令进行安装:
./configure
make
su
make install
adduser postgres
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
(1)执行./configure,判断环境是否正确。执行中可能会遇到如下报错,解决一个报错后重新执行./configure
,直到所有报错消失。
报错1:no acceptable c compiler found in $PATH
,这是表明系统缺少c编译环境。
解决方案: 行命令sudo apt install gcc
安装c的编译环境,运行中遇到Y/n直接默认Y即可,安装成功如下所示。
运行命令sudo apt install gcc
安装c的编译环境,运行中遇到Y/n直接默认Y即可,安装成功如下所示。之后即可正常执行./configure
。
报错2:configure: error: readline library not found
解决方案: 根据提示,应该是没有安装 readline包。所以执行命令sudo apt install libreadline-dev
,完成安装。
报错3:configure: error: zlib library not found;
解决方案:根据提示,应该是没有安装 zlib包。分别执行两条命令进行安装。
sudo apt-get install zlib1g
sudo apt-get install zlib1g.dev
最终成功执行./configure
命令后结果如下(无报错):
报错1:command 'make' not found,but can be installed with:
解决方案:执行sudo apt-get install make
,输入用户密码后安装,完成之后重新执行make命令。
最终成功执行make
命令后结果如下(无报错),完成后会提示:All of PostgresQL successfully made. Ready to install.
(3)执行su,切换到root
**报错1:**输入密码后报错,原因:root用户没有设置密码
解决方案:输入sudo passwd root
,输入新密码即可
成功执行完su:
(4)执行make install:成功,提示PostgresQL installation complete.
表示postgres已经编译安装完成。
(5)建立一个系统用户 postgres ,执行adduser postgres
, 需要输入密码,密码自定,可为123456。若提示changing user information
,不做额外修改,可以直接回车默认。
(6)执行:
mkdir /usr/local/pgsql/data #建立一个存储数据的目录
chown postgres /usr/local/pgsql/data # 将这个目录的所有者分配给 postgres 用户。
(7)初始化数据库:切换用户到 postgres: su - postgres
,之后执行如下命令。
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data #绑定数据库文件存储目录:
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start #启动数据库
/usr/local/pgsql/bin/createdb test #创建数据库test
/usr/local/pgsql/bin/psql test #连接到test数据库
这里表示pgsql服务已经启动,接下来尝试创建测试数据库test,并打开。
进入test后即可执行一系列sql操作。
(8)设置pgsql远程链接:执行命令su - postgres
,切换到postgres用户下.
执行命令vim /usr/local/pgsql/data/pg_hba.conf
:该命令为修改pg_hba.conf配置文件,在IPV4 local connections
下,添加一行为host all all 0.0.0.0/0 trust
,表示允许所有ip接入。
执行命令vim /usr/local/pgsql/data/postgresql.conf
:该命令为修改postgresql.conf配置文件。
将listen_address的原有的默认值localhost
改为*
,同时将addresses ='*' 和port = 5432
的两行的注释打开,完成编辑后Esc+ :wq
退出。
修改配置文件的方式:进入vim 编辑器后,按i进入编辑模式,移动光标到该插入的位置,输入完成后,按esc回退到命令模式,输入:wq
,表示储存后退出。
若异常退出vim编辑器,再次进入时候会出现如下提示,这是由于已经打开但未闭关的文件,会在其目录下出现一个.swp的文件,由于是属于隐藏文件,可以用命令ls -a
对其进行查看。需要将该swp文件进行删除,命令为rm -rf .pg_hba.conf.swp
(9)完成配置文件修改后,重新执行/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
或者restart
,表示重启服务 。
(10)查看Ubuntu的ip地址:ifconfig
。若报错,执行sudo apt install net-tools
,安装net-tools 工具。完成安装后再输入 ifconfig 命令,即可查看ip地址。
如图所示,ip地址即为172.22.17.68 , 外部在Windows系统下打开Navicat或者pgadmin,输入ip和密码即可完成连接。后续数据库导入工作直接外部完成即可。
另:本教程的linux环境为windows子系统,通过wsl重新进入系统,进入pgsql的方法如下:
(1)进入postgres用户:su - postgres
(2)启动pg服务:/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
(3)添加环境变量:查看版本psql --version 报错,此时要将postgresql的 bin 目录添加到环境变量中,因此执行 export PATH="/usr/local/pgsql/bin:$PATH"
,之后再执行psql命令即可,不用指定bin目录了。