sri*_*har 20 postgresql installation
我正在尝试创建 postgresql 数据库。
当我安装 PostgreSQL 时,我给出了这个命令:
sudo yum install postgresql postgresql-server
Run Code Online (Sandbox Code Playgroud)
后来我修改了配置文件:
sudo vim /var/lib/pgsql/data/pg_hba.conf
Run Code Online (Sandbox Code Playgroud)
并修改为
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
host all all 0.0.0.0/0 md5
Run Code Online (Sandbox Code Playgroud)
当我尝试启动 postgresql 服务时:
sudo service postgresql initdb
> Data directory is not empty! [FAILED]
sudo chkconfig postgresql on
sudo service postgresql start
Starting postgresql service: [ OK ]
Run Code Online (Sandbox Code Playgroud)
是什么导致了这些错误,我该如何修复它们?
Jen*_*y D 19
Initdb 应该只运行一次。它将创建您将保存配置文件和(通常)实际数据库的目录。你显然已经这样做了;否则不会有任何 pg_hba.conf 供您编辑。
因此,postgresql initdb
除非您要完全重新安装,否则不要再次运行。
小智 18
从这里:
如果您完全擦除并重新安装 Postgres 数据库,则在运行时initdb
:
service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"
您可能会遇到此服务错误:
数据目录不为空![失败的]
修复它(这是核心选项——所有数据库数据都被擦除!)
在 Amazon Linux (2014-x) 上:
rm -rf /var/lib/pgsql9/data
在 CentOS (6.x) 上
rm -rf /var/lib/pgsql/9.2/data
现在initdb
再次尝试该命令,这次它应该可以工作:
service postgresql-9.2 initdb
在基于 systemd 的系统(例如 RHEL/CentOS 7 和 Fedora)上,运行 initdb 的过程有些不同。这不再由初始化脚本(不再存在)完成,并且新过程更接近上游指令。
您必须先到su
用户postgres
,然后运行initdb
或pg_ctl initdb
。如果您使用 Red Hat 版本,则无需提供数据目录,因为它默认会自动选择默认数据目录/var/lib/pgsql
。
例如:
# su - postgres
$ pg_ctl initdb
$ exit
#
Run Code Online (Sandbox Code Playgroud)
当然,您只需在首次安装时执行一次此操作即可设置初始数据目录。除非您要创建全新的安装或从灾难中恢复,否则您不会再这样做。
归档时间: |
|
查看次数: |
107610 次 |
最近记录: |