在 WSL 中安装 MongoDB

Installing MongoDB in WSL

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

IMPORTANT
The mongodb package provided by Ubuntu is not maintained by MongoDB Inc. and conflicts with the official mongodb-org package. If you have already installed the mongodb package on your Ubuntu system, you must first uninstall the mongodb package before proceeding with these instructions.

MongoDB 还说 WSL 不支持 mongodb-org

WINDOWS SUBSYSTEM FOR LINUX (WSL) - UNSUPPORTED
MongoDB does not support the Windows Subsystem for Linux (WSL).

因此,我使用 sudo apt install mongodb 安装了 mongod,当我 运行 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

有没有办法安装并制作合适的包运行?

我最近遇到过这种情况。

尽管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运行ning,

sudo nano /etc/init.d/mongod

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

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

#start the service
sudo service mongod start

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

希望对您有所帮助。

@bonyem's solution works if you try on Ubuntu 18.04 (and apparently in 19.10) but not in 20.04. WSL version should be 2 (please see this 更新 WSL)。

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

这对我有用。

运行 sudo apt install mongodb

然后安装 运行 sudo service mongodb start

它会说* Starting database mongodb

之后我可以使用 mongo

进行连接

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

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

它对我有效!

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

对我来说, 导致错误:

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 的指示

摆脱所有 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

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

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

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

我尝试了上面的所有方法,但 none 的方法有效。我看到了微软的官方文档,一切都很顺利。

https://docs.microsoft.com/en-us/windows/wsl/tutorials/wsl-database#install-mongodb