搜索仓库中的PostgreSQL,看看是什么版本。这一步不是必要的,可以跳过

[sean@archlinux ~]$ sudo pacman -Si postgresql
软件库         : extra
名字           : postgresql
版本           : 16.3-4
描述           : Sophisticated object-relational DBMS
架构           : x86_64
URL            : https://www.postgresql.org/
软件许可       : PostgreSQL
组             : 无
提供           : 无
依赖于         : bash  gcc-libs  glibc  icu  krb5  libldap  libxml2  libxslt  llvm-libs  lz4  openssl  pam
                 readline  systemd-libs  util-linux-libs  zlib  zstd  postgresql-libs>=16.3
可选依赖       : logrotate: rotates system logs automatically
                 perl: for PL/Perl support
                 postgresql-old-upgrade: upgrade from previous major version using pg_upgrade
                 python: for PL/Python 3 support
                 tcl: for PL/Tcl support
与它冲突       : 无
取代           : 无
下载大小       : 18.55 MiB
安装后大小     : 62.03 MiB
打包者         : Antonio Rojas <arojas@archlinux.org>
编译日期       : 2024年09月01日 星期日 18时53分11秒
验证者         : SHA-256 校验值  数字签名

安装部署PostgreSQL

开始正式安装

[sean@archlinux ~]$ sudo pacman -S postgresql
警告:postgresql-16.3-4 已经为最新 -- 重新安装
正在解析依赖关系...
正在查找软件包冲突...

软件包 (1) postgresql-16.3-4

全部安装大小:  62.03 MiB
净更新大小:     0.00 MiB

:: 进行安装吗? [Y/n] Y
(1/1) 正在检查密钥环里的密钥                                          [#######################################] 100%
(1/1) 正在检查软件包完整性                                            [#######################################] 100%
(1/1) 正在加载软件包文件                                              [#######################################] 100%
(1/1) 正在检查文件冲突                                                [#######################################] 100%
(1/1) 正在检查可用存储空间                                            [#######################################] 100%
:: 正在处理软件包的变化...
(1/1) 正在重新安装 postgresql                                         [#######################################] 100%
"/var/lib/postgres/data" is missing or empty. Use a command like
  su -l postgres -c "initdb --locale=C.UTF-8 --encoding=UTF8 -D '/var/lib/postgres/data'"
with relevant options, to initialize the database cluster.
:: 正在运行事务后钩子函数...
(1/4) Creating system user accounts...
(2/4) Reloading system manager configuration...
(3/4) Creating temporary files...
(4/4) Arming ConditionNeedsUpdate...

安装部署PostgreSQL

安装完成后,会在系统中自动建立名为 postgres 的用户。

安装部署PostgreSQL

设置密码启用改用户,可以用于一些PostgreSQL在命令行的操作,比如初始化数据库、创建数据库用户等等。

[sean@archlinux ~]$ sudo passwd postgres
新的密码:
重新输入新的密码:
passwd:已成功更新密码

安装部署PostgreSQL

密码修改完成后,su postgres 切换用户,初始化数据库。

[postgres@archlinux sean]$ initdb --locale zh_CN.UTF-8 -E UTF8 -D '/var/lib/postgres/data'
属于此数据库系统的文件宿主为用户 "postgres".
此用户也必须为服务器进程的宿主.
数据库簇将使用本地化语言 "zh_CN.UTF-8"进行初始化.
initdb: 无法为本地化语言环境"zh_CN.UTF-8"找到合适的文本搜索配置
缺省的文本搜索配置将会被设置到"simple"

禁止为数据页生成校验和.

修复已存在目录 /var/lib/postgres/data 的权限 ... 成功
正在创建子目录 ... 成功
选择动态共享内存实现 ......posix
选择默认最大联接数 (max_connections) ... 100
选择默认共享缓冲区大小 (shared_buffers) ... 128MB
选择默认时区 ... UTC
创建配置文件 ... 成功
正在运行自举脚本 ...成功
正在执行自举后初始化 ...成功
同步数据到磁盘...成功

initdb: 警告: 为本地连接启用"trust"身份验证
initdb: hint: 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.

成功。您现在可以用下面的命令开启数据库服务器:

    pg_ctl -D /var/lib/postgres/data -l 日志文件 start

安装部署PostgreSQL

启动数据库的服务并添加开机自启动

[postgres@archlinux sean]$ systemctl start postgresql
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ====
启动“postgresql.service”需要认证。
Authenticating as: sean
Password:
==== AUTHENTICATION COMPLETE ====
[postgres@archlinux sean]$ systemctl enable postgresql
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ====
Authentication is required to manage system service or unit files.
Authenticating as: sean
Password:
==== AUTHENTICATION COMPLETE ====
Created symlink '/etc/systemd/system/multi-user.target.wants/postgresql.service' → '/usr/lib/systemd/system/postgresql.service'.
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ====
Authentication is required to reload the systemd state.
Authenticating as: sean
Password:
==== AUTHENTICATION COMPLETE ====

安装部署PostgreSQL

使用 createuser --interactive 命令启用交互式命令行来创建一个数据库的用户

[postgres@archlinux sean]$ createuser --interactive
输入要增加的角色名称: sean
新的角色是否是超级用户? (y/n) y

创建一个数据库

[postgres@archlinux sean]$ createdb myDemoDB

使用 psql 工具可以进入到数据库里面。

[postgres@archlinux sean]$ psql -d myDemoDB
psql (16.3)
输入 "help" 来获取帮助信息.

myDemoDB=# \du
                       角色列表
 角色名称 |                    属性
----------+--------------------------------------------
 postgres | 超级用户, 建立角色, 建立 DB, 复制, 绕过RLS
 sean     | 超级用户, 建立角色, 建立 DB

myDemoDB=#

安装部署PostgreSQL

开启远程连接

  1. 修改 pg_hba.conf 下图表示的内容

安装部署PostgreSQL

  1. 修改 postgresql.conf 下图表示的内容

安装部署PostgreSQL

或者直接用下面的命令

sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" postgresql.conf

两个文件3项内容都修改完成后,就可以远程连接了。