• ubuntu22.04.3 安装postgresql 16 rc1数据库


    ubuntu22.04.3 安装postgresql 16 rc1数据库

    一、直接安装

    # Create the file repository configuration:
    
    sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    
    # Import the repository signing key:
    
    wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    
    # Update the package lists:
    
    sudo apt-get update
    
    # Install the latest version of PostgreSQL.
    
    # If you want a specific version, use 'postgresql-12' or similar instead of 'postgresql':
    
    sudo apt-get -y install postgresql
    

    二、源码安装

    1、下载源码

    https://ftp.postgresql.org/pub/source/v16rc1/postgresql-16rc1.tar.gz

    2、解压源文件

    tar xf postgresql-16rc1.tar.gz .
    

    3、准备环境,系统必须安装好了gcc make readline zlib 等,建好文件目录

    #创建目录
    mkdir -p /usr/local/pgsql16rc1
    mkdir -p /usr/local/pgsql16rc1/data
    #目录授权
    sudo chown pgsql:pgsql /usr/local/pgsql16rc1
    sudo chown pgsql:pgsql /usr/local/pgsql16rc1/data
    #安装依赖库和工具
    sudo apt install gcc
    sudo apt-get install libreadline-dev
    sudo apt-get install zlib1g-dev
    sudo apt install make
    #配置
    ./configure --prefix=/usr/local/pgsql16rc1/ --without-icu
    #编译安装
    make
    make install
    

    4、初始化数据库

    /usr/local/pgsql16rc1/bin/initdb -D /usr/local/pgsql16rc1/data/
    

    5、启动数据库

    /usr/local/pgsql16rc1/bin/pg_ctl -D /usr/local/pgsql16rc1/data/ -l logfile start
    

    6、测试数据库

    #创建test库
    /usr/local/pgsql16rc1/bin/createdb test
    #进入数据库控制台
    /usr/local/pgsql16rc1/bin/psql test
    test=# \d
    test=# \d pg_stat_io
    test=# \d pg_stat_all_tables
    #创建postgres角色
    test=# CREATE ROLE postgres WITH LOGIN PASSWORD 'postgres';
    CREATE ROLE
    test=# \q
    

    7、配置数据库开放连接

    #查看数据库监听端口
    sudo netstat -tuln
    #查看防火墙状态
    sudo ufw status
    #编辑postgresql.conf
    vim /usr/local/pgsql16rc1/data/postgresql.conf
    #修改配置
    # - Connection Settings -
    
    listen_addresses = '*'          # what IP address(es) to listen on;
                                            # comma-separated list of addresses;
                                            # defaults to 'localhost'; use '*' for all
                                            # (change requires restart)
    port = 5432                             # (change requires restart)
    max_connections = 100                   # (change requires restart)
    #reserved_connections = 0               # (change requires restart)
    
    #编辑pg_hba.conf
    # IPv4 local connections:
    host    all             all             0.0.0.0/32            trust
    
    #重启数据库
    /usr/local/pgsql16rc1/bin/pg_ctl restart -D /usr/local/pgsql16rc1/data -l logfile
    
    

    8、配置数据库连接账号

    /usr/local/pgsql16rc1/bin/psql -U postgres
    postgres=> \password postgres
    Enter new password for user "postgres":
    Enter it again:
    postgres=> exit
    #添加超级用户
    sudo -u postgres /usr/local/pgsql16rc1/bin/createuser --superuser 
    #登录数据库
    /usr/local/pgsql16rc1/bin/psql -U your_username -d database
    #修改用户密码
     ALTER USER your_username WITH PASSWORD 'your_password';
    #退出重启发现在还是不需要密码
    #此时需要修改一下pg_hba.conf的认证方式,trust修改为md5  ,如果忘记密码可以反过来操作即可
    # IPv4 local connections:
    host    all             all             0.0.0.0/32            md5
    #修改之后重启数据库,就需要密码登录连接数据库了
    
    

    9、设置数据库开机启动

    #/usr/lib/systemd/system/postgresql-16.service
    #创建此文件
    [Unit]
    
    Description=PostgreSQL database server
    
    After=network.target
    
    [Service]
    
    Type=forking
    
    User=pgsql
    
    Group=pgsql
    
    Environment=PGPORT=5432
    
    Environment=PGDATA=/usr/local/pgsql16rc1/data/
    
    OOMScoreAdjust=-1000
    
    ExecStart=/usr/local/pgsql16rc1/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
    
    ExecStop=/usr/local/pgsql16rc1/bin/pg_ctl stop -D ${PGDATA} -s -m fast
    
    ExecReload=/usr/local/pgsql16rc1/bin/pg_ctl reload -D ${PGDATA} -s
    
    TimeoutSec=300
    
    [Install]
    
    WantedBy=multi-user.target
    
    #重新加载
    systemctl daemon-reload
    #启动数据库
    systemctl start postgresql-16.service
    #设置开机启动
    systemctl enable postgresql-16.service
    

    10、常用操作命令

    使用 pg_ctl 命令
    
    pg_ctl 命令为 PostgreSQL 服务端应用程序,可以用来初始化,启动和停止及控制 PostgreSQL 服务器。
    
    pg_ctl 语法格式:
    
    初始化数据库
    pg_ctl init[db]   [-D DATADIR] [-s] [-o OPTIONS]
    
    启动数据库
    pg_ctl start      [-D DATADIR] [-l FILENAME] [-W] [-t SECS] [-s] [-o OPTIONS] [-p PATH] [-c]
    
    关闭数据库
    pg_ctl stop [-D DATADIR] [-M SHUTDOWN-MODE] [-W]
    
    重启数据库
    pg_ctl restart [-D DATADIR] [-m SHUTDOWN-MODE] [-W] [-t SECS] [-s] [-o OPTIONS] [-c]
    
    重新加载 postgresql.conf 或 pg_hba.conf 文件
    pg_ctl reload     [-D DATADIR] [-s]
    
    查看服务器是否在指定的数据目录运行
    pg_ctl status     [-D DATADIR]
    
    pg_ctl提升 [-D DATADIR] [-W] [-t SECS] [-s]
    
    pg_ctl logrotate  [-D DATADIR] [-s]
    
    pg_ctl杀死信号名PID
    
    命令选项
    
    -D, --pgdata=DATADIR:指定数据库相关文件的数据目录,如果省略,默认读取 PGDATA 环境变量
    
    -s, --silent:静默输出,仅仅输出错误消息
    
    -t, --timeout=SECS:指定等待操作完成的最大延时秒数。默认为 PGCTLTIMEOUT 环境变量的值,如果省略,默认60秒
    
    -V, --版本输出版本信息,然后退出
    
    -w, --wait:等待操作完成,如果操作在延迟时间内未完成,pg_ctl 退出状态为非零
    
    -W, --no-wait:不等待操作完成,不会提示数据库停止是否完成
    
    启动 & 重启选项
    
    -c, --core-files 允许 postgres 生成核心文件
    
    -l, --log=FILENAME:将服务器日志输出追加到 filename中,也叫做服务器日志文件。如果该文件的 umask 设置为077,访问日志文件默认情况下其它用户不可读。
    
    -o, --options=OPTIONS 命令行选项,以传递给 postgres(PostgreSQL 服务器可执行文件)或 initdb
    
    -p 路径到POSTGRES通常不是必需的
    
    启动 & 停止选项
    
    -m, --mode=MODE:指定关闭数据库的模式,有三个选项,smart,fast,immediate,省略默认为fast
    
    关库选项
    
    smart:smart模式会等待活动的事务提交结束, 并等待客户端主动断开连接之后关闭数据库
    
    fast:fast模式则会回滚所有活动的事务, 并强制断开客户端的连接之后关闭数据库(默认)
    
    立即:模式立即终止所有服务器进程,当下一次数据库启动时它会首先进入恢复状态(不推荐使用)
    
  • 相关阅读:
    Linux之sched_setscheduler调度策略总结(六十)
    PEG化类石墨相氮化碳量子点g-CNQDs-PEG/PEG400修饰WSe2量子点制备研究
    【Java--数据结构】链表经典OJ题详解(上)
    macOS 15 beta (24A5264n) Boot ISO 原版可引导镜像下载
    PIL+pyplot+transforms.ToTensor+unsqueeze+div
    给女朋友的微信专属推送
    AIGC如何搞副业专栏更新了!
    TensorRT学习笔记(一)——使用Python API调用TensorRT
    【万字长文】使用 LSM Tree 思想实现一个 KV 数据库
    基于遗传算法求解多旅行商问题同一起点和终点付matlab代码
  • 原文地址:https://www.cnblogs.com/lukezhangsz/p/17703448.html