首页 文章

自制的postgres坏了

提问于
浏览
58

我使用自制软件在我的Mac(10.10.1 / Yosemite)上安装了Postgresql 9.4.0 . 这是行不通的 .

我在〜/ Library / LaunchAgents中创建了/usr/local/opt/postgresql/homebrew.mxcl.postgresql.plist的软链接 .

如果我尝试手动加载postgres,我会收到“正在进行操作”的消息

> launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
/usr/local/Cellar/postgresql/9.4.0/homebrew.mxcl.postgresql.plist: Operation already in progress

然而,postgres似乎没有运行 .

> ps auxw | grep post
billmcn           670   0.0  0.0  2424272    452 s000  R+   10:12PM   0:00.01 grep post

我无法连接命令行客户端 .

> psql
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

据我所知,我已经尝试了other Stackoverflow线程上讨论此问题的所有修复 . 特别:

  • 我已经卸载并重新安装了postgres和随附的Ruby gem . 我的机器上没有postgres 8.0版本 .

  • 我已经验证了psql客户端程序是Homebrew安装的9.4.0版本,而不是Mac系统二进制文件 .

  • 我已经确认/usr/local/var/postgres/postmaster.pid不存在 .

  • 我重新启动了机器 .

我之前确实有Homebrew postgres在这台机器上工作 . 我认为破坏它的是从版本8升级到版本9,但我不确定 .

我没有任何需要保留的数据库 . 我愿意用postgres开始清洁;我现在只需要让它上班 . 有任何想法吗?


该问题似乎是/ usr / local / var / postgres目录的权限 . 这是我的var目录在事情不起作用时的样子 .

ll /usr/local/var/
drwxr-xr-x  3 billmcn  admin  102 Dec 20 12:44 cache
drwxr--r--  2 root     admin   68 Dec 29 21:37 postgres

(whoami =“billmcn”)

我删除了/ usr / local / var / postgres,卸载并重新安装了postgres,现在它看起来像这样 .

ll /usr/local/var/
drwxr-xr-x   3 billmcn  admin  102 Dec 20 12:44 cache
drwx------  23 billmcn  admin  782 Dec 30 10:51 postgres

不知道它是如何进入这种状态的,因为我不记得在这个目录上的权限,但无论如何 . 它现在有效 .

5 回答

  • 0

    我在新安装的Yosemite上使用自制软件安装postgres时遇到了同样的问题 .

    首先,我的brew配置如下所示:

    HOMEBREW_VERSION: 0.9.5
    ORIGIN: https://github.com/Homebrew/homebrew
    HEAD: 9f6926265f8e4be7cc80dfe9042f2cd3c1e8dc9e
    Last commit: 64 minutes ago
    HOMEBREW_PREFIX: /usr/local
    HOMEBREW_CELLAR: /usr/local/Cellar
    CPU: quad-core 64-bit sandybridge
    OS X: 10.10.1-x86_64
    Xcode: 6.1.1
    Clang: 6.0 build 600
    X11: N/A
    System Ruby: 2.0.0-481
    Perl: /usr/bin/perl
    Python: /usr/bin/python
    Ruby: ~/.rvm/rubies/ruby-2.1.1/bin/ruby
    

    我注意到的第一件事是我没有 /usr/local/var/postgres 的书面许可 . 这很容易改变发出 sudo chown -Rwhoami/usr/local/var/postgres 然后我重新安装postgresql并做了

    cat /usr/local/var/postgres/server.log

    透露:

    postgres cannot access the server configuration file "/usr/local/var/postgres/postgresql.conf": No such file or directory

    所以我删除了目录 /usr/local/var/postgres 并发出了初始化数据库的命令 .

    initdb -D /usr/local/var/postgres/

    这似乎已经成功了,postgres运行良好 .

  • 95

    我有同样的问题 . 这里的主要问题是initdb安装步骤将创建具有root所有权的目录,而不是Mac上的用户 . 要解决这个问题:

    在运行 initdb 之前创建数据目录并设置权限0700

    rm -rf /usr/local/var/postgres  # in case this is not your first try
    mkdir /usr/local/var/postgres
    chmod 0700 /usr/local/var/postgres
    

    然后运行 initdb ,它将尊重数据目录的权限 .

    initdb -D /usr/local/var/postgres
    

    对于grins和giggles,创建一个以用户命名的测试数据库:

    createdb `whoami`
    

    登录测试:

    psql
    
  • 9

    在尝试使用Homebrew安装postgresql后,我得到了这个:

    Warning: postgresql-9.5.2 already installed, it's just not linked
    

    所以我尝试过:

    brew link postgresql
    

    并得到这个错误:

    Linking /usr/local/Cellar/postgresql/9.5.2... 
    Error: Could not symlink share/man/man3/SPI_connect.3
    /usr/local/share/man/man3 is not writable.
    

    这似乎是一个写权限问题,所以我做了:

    sudo chown -R `whoami` /usr/local/share/man/
    

    这样做是因为,然后我能够做到(没有错误):

    brew link postgresql
    
  • 13

    请注意,他们是Homebrew的github上处理此问题的一个帖子:https://github.com/Homebrew/homebrew/issues/35240


    我有类似的问题 . 詹姆斯回答帮我解决了 . 但是我接着讨论了jbk提到的问题(在删除/ usr / local / var / postgres之后,它继续被重新创建) .

    问题是,如果您已创建符号链接:

    ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
    

    并启动了这个过程:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    

    你应该先卸载它:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
    

    在运行詹姆斯的命令之前 .

    rm -rf /usr/local/var/postgres  # in case this is not your first try
    mkdir /usr/local/var/postgres
    chmod 0700 /usr/local/var/postgres
    

    此外,如果像我一样,你有管理自制软件的管理员用户和将使用pgsl进行开发的普通用户,那么James命令应该以超级用户身份运行:

    sudo -s
    

    和postgres目录的所有权应该给你的开发者用户:

    chown my-dev-user /usr/local/var/postgres
    

    以dev用户身份运行的以下命令应该正确填充目录:

    createdb `whoami`
    

    运行:

    psql -l
    

    应该在这样的操作之后向你展示postgre中的表和用户权限 .

    希望这可以帮助 .

  • 38

    检查@leo_chaz_maltrait以修复错误错误 Could not symlink share/man/man3/SPI_connect.3 可能出现的另一个错误是:

    Error: Could not symlink lib/pkgconfig/libecpg.pc

    sudo chown -R `whoami` /usr/local/lib/pkgconfig
    
    brew link postgresql
    

相关问题