使用和运行brew服务的问题启动mongodb-community@4.2



我有MacOS Catalina版本10.15.5,我按照他们网站上指示的步骤安装了mongoDB,https://docs.mongodb.com/manual/tutorial/install-mongodb-on-os-x/使用Homebrew。当我检查我的mongoDB是否正确安装时,我使用which mongo命令并得到/usr/local/bin/mongo响应。当我使用mongo --versionmongod --version时,我得到:

MongoDB shell version v4.2.7
git version: 51d9fe12b5d19720e72dcd7db0f2f17dd9a19212
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64

db version v4.2.7
git version: 51d9fe12b5d19720e72dcd7db0f2f17dd9a19212
allocator: system
modules: none
build environment:
distarch: x86_64
target_arch: x86_64

尊重,我认为这意味着它正确安装并且应该可以工作。

但是当我打开终端并按照站点上的指示运行命令brew services start mongodb-community@4.2时,我得到:

Error: undefined method `resolve_alias' for Formula:Class
/usr/local/bin/brew-services.rb:154:in `service'
/usr/local/bin/brew-services.rb:203:in `check'
/usr/local/bin/brew-services.rb:193:in `run!'
/usr/local/bin/brew-services.rb:397:in `<top (required)>'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/usr/local/Homebrew/Library/Homebrew/utils.rb:81:in `require?'
/usr/local/Homebrew/Library/Homebrew/brew.rb:112:in `<main>'

注意:我的brew已成功更新和升级!

我在互联网上搜索了任何解决方案,但我找不到解决问题的任何内容......如果有人遇到类似的问题,请逐步解释并详细说明您是如何解决的?!?!

如果我直接运行命令mongod我会得到:

2020-06-04T01:19:41.351+0200 I  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2020-06-04T01:19:41.355+0200 W  ASIO     [main] No TransportLayer configured during NetworkInterface startup
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] MongoDB starting : pid=24712 port=27017 dbpath=/data/db 64-bit host=Air-de-Ruslan.home
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] db version v4.2.7
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] git version: 51d9fe12b5d19720e72dcd7db0f2f17dd9a19212
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] allocator: system
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] modules: none
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] build environment:
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten]     distarch: x86_64
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten]     target_arch: x86_64
2020-06-04T01:19:41.355+0200 I  CONTROL  [initandlisten] options: {}
2020-06-04T01:19:41.355+0200 E  NETWORK  [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Permission denied
2020-06-04T01:19:41.355+0200 F  -        [initandlisten] Fatal Assertion 40486 at src/mongo/transport/transport_layer_asio.cpp 684
2020-06-04T01:19:41.355+0200 F  -        [initandlisten] 
***aborting after fassert() failure

如果我直接运行命令mongo我会得到:

MongoDB shell version v4.2.7
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2020-06-04T01:21:20.317+0200 E  QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed: SocketException: Error connecting to 127.0.0.1:27017 :: caused by :: Connection refused :
connect@src/mongo/shell/mongo.js:341:17
@(connect):2:6
2020-06-04T01:21:20.320+0200 F  -        [main] exception: connect failed
2020-06-04T01:21:20.320+0200 E  -        [main] exiting with code 1

已解决

我不得不使用命令删除/usr/local/bin/brew-services.rb

rm /usr/local/bin/brew-services.rb它可以要求权限,请添加sudo rm /usr/local/bin/brew-services.rb.

之后我尝试运行brew services start mongodb-community@4.2,我得到了

Successfully started mongodb-community (label: homebrew.mxcl.mongodb-commu但是当我从不同的终端放mongo来启动外壳时,我得到了Socket exception error所以我也检查了mongod.log文件,我看到这是一个套接字问题,所以我尝试了

ls -ls /tmp/mongodb-27017.sock我得到了

0 srwx------ 1 root root 0 June 04 14:51 /tmp/mongodb-27017.sock这意味着所有者是root,MongoDB无法访问它,所以我这样做了

sudo rm -rf /tmp/mongodb-27017.sock

删除文件,然后重新开始 MongoDB

brew services start mongodb-community@4.2创建新的.sock文件,其所有者直接是mongoDB或实际用户whoami,当我再次检查时

ls -lsah /tmp/mongodb-27017.sock

我证明了我是所有者,然后我可以打开新终端并运行mongo并使用启用的连接并使用 shell!

在 macOSBig Surmongodb-community@5.0.1上进行测试

如果您使用的是自制软件并升级到mongodb-community@5.0,则在启动mongodb社区服务时可能会遇到错误。

使用rm -rf /usr/local/var/mongodb删除以前的 dbpath 文件夹(如果存在(,然后使用cd /usr/local/var && mkdir mongodb再次创建它。

那么brew services start mongodb-community应该可以正常工作。

在MacOS Big Sur(针对mongodb-community@5.0进行测试(上,以下内容总是返回错误(这意味着mongodb-community服务将自动加载(:

~ brew services start mongodb-community
mongodb-community error zaffer /Users/zaffer/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

默认情况下,mongodb社区配置存储在/usr/local/etc/mongod.conf

缺省情况下,dbpath 参数设置为/usr/local/var/mongodb

在分析日志时,我发现问题主要与此文件夹的权限有关/usr/local/var/mongodb

以下内容对我有用:

~ cd /usr/local/var/mongodb
~ sudo chown -R $(whoami) .
~ cd ..
~ sudo chown -R $(whoami) mongodb
~ brew services restart mongodb-community

如果您仍然遇到问题,我建议您更改此文件夹所有文件的文件权限(/usr/local/var/mongodb(:

~ chmod -R 777 /usr/local/var/mongodb
~ brew services restart mongodb-community

或在权限被拒绝时使用 sudo

~ sudo chmod -R 777 /usr/local/var/mongodb
~ brew services restart mongodb-community

如果您仍然遇到问题,请使用以下方法之一观察将 mongod 作为后台进程运行时的错误:

~ mongod
~ mongod --dbpath /usr/local/var/mongodb
~ mongod --config /usr/local/etc/mongod.conf

从较低版本的mongodb社区升级时,您也可能会遇到问题,例如从3.6升级到5.0,就我而言,我倾向于保存现有数据库,否则我可以为mongodb数据创建一个新文件夹,并在/usr/local/etc/mongod.conf配置文件中更新dbpath。

建议的方法是进行增量升级,即从 3.6 升级到 4.0,然后从 4.0 升级到 4.4,然后从 4.4 升级到 5.0。这样做是设置建议的兼容性版本,以便将数据从一个版本迁移到另一个版本。您可以使用 mongodb shell 手动设置兼容版本(为此,您需要一个有效的 mongodb 服务器(:

> db.adminCommand( { setFeatureCompatibilityVersion: <version> } )

链接到文档 : https://docs.mongodb.com/manual/reference/command/setFeatureCompatibilityVersion/

相关内容

  • 没有找到相关文章

最新更新