【问题标题】:Homebrew mongodb connection failed - Mac OSX Sierra 10.12.6Homebrew mongodb 连接失败 - Mac OSX Sierra 10.12.6
【发布时间】:2023-12-31 04:06:01
【问题描述】:

我已经在我的 Mac OSX Sierra 10.12.6 上安装了带有 brew 的 mongodb:

brew install mongodb

运行时没有错误:

brew services start mongodb

但是当我尝试运行时:

mongo

我收到以下错误:

MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
2018-02-05T14:55:25.952-0500 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2018-02-05T14:55:25.952-0500 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed

我已经删除了 .plist 文件,确保 /data/db 在那里并且所有必要的权限都在上面。我可以毫无问题地启动mongodb,一切都运行,但我无法让它与brew services start mongodb一起运行

有什么想法吗?

【问题讨论】:

    标签: mongodb homebrew


    【解决方案1】:

    如果您不需要保留当前数据:

    brew services stop mongodb

    brew uninstall mongodb

    rm -rf /usr/local/var/mongodb/

    rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

    rm -rf /usr/local/etc/mongod.conf

    brew install mongodb

    brew services start mongodb

    应该升级到最新版本并启动它。

    【讨论】:

    • 非常感谢!这个对我有用!在所有这些操作之后运行brew link --overwrite mongodb 也可能会有所帮助。
    • emmm,好像“/usr/local/var/mongodb/”里面有旧版本的数据文件,应该删掉
    • 帮助很大,谢谢!
    • 在我的情况下@gorjanz,当我在新的用户空间中安装时,我需要在/usr/ 文件夹的权限组中配置用户,并且还必须授予读写权限该文件夹的用户,如 brew 推荐的。在那之后,它就像一个魅力。
    【解决方案2】:

    我也遇到了同样的问题,原来是mongod服务没有运行,虽然brew services start mongodb报没有问题。

    但如果直接运行mongod,服务启动成功。所以问题在于/usr/local/var/mongodb中的旧数据库文件

    (这些配置可以在~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist/usr/local/etc/mongod.conf找到)

    /usr/local/var/log/mongodb/mongo.log 我看到一行说

    2018-02-12T15:51:56.110+0800 F CONTROL [initandlisten] ** 重要提示:升级问题:在尝试升级到 3.6 之前,数据文件需要完全升级到版本 3.4;有关详细信息,请参阅http://dochub.mongodb.org/core/3.6-upgrade-fcv

    然后我安装了mongodb 3.4(brew uninstall mongodbbrew install mongodb@3.4),

    运行 db.adminCommand( { setFeatureCompatibilityVersion: "3.4" } ) 在 mongo@3.4 shell 中,

    停止mongodb服务(brew services stop mongodb@3.4),

    再次升级mongodb到3.6(brew uninstall mongodb@3.4brew install mongodb),

    问题解决了。

    (如果需要,rm /usr/local/var/mongodb/*.lock)

    【讨论】:

    • 如何获得 mongo@3.4 shell? :o
    • 啊,好吧,你需要 brew link --force mongodb@3.4 然后 mongo 别名才起作用
    • 而且,我没有尝试运行 brew services install mongodb 但它应该只是 brew install mongodb 吧?在你的回答中
    【解决方案3】:

    同样的附加在我身上。运行brew services start mongodb-community@4.2 后,brew 没有抛出任何错误,但实际上有一个错误。我查看了 MongoDB 日志文件 (/usr/local/var/log/mongodb/mongo.log),发现错误:

    IllegalOperation: Attempted to create a lock file on a read-only directory: /usr/local/var/mongodb
    

    用brew启动MongoDB会像你一样启动,所以你必须有写入数据文件夹的权限,该文件夹位于/usr/local/var/mongodb下。

    为了确保您有权在此文件夹中写入,请导航到父文件夹:

    cd /usr/local/var
    

    然后运行

    sudo chown -R $USER mongodb
    

    这将使您成为该文件夹以及该文件夹中所有文件的所有者。

    停止 MongoDB,重新启动它,它应该可以工作了:

    brew services stop mongodb-community@4.2
    
    brew services start mongodb-community@4.2
    

    【讨论】: