在使用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时遇到了权限被拒绝的错误。