ruby web 实战(10)-postgresql(1)

发布时间 2023-07-28 11:53:50作者: 水宝石

user和install

  1. 用户
  • 建议运行PostgreSQL在单独的用户帐户下。此用户帐户应仅拥有由服务器,不应与其他守护进程共享.

  • 特别是,建议该用户帐户不拥有PostgreSQL可执行文件,以确保受损的服务器进程无法修改这些可执行文件。

  • PostgreSQL的预打包版本通常会在软件包安装。

  • 要将Unix用户帐户添加到系统中,请查找命令useradd或adduser。通常默认是用户postgres这个名字,尤其是通过包安装的方式

  1. 安装
  • 从源码安装
./configure
make
su
make install
adduser postgres
mkdir -p /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile
start
/usr/local/pgsql/bin/createdb test
/usr/local/pgsql/bin/psql test
  • 安装诸如RPM或Debian包之类的预打包发行版
sudo dnf install postgresql-server
  1. 初始化

要手动初始化数据库集群,请运行initdb并指定所需的文件系统位置

带有-D选项的数据库集群,

root# mkdir /usr/local/pgsql
root# chown postgres /usr/local/pgsql
root# su postgres
postgres$ initdb -D /usr/local/pgsql/data

如果数据目录存在并且已经包含文件,initdb将拒绝运行;这是为了防止

意外覆盖现有安装。

由于数据目录包含数据库中存储的所有数据,因此必须确保其安全

防止未经授权的访问。initdb因此取消了除Post之外的所有人的访问权限-

greSQL用户,以及可选的组。组访问在启用时是只读的。这允许取消定价-

与群集所有者在同一组中的特权用户备份群集数据或执行其他操作

只需要读取访问的操作。

如果使用pg_ctl初始化服务器,这可能会更直观

pg_ctl -D /usr/local/pgsql/data initdb