Mar*_*rin 8 database macos mongodb macos-catalina
我刚刚将我的 mac 更新到Catalina 10.15.2,但我无法运行 MongoDB。
当我发送命令时,mongo我收到此消息
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 :
Run Code Online (Sandbox Code Playgroud)
使 Mongo 工作的唯一方法是重新启动 Mac。
如果我使用命令检查进程,ps我看不到进程已经启动并且端口27017可用。
我已经尝试运行以下命令:
brew tap mongodb/brew
brew reinstall mongodb-community
brew services restart mongodb-community
Run Code Online (Sandbox Code Playgroud)
如果我运行以下命令:
ps aux | grep -v grep | grep mongod
Run Code Online (Sandbox Code Playgroud)
没有结果。
我mongod之前mongo也试过运行,结果是:
2019-12-18T12:17:45.916+0100 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] MongoDB starting : pid=9375 port=27017 dbpath=/data/db 64-bit host=Marcos-MacBook-Pro.local
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] db version v4.2.1
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] git version: edf6d45851c0b9ee15548f0f847df141764a317e
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] allocator: system
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] modules: none
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] build environment:
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] distarch: x86_64
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] target_arch: x86_64
2019-12-18T12:17:45.920+0100 I CONTROL [initandlisten] options: {}
2019-12-18T12:17:45.920+0100 E NETWORK [initandlisten] Failed to unlink socket file /tmp/mongodb-27017.sock Permission denied
2019-12-18T12:17:45.920+0100 F - [initandlisten] Fatal Assertion 40486 at src/mongo/transport/transport_layer_asio.cpp 693
2019-12-18T12:17:45.920+0100 F - [initandlisten]
***aborting after fassert() failure
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?我很感激
解决 Catalina Mac OS root 和 mongodb 连接问题的另一种方法是执行以下操作:
安装Homebrew,如果有,重新安装一次
在终端中运行以下命令
/usr/bin/ruby -e“$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 酿造 untap mongodb/brew && 酿造水龙头 mongodb/brew 酿造安装 mongodb-community@4.2
问题是 mongo 找不到,/db/data因为没有目录,所以你必须创建一个:
cd ~(这应该带您进入您的Users文件夹)
Users通过运行以下命令从文件夹创建您自己的 db/data 文件夹:
mkdir db& 里面有CDdb folder
里面db folder运行:mkdir data& cd 里面data folder
运行此命令:(在您刚刚创建的文件夹mongod --dbpath ~/data/db
内)Users/data/db/
现在打开一个新的终端选项卡并运行:(cd ~带您返回 Users) -> 现在运行:(cd .. & cd .. again (do this twice)
现在您应该位于Users 之前的文件夹中)
(现在找到tmp folder)cd 进入/tmp folder
删除 sock 文件(这会给您带来连接问题)
通过运行删除它:rm -rf mongodb-27017.sock
现在运行命令:(mongo现在应该可以工作)
在 mongo shell 内运行命令:db.verion()
如果您看到一个版本,则表明您的连接有效。
从现在开始,要运行 mongodb 数据库和连接,每当您想要处理项目时,您都必须始终打开两个单独的选项卡
例子: 在一个终端选项卡中运行命令 -> mongod --dbpath ~/data/db (这将启动连接) 在另一个终端选项卡中运行命令: mongo (这会启动外壳)
这两个都必须运行..
边注: 你不再需要开始 通过运行连接 brew 服务不再启动 mongo-community。
记住现在mongod --dbpath ~/data/db基本上是 ->mongod命令.. Mac OS Catalina 更新造成了 root 权限问题,这就是为什么mongod以前单独使用命令从未起作用的原因。
希望这对您有帮助。祝你好运。
This error is caused due to ownership issues.
Here we are changing the ownership to 'mongodb' user.
Run Code Online (Sandbox Code Playgroud)
Command 1: deletes the /tmp/mongodb-27017.sock file
$sudo rm -rf /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)
Command 2: starts mongod service
$sudo service mongod start
Run Code Online (Sandbox Code Playgroud)
Command 3: shows the file with its ownership details
ls -lsah /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)
output
0 srwx------ 1 mongodb mongodb 0 Aug 24 04:01 /tmp/mongodb-27017.sock
Run Code Online (Sandbox Code Playgroud)