故障排除
在此页面上
检索公钥时出现错误
在 安装 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>
运行时出错 sudo apt update
在安装 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-org
当您运行 sudo apt install -y mongodb-org
( Create 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
。
由于以下原因,无法安装包 dpkg-deb: error
安装 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-org
和 mongodb
二进制文件,您可能需要先对 mongodb-org
软件包执行 apt remove
、apt
purge
和 apt autoremove
操作,然后再尝试删除并清除 Ubuntu mongodb
软件包。清除所有 MongoDB 相关软件包后,重试安装过程。
mongod
报告与打开套接字有关的错误
启动 mongod
时您可能会遇到 Socket is already in use
或 Failed 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
报告与数据目录相关的错误
用户可能会遇到类似于 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
用户或群组权限)。
请先使用 chown
和 chmod
修改权限并根据需要设置 user:group
所有权,然后再启动 mongod
。
mongod
使用数据目录启动
将 mongod
作为服务启动的用户(例如使用 sudo
systemctl start mongod
或 sudo service mongod start
),通常只有在修改了 /etc/mongod.conf
中的默认 dbPath
值后才会看到这些错误:
目录不允许
mongodb
用户或mongodb
组读取、写入或执行 (rwx
) 目录及其内容,或者不存在的目录。
在下列情况下,不使用服务定义启动 mongod
的用户(例如,使用终端启动 mongod
)通常会看到这些错误: