文章目录
在 Ubuntu 上安装 PostgreSQL
创建数据库实例
在 PostgreSQL 中,用户账户成为 角色 。默认情况下,PostgreSQL 使用 身份 认证。
意味着 PostgreSQL 将其角色与 Linux 的系统账户相关联。如果 PostgreSQL 中存在一个角色,则具有相同名称的相同 Linux 用户账户可作为该角色登录。
当您安装PostgreSQL 时,安装过程将创建一个 postgres 与默认 postgres 角色相关联的的用户账户。
创建操作系统用户
创建一个独立操作系统用户,为了防止因为应用软件的BUG被攻击者利用,对系统造成破坏。
建议在 安装之前预先手动创建 postgreSQL 用户
group add -g 1000 postgres
useradd -g 1000 -u postgres
id postgres
注意事项:
-
不能是 root 或具有操作系统管理的账号,例如拥有 sudo 权限的用户
-
如果是部署集群,可配置 NTP 服务,统一集群中每个节点的操作系统的 uid 和 gid。
**如果集群某些节点用户的 uid 和 gid 与其他节点不一致,可通过 groupmod 命令和 usermod 命令进行修改
groupmod -g 1000 postgres usermod -u 1000 -g 1000 postgres
访问 PostgreSQL的Ubuntu 下载页面,找到脚本
执行以下命令创建文件存储库配置:
sudo sh -c'echo“ deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main”> /etc/apt/sources.list.d/pgdg.list'
导入存储库签名密钥:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
更新软件包列表:
sudo apt-get update
安装最新版本的 PostgreSQL:
sudo apt-get install postgresql
#如果要使用特定版本,请使用'postgresql-12'或类似的名称代替'postgresql':
sudo apt-get install postgresql-12
创建数据目录
在磁盘上初始化一个数据的存储区域。用来存放数据文件和数据库实例的配置文件。
mkdir -p /pgdata/versions/(data,backups,scipts, archive_wals)
将数据目录的属主修改为创建的操作系统用户,并将数据目录权限为 0700。
chown -R postgres.postgres /pgdata/versions
chmod 0700 /pgdata/versions/data
初始化数据目录
使用 initdb 工具。将创建一个新的数据库目录(包括存放数据库数据的目录)
创建 template 和 postgres 数据库,初始化数据库实例的默认区域和字符集编码。
find / -name initdb
intdb -D /pgdata/versions/data -W
# -W 在初始化过程中,要求为数据库超级用户创建密码
启动和停止数据库服务器
-
service
# 启动 service postgresql start # 停止 service postgresql stop # 查看 service postgresql status
-
pg_ctl
pg_ctl:PostgreSQL中初始化数据库目录,启动、停止、重启、重加载数据库服务,或查看数据库服务状态的工具。
# 切换角色 su - postgres # 启动 pg_ctl -D /pgdata/versions/data start # 查看 pg_ctl -D /pgdata/versions/data status # 停止 # -s 参数开启和关闭屏幕消息输出 # -t SECS 参数设置超时时间,超过SECS值设置的超时时间会在自动退出 # -m 参数控制数据库用什么模式停止 ## 停止模式 ## -ms smart:等待活动的事务提交结束,并等待客户端主动断开连接之后关闭数据库 ## -mf fast:回滚所有活动的事务,并强制断开客户端的连接之后关闭数据库 ## -mi immediat:立即终止所有服务器进程,当下次数据库启动时先进入恢复状态(不建议) pg_ctl -D /pgdata/versions/data -ms stop
开启远程连接
修改postgresql.conf
sudo vi /pgdata/versions/data/postgresql.conf
# 将 listen_addresses 修改 = '*'
修改pg_hba.conf
sudo vi /pgdata/versions/data/pg_hba.conf
# 添加 host all all 0.0.0.0/0 md5
重启PostgreSQL服务
# 1、systemctl重启服务
sudo systemctl restart postgresql-version
# 2、或者重启系统
sudo reboot
开放端口
-
Ubuntu
sudo ufw allow 5432/tcp
-
CentOS7
# 添加指定端口 firewall-cmd --add-port=5432/tcp --permanent # 重载端口 firewall-cmd --reload # 查询端口是否成功 firewall-cmd --query-port=5432/tcp