【发布时间】:2015-06-16 21:46:14
【问题描述】:
我已经为此工作了大约一天,但我无法弄清楚,我真的不知道还能去哪里找。我有一个目录,/psql/data/,我正在尝试运行postgres -D /pgsql/data 来启动数据库服务器。但是,我得到了
postgres cannot access the server configuration file "/psql/data/postgresql.conf": Permission denied
这里有一些背景。在我工作的地方,我们有一个使用 Flask 框架的应用程序,该框架使用 Postgres 数据库。我们在亚马逊服务器上运行这个应用程序。此应用程序有效!我知道,因为我以前用过它。但是,写它的人离开了公司,现在我负责。我的另一位同事无意中停止了服务器,所以在重新启动时我不得不重新设置它。
这是我尝试过的:
postgres -D /psql/data 我读到过 here
从那个链接它还说你必须登录到 postgresql 用户帐户。 (我大约一个月前才开始使用 ubuntu,对它不是很熟悉,所以如果我发表愚蠢的言论,请原谅我)。所以我环顾四周,发现我可以使用sudo su postgres 登录到 postgres 帐户。哪个有效!我可以看到以前没有权限查看的文件。因此,当我再次尝试运行 postgres -D /psql/data 时,我得到:
The program 'postgres' is currently not installed. To run 'postgres' please ask your administrator to install the package 'postgres-xc'
首先我尝试安装 postgres-xc,但它缺少依赖项,然后当我去搜索时,我读到如果我收到此消息,这可能是一个更大的错误,我应该不必安装 postgres-xc。所以我停止了尝试。
最终,我正在尝试再次运行该应用程序。但在它可以运行之前,它需要运行数据库,因为当我尝试使用python [myapp].py 启动烧瓶应用程序时没有运行数据库,我得到:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
我发现那是因为数据库没有运行。而且我无法启动数据库服务器。我已经尽力提供尽可能多的相关信息,任何关于我下一步应该看哪里的建议将不胜感激。如果需要,我还可以提供更多信息。
更新: 错误发生在这里
engine = sqlalchemy.create_engine(conf['db'])
insp = reflection.Inspector.from_engine(engine)
引擎是根据配置文件中的值创建的,即,
db: postgresql://work:app@localhost:5432/work
但是一旦第二行尝试执行它就会出错。
更新:
胜利!感谢所有帮助过我的人,您的所有回答都为我指明了正确的方向(但不幸的是,只有一个人可以获得赏金)。
首先,每当我尝试sudo -u postgres pg_ctl -D /psql/data 时,它都会出错并告诉我没有这样的命令。所以我必须找到 pg_ctl 命令的确切位置。它位于 /usr/lib/postgres/9.3/bin/pg_ctl 中。于是我打电话给sudo -u postgres /usr/lib/postgresql/9.3/bin/pg_ctl start -D /psql/data。这给了我一个错误,我的配置文件有错误。这很奇怪,因为我从来没有碰过它,但我评论了那个错误,然后我得到了真正的错误。
数据库是使用 postgres 9.4 创建的,但我使用的是 postgres 9.3。
所以我不得不安装 9.4。可以在here找到说明。一旦我这样做了,我必须用sudo service postgresql stop 停止以前启动的postgres 服务器。
最后,我能够从带有sudo -u postgres /usr/lib/postgresql/9.4/bin/pg_ctl start -D /psql/data 的文件中的数据库启动服务器。
现在我可以使用sudo -su postgres 然后psql 访问数据库。
谢谢大家!
【问题讨论】:
-
检查
in /etc/init.d是否有名为postgres、pgsql或类似名称的文件。 -
启动后应该说“PostgreSQL 9.3 启动成功”或“无法启动...”它说了什么?
-
所以,服务器正在运行。下一步是检查身份验证参数。它们位于 postgres 数据目录中的
pg_hba.conf中。 -
这里恐怕帮不了你。你必须在文档中阅读它。
标签: python database postgresql flask