文档菜单
文档首页
/
MongoDB 手册
/ / / / /

故障排除

在本页

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

导入软件包管理系统中使用的公钥 步骤中,您可能会遇到安装 MongoDB 社区版 流程时"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>

在执行 sudo apt-get update 作为 安装 MongoDB 社区版 流程的一部分时,您可能会遇到类似以下的一个或多个错误

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 社区版 流程的 导入软件包管理系统中使用的公钥 步骤中没有添加 MongoDB 公共 GPG 密钥。

重复执行 安装 MongoDB 社区版 流程中的 导入软件包管理系统中使用的公钥 步骤通常可以解决这个问题。请确保您正在按照文档中的说明准确复制命令和密钥。

您可以通过在终端运行以下命令来验证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>

安装MongoDB社区版流程中的创建MongoDB列表文件步骤运行 sudo apt install -y mongodb-org 时,可能会遇到类似于以下错误

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版本的相关文档不完全匹配,请删除文件并重复创建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-org 软件包之前已经安装了Ubuntu mongodb 软件包。为了确认主机是否已安装了Ubuntu mongodb 软件包,请在终端或shell中运行以下命令

sudo apt list --installed | grep mongo

如果您的输出类似于以下内容,您必须在重试安装MongoDB社区版流程之前先卸载Ubuntu mongodb 软件包

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 可执行文件的混合,您可能需要先使用 apt removeapt purgeapt autoremove 命令卸载和清除 mongodb-org 软件包,然后尝试卸载和清除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 设置在 配置文件 中指定,或者在命令行中通过 --dbpath 选项指定 mongod

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

  • 如果您在命令行上运行 mongod,并且完全省略了 --dbpath 选项,MongoDB 将使用默认的 --dbpath /data/db

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

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

使用 chownchmod 修改权限,并在启动 mongod 之前设置适当的 user:group 所有权。

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

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

  • 不存在的目录。

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

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

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

返回

使用 .tgz Tarball 安装