1、前言
前面2篇文章本来想源码安装postgresql和postgis;结果遇到了很多问题,并且新创环境不让用postgresql。后来发现X86CPU可以直接安装打包好的rpm包,决定更换安装路线,采用polardb+postgis的路线;
几个常用的命令:
1、ll
查看目录及其所属用户和拥有的权限
2chmod 750 /home/postgresql_data
赋权限
2、polardb安装
我用的polardb安装包名:PolarDB-11.9.20.0-20240504113509.el7.x86_64.rpm
1、创建postgres用户用户组
useradd postgres
2、修改postgres用户密码方法一:
echo "密码" | passwd --stdin postgres
3、装polardb包
yum install PolarDB-11.9.20.0-20240504113509.el7.x86_64.rpm
Yum install openssl-libs
初始化数据库(在用户postgres下执行 ,创建目录/home/postgres/db1, 定位到/u01/polardb_pg/bin)
./initdb -D /home/postgres/db1 -E UTF8 --locale=C --data-checksums -U postgres
如果提示缺少lib库文件 找到文件复制到/usr/lib64/目录中,再执行上述命令。
4、启动polardb(在用户postgres下执行 先定位到/u01/polardb_pg/bin)
./pg_ctl -D /home/postgres/db1 start
如果执行上述命令会有权限问题,先进入/u01目录,执行
chown -R postgres:postgres polardb_pg
将整个文件夹及其子文件赋权限给postgres用户
5、查看数据库版本
进入命令行(先定位到/u01/polardb_pg/bin 在用户postgres下执行)
./psql
postgres=# select version();
version
PostgreSQL 11.9 (POLARDB 11.9)审批
或者
./psql --version
psql (PostgreSQL) 11.9
6、更改数据库postgres密码:
ALTER USER postgres WITH PASSWORD 'PolarDb-pg11.9’;
3、postgis安装
postgis安装遇到很多问题,大部分是缺少库导致;我用的库参考:Linux 上 postgresql 14 安装 postgis (包含所有依赖包)_libboost-serialization-mt.so rpm-CSDN博客
和这个差不多,当时同事给的是有67个rpm包,但是装完少几个库,我又自己加了3个;少的库我阿里云镜像站中下载到了:centos-7-os-x86_64-Packages安装包下载_开源镜像站-阿里云 (aliyun.com)
1、把70个rpm包拷贝到麒麟系统中,cd到其目录中
rpm -ivh *.rpm --nodeps --force
2、添加2个软链接
ln -s /usr/pgsql-11/share/extension/postgis* /u01/polardb_pg/share/extension/
ln -s /usr/pgsql-11/lib/postgis* /u01/polardb_pg/lib/
3、当时遇到了很多问题,总体解决方案是少库的找到对应的库放到/usr/lib64目录中,最后遇到一个问题如下图:
方法我进行了如下操作(不知道哪个步骤有用):
Yum重新装下curl、openssl、openssh然后重启polardb:
./pg_ctl -D /home/postgres/db1 -l /home/postgres/pg.log restart
再执行:create extension postgis;
4、执行sql文件,导入表
我把windows中的pg表导出sql,navicat中右键数据库的public-->转储SQL文件 -->数据和结构
然后在麒麟系统中,定位到/u01/polardb_pg/bin 切换postgres用户:
su postgres
./psql -U postgres -h 127.0.0.1 -d zs_building_new -f /path/to/yourfile.sql
4、数据库相关的操作
一些命令;
\c 库名 从一个数据库中转到另一个数据库中
\d 查看数据库列表:
\dt 查看表
di 查看索引
\d 表名 查看某个表的状况:
\l 查看系统中现存的数据库
注意在执行sql的时候结尾要加分号;
select * from public.building;