当前位置: 首页 > article >正文

postgresql14源码编译安装

1.系统环境

  • 系统

    系统版本:centos7.9

    gcc版本:系统自带(4.8.5)

  • make

    3.80版本以上

    make --version
    GNU Make 3.82
    
  • 安装依赖包

    yum install readline readline-devel
    yum install zlib zlib-devel
    

    zlib:默认情况下一般要使用数据库中的压缩功能,需要第三方的zlib压缩开发包支持。

    readline:如果想要方便地在psql中使用上下方向键把历史命令找出来,需要安装readline开发包。

    如果还需要支持其它功能需要安装其它依赖包:

    yum install perl perl-ExtUtils-Embed
    yum install openssl openssl-devel
    yum install libxml2 libxml2-devel
    yum install uuid uuid-devel
    yum install tcl tcl-devel
    yum install python-devel
    

2.安装部署

  • 创建用户

    groupadd postgres
    useradd -g postgres postgres
    passwd postgres
    
  • 创建目录

    df -Th
    mkdir -p /u01/pginstall/pg14.13
    cd /u01/pginstall/pg14.13
    mkdir data
    chown -R postgres:postgres data
    
  • 安装

    可以使用root编译安装,然后使用postgres账户进行数据库的创建

    #以root账号编译安装
    tar zxvf postgresql-14.13.tar.gz
    cd postgresql-14.13
    ./configure --help
    ./configure --prefix=/u01/pginstall/pg14.13 #基础功能
    ./configure --prefix=/u01/pginstall/pg14.13 --with-perl --with-python --with-openssl --with-libxml --with-tcl --with-ossp-uuid
    
    make -j world  #包含contrib目录下的插件
    make install-world
    或者
    make -j
    make install
    cd contrib
    make
    make install
    

    --prefix=/u01/pginstall/pg14.13:这个选项指定了软件的安装目录。

    --with-perl:这个选项启用了Perl语言的支持。PostgreSQL可以使用Perl编写扩展或触发器等,因此如果需要在数据库中使用Perl,就应该启用这个选项。

    --with-python:这个选项启用了Python语言的支持。与Perl类似,启用这个选项后,PostgreSQL将能够使用Python编写扩展或触发器等。

    --with-openssl:启用OpenSSL的支持。OpenSSL是一个强大的开源工具包,用于实现SSL和TLS协议,以及提供加密功能。在PostgreSQL中启用OpenSSL支持可以增强数据库的安全性。

    --with-libxml :用于启用对 XML 数据类型的支持。

    --with-tcl:启用 Tcl(Tool Command Language)语言的支持。这允许 PostgreSQL 使用 Tcl 编写的扩展、触发器或其他功能。

    --with-ossp-uuid:启用 OSSP UUID 库的支持。UUID(Universally Unique Identifier)是一种用于唯一标识信息的标准。启用此选项后,PostgreSQL 可以生成和使用 UUID。

  • 初始化数据库

    /u01/pginstall/pg14.13/bin/initdb -D /u01/pginstall/pg14.13/data
    
    The files belonging to this database system will be owned by user "postgres".
    This user must also own the server process.
    
    The database cluster will be initialized with locale "en_US.UTF-8".
    The default database encoding has accordingly been set to "UTF8".
    The default text search configuration will be set to "english".
    
    Data page checksums are disabled.
    
    fixing permissions on existing directory /u01/pginstall/pg14.13/data ... ok
    creating subdirectories ... ok
    selecting dynamic shared memory implementation ... posix
    selecting default max_connections ... 100
    selecting default shared_buffers ... 128MB
    selecting default time zone ... Asia/Shanghai
    creating configuration files ... ok
    running bootstrap script ... ok
    performing post-bootstrap initialization ... ok
    syncing data to disk ... ok
    
    initdb: warning: enabling "trust" authentication for local connections
    You can change this by editing pg_hba.conf or using the option -A, or
    --auth-local and --auth-host, the next time you run initdb.
    
    Success. You can now start the database server using:
    
        /u01/pginstall/pg14.13/bin/pg_ctl -D /u01/pginstall/pg14.13/data -l logfile start
    
    [postgres@db01 data]$ ll
    total 56
    drwx------ 5 postgres postgres    41 Nov  1 11:47 base
    drwx------ 2 postgres postgres  4096 Nov  1 11:47 global
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_commit_ts
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_dynshmem
    -rw------- 1 postgres postgres  4789 Nov  1 11:47 pg_hba.conf
    -rw------- 1 postgres postgres  1636 Nov  1 11:47 pg_ident.conf
    drwx------ 4 postgres postgres    68 Nov  1 11:47 pg_logical
    drwx------ 4 postgres postgres    36 Nov  1 11:47 pg_multixact
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_notify
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_replslot
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_serial
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_snapshots
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_stat
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_stat_tmp
    drwx------ 2 postgres postgres    18 Nov  1 11:47 pg_subtrans
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_tblspc
    drwx------ 2 postgres postgres     6 Nov  1 11:47 pg_twophase
    -rw------- 1 postgres postgres     3 Nov  1 11:47 PG_VERSION
    drwx------ 3 postgres postgres    60 Nov  1 11:47 pg_wal
    drwx------ 2 postgres postgres    18 Nov  1 11:47 pg_xact
    -rw------- 1 postgres postgres    88 Nov  1 11:47 postgresql.auto.conf
    -rw------- 1 postgres postgres 28765 Nov  1 11:47 postgresql.conf
    
  • 设置环境变量

    vi .bashrc
    export PGDATA=/u01/pginstall/pg14.13/data
    export PATH=/u01/pginstall/pg14.13/bin:$PATH
    
    psql
    \q
    
  • pg_hba.conf

    host    all             all             0.0.0.0/0               md5
    
  • postgres.conf

    listen_addresses = '*'
    
  • 重启

    pg_ctl restart -m fast
    
  • 关闭

    pg_ctl stop -m fast
    -m fast:表示以fast模式快速干净的关闭数据库,关闭过程中回回滚未提交的事务,下次启动无需进行实例恢复。
    MODE can be "smart", "fast", or "immediate"
    smart       quit after all clients have disconnected
    fast        quit directly, with proper shutdown (default)
    immediate   quit without complete shutdown; will lead to recovery on restart
    
  • 启动

    如果设置了PGDATA环境变量:
    pg_ctl start -l logfile
    
  • 查看状态

    pg_ctl status
    pg_ctl: server is running (PID: 2647)
    /data/postgres/13.3/bin/postgres
    
    pstree -p 2647
    postgres(2647)─┬─postgres(2649)
                   ├─postgres(2650)
                   ├─postgres(2651)
                   ├─postgres(2652)
                   ├─postgres(2653)
                   └─postgres(2654)
    

