看到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
是否可以安装适当的软件包并使之运行?
答案 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
时遇到错误,您可能需要修改一些权限并创建数据目录。我找到了这些问题的答案 here、here 和 here。
sudo chown $USER /tmp/mongodb-27017.sock
sudo mkdir -p /data/db
sudo chown -R $USER /data/db
答案 4 :(得分:-1)