Docs 菜单
Docs 主页
/
MongoDB Manual
/ / / / /

故障排除

在此页面上

  • 检索公钥时出现错误
  • 运行时出错 sudo apt update
  • 运行时出错 sudo apt install -y mongodb-org
  • 由于以下原因,无法安装包 dpkg-deb: error
  • mongod 报告与打开套接字有关的错误
  • mongod 报告与数据目录相关的错误

安装 MongoDB Community Edition 过程的 Import the public key used by the package management system 步骤中,您可能会遇到 "gpg: no valid OpenPGP data found." 错误。

确保您完全按照文档要求复制命令。操作的响应应为 OK

要检查系统上是否存在 MongoDB 公共 GPG 密钥, 请在终端中运行以下命令:

sudo apt-key list

输出应包含类似下面的条目:

/etc/apt/trusted.gpg
--------------------
pub rsa4096 2018-04-18 [SC] [expires: 2023-04-17]
E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B
uid [ unknown] MongoDB 8.0 Release Signing Key <packaging@mongodb.com>

安装 MongoDB Community Edition过程中运行 sudo apt-get update 时,您可能会遇到一个或多个类似以下的错误:

W: GPG error: https://repo.mongodb.org/apt/ubuntu <release>/mongodb-org/8.0 Release: \
The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 4B7C549A058F8B6B
E: The repository 'https://repo.mongodb.org/apt/ubuntu <release>/mongodb-org/8.0 Release' \
is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

这些错误表明,未在安装 MongoDB Community Edition 过程的步骤Import the public key used by the package management system中添加 MongoDB 公共 GPG 密钥。

重复安装 MongoDB Community Edition 过程中的Import the public key used by the package management system 步骤通常可以解决此问题。确保完全按照文档复制命令和密钥。

您可以通过在终端中运行以下命令来验证系统上是否存在 MongoDB 公共 GPG 密钥:

sudo apt-key list

输出应包含类似下面的条目:

--------------------
pub rsa4096 2018-04-18 [SC] [expires: 2023-04-17]
E162 F504 A20C DF15 827F 718D 4B7C 549A 058F 8B6B
uid [ unknown] MongoDB 8.0 Release Signing Key <packaging@mongodb.com>

当您运行 sudo apt install -y mongodb-orgCreate a list file for MongoDB 步骤的相关命令),可能会遇到以下类似错误(在安装 MongoDB Community Edition 的过程中):

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package mongodb-org

此错误表明 /etc/apt/sources.list.d/mongodb-org-8.0.list 可能配置错误或丢失。

要查看 mongodb-org-8.0.list 文件的内容,请在终端或 Shell 中运行以下命令:

cat /etc/apt/sources.list.d/mongodb-org-8.0.list

如果文件内容与上述已链接步骤中您所用 Ubuntu 版本对应的文档不完全匹配,则请删除该文件并重复执行 Create a list file for MongoDB(为 MongoDB 创建列表文件)步骤。如果该文件不存在,请在该步骤中创建它。

验证 mongodb-org-8.0.list 文件存在且内容正确后,运行 sudo apt update 以更新 apt 存储库并重试 sudo apt install -y mongodb-org

安装 mongodb-org 软件包时,您可能会遇到类似以下的错误:

dpkg: error processing archive /var/cache/apt/archives/mongodb-org-server_8.0.0_amd64.deb (--unpack):
trying to overwrite '/usr/bin/mongod', which is also in package mongodb-server-core 1:3.6.3-0ubuntu1

此错误表明,系统在安装官方 MongoDB Inc. mongodb 包之前已经安装了 Ubuntu mongodb-org 包。要确认主机是否安装了 Ubuntu mongodb 包,请在终端或 Shell 中运行以下命令:

sudo apt list --installed | grep mongo

如果输出结果如下,则必须卸载 Ubuntu mongodb 软件包,然后再重试安装 MongoDB Community Edition 程序:

mongodb/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed]
mongodb-clients/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed,automatic]
mongodb-server/bionic,bionic,now 1:3.6.3-0ubuntu1 all [installed,automatic]
mongodb-server-core/bionic,now 1:3.6.3-0ubuntu1 amd64 [installed,automatic]

