刚刚安装的 PostgreSQL(配置被覆盖)无法启动:
$ sudo service postgresql start
* Starting PostgreSQL 9.1 database server
* Error: could not read /etc/postgresql/9.1/main/postgresql.conf: Permission denied
看起来它应该能够读取它:
$ ls -l postgresql.conf
-rw------- 1 postgres postgres 19450 2012-06-14 10:07 postgresql.conf
但好吧,我会添加chmod +r
它来测试它是否有效。
$ sudo chmod +r postgresql.conf
$ sudo service postgresql start
* Starting PostgreSQL 9.1 database server
* The PostgreSQL server failed to start. Please check the log output:
Error: Could not open log file /var/log/postgresql/postgresql-9.1-main.log
嗯?
$ ls -l /var/log/postgresql/
total 4
-rw-r----- 1 postgres adm 827 2012-06-14 10:07 postgresql-9.1-main.log
我不明白。这到底是哪里出了问题?以前这个方法还可以用。
我可以监视哪些进程尝试打开该文件吗?
这是 EC2 上的 Ubuntu 11.10,使用 Chef。为了完整起见,以下是配方:
# Install PostgreSQL
package "postgresql-9.1"
# Stop server
service "postgresql" do
action :stop
end
# Overwrite configuration (setting data dir)
template "/etc/postgresql/9.1/main/postgresql.conf" do
source "postgresql-conf.erb"
owner "postgres"
group "postgres"
end
# Start server
service "postgresql" do
action :start
end
答案1
自定义配置文件 ( postgresql.conf
) 指向了不存在的数据目录。当然,这是一个问题(我通过设置数据目录解决了这个问题),但这与打印的错误无关。再次,PostgreSQL 错误没有那么有帮助。
更新:
当数据目录存在时,我遇到了同样的错误,但所有权不正确。