在WSL中安装MongoDB

时间:2020-06-21 08:07:21

标签: mongodb windows-subsystem-for-linux

看到this文档后,我试图在运行Ubuntu 18.04的WSL中​​安装MongoDB。但是MongoDB表示:

重要信息
Ubuntu所提供的mongodb软件包不是由MongoDB Inc.维护,并且与官方mongodb-org软件包冲突。如果您已经在Ubuntu系统上安装了mongodb软件包,则必须先卸载mongodb软件包,然后按照这些说明进行操作。

MongoDB还说WSL不支持mongodb-org

LINUX的Windows子系统(WSL)-不支持
MongoDB不支持Linux的Windows子系统(WSL)。

因此,我使用mongod安装了sudo apt install mongodb,并且在运行mongo时显示了错误:

connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
2020-06-21T13:33:40.606+0530 E  QUERY    [js] Error: couldn't connect to server 127.0.0.1:27017

是否可以安装适当的软件包并使之运行?

5 个答案:

答案 0 :(得分:18)

我最近遇到过这种情况。

即使MongoDB表示WSL不支持它,您也可以实际安装它。因此,我建议您按照MongoDB文档中给出的步骤进行操作。

注意:如果您已经安装了mongodb,请在安装mongodb-org之前删除所有那些,因为这可能会在安装过程中引起一些问题:

sudo dpkg --remove --force-remove-reinstreq mongo-tools
sudo dpkg --remove --force-remove-reinstreq mongodb-server-core
sudo apt-get --fix-broken install

要安装mongodb社区版,我添加了以下命令:

wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
sudo apt-get install gnupg
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list

sudo apt-get update
sudo apt-get install -y mongodb-org

现在,要运行mongoDB,

sudo nano /etc/init.d/mongod

并将此link中的内容粘贴到文件中并保存。

#give permissions
sudo chmod +x /etc/init.d/mongod

#start the service
sudo service mongod start

现在,您可以运行mongo来访问数据库。

希望有帮助。

答案 1 :(得分:3)

@bonyem的解决方案可以在Ubuntu 18.04(显然是在19.10上)而不是20.04上运行。 WSL版本应为2(请参见this来更新WSL)。

您还需要按照https://github.com/shayne/wsl2-hacks中提到的步骤“伪造” bash二进制文件,以使systemctl正常工作。

答案 2 :(得分:1)

这对我有用。

运行sudo apt install mongodb

然后安装后运行 sudo service mongodb start

它会说* Starting database mongodb

之后我可以使用 mongo

进行连接

答案 3 :(得分:0)

绕过此问题的最简单方法是在 Windows 上运行 MongoDB。您仍然可以通过本地主机从 WSL2 连接。

对我来说,@bonyem's solution 导致了错误:

System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

我要安装 Mongo 4.4。许多说明取自@Lyubosumaz 的指示 here

摆脱所有 Mongo PPA。

~ ❯ sudo ls /etc/apt/sources.list.d
mongodb-org-4.4.list  yarn.list
~ ❯ sudo rm -i /etc/apt/sources.list.d/mongodb-org-4.4.list

删除所有 Mongo 包和零碎的东西。

sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
sudo dpkg --remove --force-remove-reinstreq mongo-tools
sudo dpkg --remove --force-remove-reinstreq mongodb-org
sudo dpkg --remove --force-remove-reinstreq mongodb-org-server
sudo dpkg --remove --force-remove-reinstreq mongodb-server-core
sudo dpkg --remove --force-remove-reinstreq mongodb-org-mongos
sudo dpkg --remove --force-remove-reinstreq mongodb-org-shell
sudo dpkg --remove --force-remove-reinstreq mongodb-org-tools
sudo apt-get --fix-broken install
yes | sudo apt autoremove

添加新的 PPA 并安装 Mongo 4.4。

wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y mongodb-org

您将收到与之前相同的错误。这是由 mongodb-org 包在安装后尝试使用 systemctl 启动数据库 (source) 引起的。请注意,手动运行命令时会抛出相同的错误。

~ ❯ sudo systemctl start mongod
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down

但是,运行 mongod 应该仍然有效!

如果您在运行 mongod 时遇到错误,您可能需要修改一些权限并创建数据目录。我找到了这些问题的答案 hereherehere

sudo chown $USER /tmp/mongodb-27017.sock
sudo mkdir -p /data/db
sudo chown -R $USER /data/db

答案 4 :(得分:-1)

我已经尝试了上面的一些答案,但对我不起作用。 然后我跟着指南1

  1. 更新 ubuntu 包
  2. 在命令行上安装 MongoDB
  3. 设置本地数据库
  4. 创建文件夹和权限

它对我有用!