• PostgreSQL 16数据库的yum、编译、docker三种方式安装——筑梦之路


    一、 docker方式

    1. docker pull postgres:16.0
    2. docker rm -f lhrpg16
    3. docker run --name lhrpg16 -h lhrpg16 -d -p 54329:5432 -e POSTGRES_PASSWORD=lhr -e TZ=Asia/Shanghai postgres:16.0
    4. docker exec -it lhrpg16 bash
    5. docker exec -it lhrpg16 psql -U postgres -d postgres
    6. select * from pg_tables;
    7. select version();

    二、yum方式

    1. dnf install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib zlib-devel \
    2. perl python36 tcl openssl ncurses-devel openldap pam perl-IPC-Run libicu-devel
    3. dnf install epel-release -y
    4. dnf --enablerepo=powertools install perl-IPC-Run -y
    5. # 自2023年8月起,PostgreSQL RPM repo停止向PostgreSQL RPM repo添加新包,**包括PostgreSQL 16**.我们将维护旧的主要版本,直到每个主要版本被PostgreSQL项目终止。请访问这里每个主要版本的最新发布日期。https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/
    6. wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgresql16-16.0-1PGDG.rhel8.x86_64.rpm
    7. wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgresql16-server-16.0-1PGDG.rhel8.x86_64.rpm
    8. wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgresql16-contrib-16.0-1PGDG.rhel8.x86_64.rpm
    9. wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgis34_16-devel-3.4.0-1PGDG.rhel8.x86_64.rpm
    10. wget https://download.postgresql.org/pub/repos/yum/16/redhat/rhel-8-x86_64/postgresql16-libs-16.0-1PGDG.rhel8.x86_64.rpm
    11. # 安装
    12. dnf localinstall postgresql16-*
    13. # (建议安装)安装开发包,若后期需要编译一些插件,例如pg_recovery、pg_dirtyread等都需要该包
    14. dnf localinstall postgresql16-devel-16.0-1PGDG.rhel8.x86_64.rpm
    15. rpm -aq| grep postgres
    16. echo "export PATH=/usr/pgsql-16/bin:$PATH" >> /etc/profile
    17. # 初始化
    18. /usr/pgsql-16/bin/postgresql-16-setup initdb
    19. systemctl enable postgresql-16 --now
    20. # 本地登陆
    21. su - postgres
    22. psql
    23. # 安装插件
    24. create extension pageinspect;
    25. create extension pg_stat_statements;
    26. select * from pg_extension;
    27. select * from pg_available_extensions order by name;
    28. # 修改密码
    29. alter user postgres with password 'lhr'; 或 \password
    30. select * from pg_tables;
    31. select version();
    32. # 配置允许远程登陆
    33. cat >> /var/lib/pgsql/16/data/postgresql.conf <<"EOF"
    34. listen_addresses = '*'
    35. port=5432
    36. unix_socket_directories='/var/lib/pgsql/16/data'
    37. logging_collector = on
    38. log_directory = 'pg_log'
    39. log_filename = 'postgresql-%a.log'
    40. log_truncate_on_rotation = on
    41. EOF
    42. cat << EOF > /var/lib/pgsql/16/data/pg_hba.conf
    43. # TYPE DATABASE USER ADDRESS METHOD
    44. local all all trust
    45. host all all ::1/128 trust
    46. host all all 127.0.0.1/32 trust
    47. host all all 0.0.0.0/0 md5
    48. host replication all 0.0.0.0/0 md5
    49. EOF
    50. systemctl restart postgresql-16
    51. psql -U postgres -h 192.168.100.100 -d postgres -p54327
    52. # 从Postgresql 9.2开始,还可以使用URI格式进行远程连接:psql postgresql://myuser:mypasswd@myhost:5432/mydb
    53. psql postgresql://postgres:lhr@192.168.100.100:54327/postgres
    54. mkdir -p /home/postgres
    55. chown postgres.postgres /home/
    56. sed -i 's|/var/lib/pgsql|/home/postgres|' /etc/passwd
    57. echo "lhr" |passwd --stdin postgres
    58. cat > /home/postgres/.bash_profile <<"EOF"
    59. export PGPORT=54327
    60. export PGHOME=/usr/pgsql-16
    61. export PGDATA=/var/lib/pgsql/16/data
    62. export PATH=$PGHOME/bin:$PATH
    63. export MANPATH=$PGHOME/share/man:$MANPATH
    64. export LANG=en_US.UTF-8
    65. export DATE='date +"%Y%m%d%H%M"'
    66. export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
    67. export PGHOST=$PGDATA
    68. export PGUSER=postgres
    69. export PGPASSWORD=lhr
    70. export PGDATABASE=postgres
    71. export PS1="[\u@\h \W]\$ "
    72. alias ll='ls -l'
    73. EOF
    74. chown postgres.postgres /home/postgres/.bash_profile

    三、编译方式

    1. # 下载源码
    2. wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz
    3. # 创建用户
    4. groupadd -g 60000 pgsql
    5. useradd -u 60000 -g pgsql pgsql
    6. echo "lhr" | passwd --stdin pgsql
    7. # 创建目录
    8. mkdir -p /postgresql/{pgdata,archive,scripts,backup,pg16,soft}
    9. chown -R pgsql:pgsql /postgresql
    10. chmod -R 775 /postgresql
    11. # 安装依赖包
    12. yum install -y cmake make gcc zlib gcc-c++ perl readline readline-devel zlib zlib-devel
    13. perl python36 tcl openssl ncurses-devel openldap pam perl-IPC-Run libicu-devel
    14. # 编译源码
    15. su - pgsql
    16. cd /postgresql/soft
    17. tar zxvf postgresql-16.0.tar.gz
    18. cd postgresql-16.0
    19. ./configure --prefix=/postgresql/pg16
    20. make -j 8 && make install
    21. make world -j 8 && make install-world
    22. # 配置环境变量
    23. cat >> ~/.bash_profile <<"EOF"
    24. export LANG=en_US.UTF-8
    25. export PS1="[\u@\h \W]\$ "
    26. export PGPORT=5432
    27. export PGDATA=/postgresql/pgdata
    28. export PGHOME=/postgresql/pg16
    29. export LD_LIBRARY_PATH=$PGHOME/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
    30. export PATH=$PGHOME/bin:$PATH:.
    31. export DATE=`date +"%Y%m%d%H%M"`
    32. export MANPATH=$PGHOME/share/man:$MANPATH
    33. export PGHOST=$PGDATA
    34. export PGUSER=postgres
    35. export PGDATABASE=postgres
    36. EOF
    37. source ~/.bash_profile
    38. # 初始化数据库
    39. su - pgsql
    40. /postgresql/pg16/bin/initdb -D /postgresql/pgdata -E UTF8 --locale=en_US.utf8 -U postgres --data-checksums
    41. # 调整参数
    42. cat >> /postgresql/pgdata/postgresql.conf <<"EOF"
    43. listen_addresses = '*'
    44. port=5432
    45. unix_socket_directories='/postgresql/pgdata'
    46. logging_collector = on
    47. log_directory = 'pg_log'
    48. log_filename = 'postgresql-%a.log'
    49. log_truncate_on_rotation = on
    50. EOF
    51. cat >> /postgresql/pgdata/pg_hba.conf << EOF
    52. # TYPE DATABASE USER ADDRESS METHOD
    53. local all all trust
    54. host all all 127.0.0.1/32 trust
    55. host all all 0.0.0.0/0 md5
    56. host replication all 0.0.0.0/0 md5
    57. EOF
    58. # 启动服务
    59. su - pgsql
    60. pg_ctl start
    61. pg_ctl status
    62. pg_ctl stop
    63. # 修改数据库超管密码
    64. pg_ctl start
    65. psql
    66. alter user postgres with password 'lhr';
    67. exit
    68. # 注册服务到systemd
    69. cat > /etc/systemd/system/PG16.service <<"EOF"
    70. [Unit]
    71. Description=PostgreSQL database server
    72. Documentation=man:postgres(1)
    73. After=network.target
    74. [Service]
    75. Type=forking
    76. User=pgsql
    77. Group=pgsql
    78. Environment=PGPORT=5432
    79. Environment=PGDATA=/postgresql/pgdata
    80. OOMScoreAdjust=-1000
    81. ExecStart=/postgresql/pg16/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300
    82. ExecStop=/postgresql/pg16/bin/pg_ctl stop -D ${PGDATA} -s -m fast
    83. ExecReload=/postgresql/pg16/bin/pg_ctl reload -D ${PGDATA} -s
    84. KillMode=mixed
    85. KillSignal=SIGINT
    86. TimeoutSec=0
    87. [Install]
    88. WantedBy=multi-user.target
    89. EOF
    90. systemctl daemon-reload
    91. systemctl enable PG16 --now
    92. systemctl start PG16
    93. systemctl status PG16

    随手一记:生成密码的密文sha256加密

    echo -n "Enter Password: " && head -1 tr -d '\n' | sha256sum | cut -d" " -f1

  • 相关阅读:
    unity - Blend Shape - 变形器 - 实践
    OpenvSwitch + DPDK 实现
    pytest + yaml 框架 -5.调用内置方法和自定义函数
    K8S环境搭建
    vue3 + element Plus实现表格根据关键字合并行,并实现行的增删改操作
    WPF性能优化:性能分析工具
    复盘:细数这些年写文字的成与败
    NFT Insider#109:The Sandbox推出了首个足球小将 NFT 作品集,YGG Web3 游戏峰会即将开启!
    基于pytorch使用LSTM实现文本匹配任务
    mmm高可用
  • 原文地址:https://blog.csdn.net/qq_34777982/article/details/133020373