在终端或 Shell 中运行以下命令以完全删除 Ubuntu mongodb 包,然后重试安装过程:

sudo apt remove mongodb
sudo apt purge mongodb
sudo apt autoremove

注意

sudo apt purge mongodb 会删除 Ubuntu mongodb 包安装的所有默认配置文件。如果您已修改这些配置文件希望保留这些修改,请将文件复制到另一个目录,例如 /home/your-user-name

如果输出包含混合的 mongodb-orgmongodb 二进制文件,您可能需要先对 mongodb-org 软件包执行 apt removeapt purgeapt autoremove 操作,然后再尝试删除并清除 Ubuntu mongodb 软件包。清除所有 MongoDB 相关软件包后,重试安装过程。

启动 mongod 时您可能会遇到 Socket is already in useFailed to unlink socket file 错误。这些错误通常表示另一个进程正在使用为 mongod 进程配置的端口,通常是系统上正在运行的另一个 mongod

以下示例使用 ss 实用程序列出处于 LISTEN (-l) 状态的所有打开的 TCP (-t) 或 UDP (-u) 套接字以及使用每个套接字 (-p) 的进程,而无需解析任何服务名称或主机名 (-n)。

sudo ss -tulpn

以下部分输出显示 mongod 进程正在监听 27017 端口。尝试在同一端口上运行另一个 mongod 进程将会导致套接字错误。

Netid State Local Address:Port
udp UNCONN 127.0.0.53%lo:53 users:(("systemd-resolve",pid=663,fd=12))
udp UNCONN 10.1.16.87%enp0s3:68 users:(("systemd-network",pid=652,fd=15))
tcp LISTEN 127.0.0.53%lo:53 users:(("systemd-resolve",pid=663,fd=13))
tcp LISTEN 0.0.0.0:22 users:(("sshd",pid=819,fd=3))
tcp LISTEN 192.168.1.15:27017 users:(("mongod",pid=10027,fd=12))
tcp LISTEN 127.0.0.1:27017 users:(("mongod",pid=10027,fd=11))
tcp LISTEN ::]:22 users:(("sshd",pid=819,fd=4))

如果系统已有一个 mongod 或其他系统进程在所需端口上运行,则必须关闭现有进程为新的 mongod 进程选择一个新端口。您可以指定 net.port 配置文件选项来更改 mongod 侦听的端口。

用户可能会遇到类似于 mongod 进程日志中的以下记录的错误:

Data directory ... not found
Attempted to create lock file on a read-only directory: ...

一般来说,这些错误表明 MongoDB 数据目录不存在,或者无法由 mongod 访问。

数据目录通过配置文件中的 storage.dbPath 设置或使用命令行上 mongod--dbpath 选项指定。

  • 如果通过 apt 安装包管理器安装了 MongoDB,则默认 /etc/mongod.conf 配置文件storage.dbPath 设置为 /var/lib/mongodb

  • 如果命令行上正在运行 mongod,且完全忽略 --dbpath 选项,则 MongoDB 使用 /data/db 的默认 --dbpath

无论您是使用上述数据目录路径之一,还是在配置文件或命令行中提供自己的路径,均应在启动 mongod 之前确保该数据目录存在于文件系统中。您可以使用 mkdir 命令在 Ubuntu 上创建目录。

必须使用适当的权限和所有权设置配置数据目录,以允许 mongod 读取、写入和浏览目录内容(rwx 用户或群组权限)。

请先使用 chownchmod 修改权限并根据需要设置 user:group 所有权,然后再启动 mongod

mongod 作为服务启动的用户(例如使用 sudo systemctl start mongodsudo service mongod start),通常只有在修改了 /etc/mongod.conf 中的默认 dbPath 值后才会看到这些错误:

  • 目录不允许 mongodb 用户或 mongodb 组读取、写入或执行 (rwx) 目录及其内容,或者

  • 不存在的目录。

在下列情况下,不使用服务定义启动 mongod 的用户(例如,使用终端启动 mongod)通常会看到这些错误:

  • dbPath--dbpath 指定的目录不允许用户或用户所属的群组读取、写入和执行 (rwx) 该目录或其内容,或者

  • 指定的数据目录不存在。

后退

使用 .tgz Tarball 进行安装