yum install postgresql
yum install postgresql-server
方法1:`
/usr/bin/postgresql-12-setup initdb`
方法2: `/usr/pgsql-12/bin/initdb --locale=en_US.UTF-8 -E UTF8 -D /var/lib/pgsql/12/data/`
如果你在一个支持 `
/usr/bin/postgresql-12-setup initdb` 脚本的环境中,且对初始化过程的默认设置感到满意,使用这个脚本会更简单、更方便。
如果你需要更细致地控制初始化过程的各个方面,或者你使用的环境没有提供特定的初始化脚本,那么直接使用 `initdb` 命令会是更好的选择。
两者的最终结果是相同的——创建一个新的 PostgreSQL 数据库集群。
默认的数据编码和地区设置可能在 PostgreSQL 的配置文件 `postgresql.conf` 中有所体现。你可以查找该文件中的相关设置,如 `lc_collate`(用于字符串排序的地区设置)、`lc_ctype`(用于字符分类和大小写转换的地区设置)等。
连接到 PostgreSQL 数据库后,你可以执行以下 SQL 命令来查看当前数据库的编码和地区设置:
```sql
SHOW SERVER_ENCODING;
SHOW LC_COLLATE;
SHOW LC_CTYPE;
```
这些命令会显示数据库服务器当前使用的字符编码以及地区相关的配置。
initdb: error: directory "/var/lib/pgsql/12/data" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/var/lib/pgsql/12/data" or run initdb
with an argument other than "/var/lib/pgsql/12/data".
这个错误消息表明你尝试在一个已经存在并且不为空的目录 `/var/lib/pgsql/12/data` 中初始化一个新的 PostgreSQL 数据库集群。PostgreSQL 的 `initdb` 命令要求指定的数据目录必须是空的,以防止不小心覆盖已有的数据或者造成数据混乱。
要解决这个问题,你有几个选项:
使用下面的命令来清空目录(请谨慎使用,确保不会删除重要数据):
```bash
sudo rm -rf /var/lib/pgsql/12/data/*
```
之后,你可以重新运行 `initdb` 命令。
你可以选择以下任一操作:
- **备份数据**:确保对目录中的所有文件进行备份,然后清空目录,再次运行 `initdb`。
- **使用不同的数据目录**:选择或创建另一个目录来初始化新的数据库集群。运行 `initdb` 时指定新的目录路径:
```bash
/usr/pgsql-12/bin/initdb --locale=en_US.UTF-8 -E UTF8 -D /path/to/new/data/directory
```
确保替换 `
/path/to/new/data/directory` 为你的新目录路径。
如果你尝试初始化的目的是恢复或迁移数据,确保没有 PostgreSQL 的实例已经在使用 `/var/lib/pgsql/12/data` 目录。如果有,你可能需要停止该服务或配置服务使用不同的数据目录,以避免冲突。
在进行任何更改之前,请确保你了解这些操作的后果,并且已经采取了适当的数据备份措施。