3.psql使用

  • psql连接数据库

    psql -h localhost -p 5432 -d postgres -U postgres
    
    \c 列出当前用户
    \d 列出对象
    create table t1(name text);
    \d t1 列出表结构
    \h create table  查看帮助
    select version();
    \l 列出数据库
    \l+ 包含表空间、大小
    
    select pg_postmaster_start_time();数据库启动时间
    
    \du 查看用户
    \dt+ t1 查看t1表大小
    
    \di 查看索引
    create index idx_name on t1(name);
    \di+ idx_name 查看索引大小
    
    创建用户:
    \h create user
    \h create role
    create user fx superuser password '123456';
    
    创建数据库:
    create database testdb owner fx;
    \c testdb fx 使用fx用户连接testdb
    
    查看表空间:
    \db
    
    查看视图:
    \dv
    

http://www.kler.cn/a/376588.html

相关文章:

  • 车载软件架构 --- 智能汽车软件
  • YoloV8改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程
  • 11月01日,每日信息差
  • redis做缓存,mysql的数据怎么与redis进行同步(双写一致性)
  • java项目中如何有效提高List集合的读写速度?
  • laravel、Hyperf、ThinkPHP、EasySwoole框架简单比较
  • 使用AMD GPU和ONNX Runtime高效生成图像与Stable Diffusion模型
  • 【前端】在 Next.js 开发服务器中应该如何配置 HTTPS?
  • 【前端】项目中遇到的问题汇总(长期更新)
  • 【Java】方法的使用 —— 语法要求、方法的重载和签名、方法递归
  • 无源元器件-磁珠选型参数总结
  • 基于vue框架的的考研网上辅导系统ao9z7(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。
  • 复习回顾计划-vue篇
  • Word首行空格不显示空格符号问题
  • 2024 Rust现代实用教程Generic泛型
  • 解决pytorch问题:received an invalid combination of arguments - got
  • MFC图形函数学习03——画直线段函数
  • 【系统架构】如何演变系统架构:从单体到微服务
  • 前端好用的网站分享——CSS(持续更新中)
  • Three.js 开源项目及入门教程分享
  • 【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0
  • Python中os.mkdir() 和 os.makedirs()有什么不同
  • 3DDFA-V3——基于人脸分割几何信息指导下的三维人脸重建
  • WebSocket详解:从前端到后端的全栈理解
  • 【android12】【AHandler】【4.AHandler原理篇ALooper类方法全解】
  • 基于openEuler22.03的rpcapd抓包机安装