在使用PostgreSQL和Homebrew时出现错误?

这是故障解决的记录。

错误内容 (Mistake content)

当你第一次安装并连接到PostgreSQL数据库时,

% brew services start postgresql
  ==> Successfully started `postgresql`(label:homebrew.mxcl.postgresql)
% brew services list           
  Name       Status       User File
  postgresql error  19968 <usename> ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
% psql postgresql
  psql: error: connection to server on socket "/tmp/.s.PGSQL.5432" failed: No such file or directory
  Is the server running locally and accepting connections on that socket?

发生了这种情况。

尽管PostgreSQL上显示着”成功启动”,但实际的状态是错误的,当尝试使用psql命令连接时会出现连接错误。

不使用Homebrew命令,只需要一个选项:

% postgres -D /usr/local/var/postgres/

当我启动PostgreSQL时,我可以从另一个应用程序的终端使用psql命令进行连接。所以我认为这是由于Homebrew命令引起的问题。

解决办法

    /usr/local/var/log/postgres.log への [username] のアクセス権限を「読み出しのみ」から「読み/書き」に変更する

更改访问权限后立即运行brew services list。

% brew services list
  Name       Status  User File
  postgresql started <username> ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

这样,Status已经改变为”started”,同时也可以使用psql命令进行连接了。

可能的原因

事实上,在这篇文章所提到的问题出现之前,还发生了下面这种不同类型的错误。

% brew services start postgresql
  Error: Permission denied @ rb_sysopen - /Users/<username>/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

由于以下操作,我解决了这个问题。

% sudo chown <username> /Users/<username>/Library/LaunchAgents/

我后续将以[用户名]的身份继续执行brew services start postgresql,而不再加上sudo。

随后,本文开始进入了这种状态。

另外,用于执行 “brew services start postgresql” 的文件如下↓:

~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 的汉语翻译不可用。

看起来你正在访问这个文件。

/usr/local/var/log/postgres.log 可以被概括为:位于 /usr/local/var 目录下的 postgres.log 日志文件。

综合考虑,原因可能是尝试以没有对日志文件具备写入权限的用户身份启动PostgreSQL所导致的。

我认为这个推测是正确的,因为如果将[用户名]对日志文件的访问权限恢复为“只读”,就会出现错误。

警示

当更改了某个文件的所有权或访问权限来解决问题时,有时还需要同时更改连接到该文件的其他文件的访问权限。

我在解决错误时参考了以下网站。

我在尝试使用Homebrew启动PostgreSQL时遇到了权限被拒绝的错误。

广告
将在 10 秒后关闭
bannerAds