故障排除
在本页
在检索公钥时出现错误
在导入软件包管理系统中使用的公钥 步骤中,您可能会遇到安装 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 update
时出现错误
在执行 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>
运行 sudo apt install -y mongodb-org
时可能会遇到错误
在安装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
。
由于 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-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-org
和 mongodb
可执行文件的混合,您可能需要先使用 apt remove
、apt purge
和 apt autoremove
命令卸载和清除 mongodb-org
软件包,然后尝试卸载和清除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
报告与数据目录相关的错误
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
用户或组权限)。
使用 chown
和 chmod
修改权限,并在启动 mongod
之前设置适当的 user:group
所有权。
使用数据目录启动 mongod
以服务方式启动 mongod
的用户(例如,使用 sudo systemctl start mongod
或 sudo service mongod start
)通常只有在他们修改了 /etc/mongod.conf
中的默认 dbPath
值时才会看到这些错误
不允许
mongodb
用户或mongodb
组读取、写入或执行(rwx
)目录及其内容的目录,或者不存在的目录。
未使用服务定义启动 mongod
的用户(例如,使用终端启动 mongod
)通常在这些情况下看到这些错误