如何在Ubuntu18.04上连接到托管数据库
介绍
托管数据库 与自我管理的数据库相比具有许多优势,包括自动更新、简化的扩展和高可用性。 如果您不熟悉使用托管数据库,那么执行某些任务(例如连接到数据库)的最佳方式可能不是不言而喻的。
本指南概述了如何为各种数据库管理系统 (DBMS) 安装客户端程序 — 包括 PostgreSQL、MySQL、Redis 和 MongoDB[ X184X] — 在 Ubuntu 18.04 服务器上。 它还将解释如何使用这些程序连接到托管数据库实例。
注意: 本指南中概述的说明已使用 DigitalOcean 托管数据库 进行了测试,但它们通常适用于任何云提供商的托管数据库。 但是,如果您在连接到其他提供商提供的数据库时遇到问题,您应该查阅他们的文档以寻求帮助。
先决条件
要遵循本指南中详述的说明,您需要:
- 访问运行 Ubuntu 18.04 的服务器。 此服务器应具有具有管理权限的非 root 用户和配置为
ufw
的防火墙。 要进行此设置,请遵循我们的 Ubuntu 18.04 初始服务器设置指南。 - 托管数据库实例。 本教程提供有关如何连接到各种数据库管理系统的说明,特别是 PostgreSQL、MySQL、Redis 和 MongoDB。 要配置 DigitalOcean 托管数据库,请查看您选择的 DBMS 的文档:
- PostgreSQL
具备这些先决条件后,请跳至与您的数据库管理系统 (DBMS) 一致的任何部分。
连接到托管 PostgreSQL 数据库
要连接到托管 PostgreSQL 数据库,您可以使用 psql
,这是 Postgres 的标准命令行客户端。 它是开源的,由 PostgreSQL Development Group 维护,通常在安装 PostgreSQL 服务器时包含。
您可以通过使用 APT 安装 postgresql-client
软件包自行安装 psql
,但如果您从默认的 Ubuntu 18.04 存储库安装它,它将安装 psql
,而 PostgreSQL 最新的主要版本是版本 13。 一些托管数据库提供商为您希望数据库使用的 PostgreSQL 版本提供了各种选项。 在撰写本文时,DigitalOcean 为其托管 PostgreSQL 数据库提供 10 到 13 版本。
通常,您仍然可以使用与数据库版本不匹配的 psql
版本。 但是,如果您的 psql
版本比 Postgres 数据库的版本旧,您可能无法使用新数据库版本中包含的某些功能。
安装特定版本的 psql
客户端的一种方法是将官方 PostgreSQL APT 存储库添加到您计算机的 APT 资源列表中。 为此,首先通过运行以下 cURL 命令导入存储库的签名密钥。
cURL 是用于传输数据的许多操作系统上可用的命令行工具。 它读取存储在传递给它的 URL 中的任何数据,并将内容打印到系统的输出。 在以下示例中,cURL 打印 GPG 密钥文件的内容,然后将其通过管道传送到以下 sudo apt-key add -
命令中,从而将 GPG 密钥添加到您的受信任密钥列表中。
另外,请注意,此 curl
命令使用选项 -fsSL
,它们一起基本上告诉 cURL 静默失败。 这意味着如果由于某种原因 cURL 无法联系 GPG 服务器或 GPG 服务器已关闭,它不会意外地将生成的错误代码添加到您的受信任密钥列表中:
curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
如果密钥添加成功,此命令将返回 OK
:
OutputOK
如果您想仔细检查是否正确添加了密钥,可以使用以下命令执行此操作:
apt-key list
这将在输出中的某处返回 PostgreSQL 键:
Output/etc/apt/trusted.gpg -------------------- pub rsa4096 2011-10-13 [SC] B97B 0AFC AA1A 47F0 44F2 44A0 7FCC 7D46 ACCC 4CF8 uid [ unknown] PostgreSQL Debian Repository . . .
此时,您的 APT 安装只有 PostgreSQL 存储库的签名密钥。 它不知道在哪里可以找到存储库或它托管的包。
您的服务器上有两个地方,APT 会在其中查找要下载和安装的软件包的在线资源:sources.list
文件和 sources.list.d
目录,这两个目录都可以在 [ X194X] 目录。 sources.list
是一个列出 APT 数据的活动源的文件,每行一个源,最首选的源首先列出。 sources.list.d
目录允许您将此类 sources.list
条目添加为单独的文件。
运行以下命令,将在 sources.list.d
目录中创建一个名为 pdgd.list
的文件。 该文件中唯一的内容是单行读取 deb https://apt.postgresql.org/pub/repos/apt bionic-pgdg main
:
echo "deb https://apt.postgresql.org/pub/repos/apt bionic-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
这一行告诉 APT 它需要知道的关于源是什么以及在哪里找到它的所有信息:
deb
:这意味着源条目引用了一个常规的 Debian 架构。 在其他情况下,该行的这一部分可能显示为deb-src
,这意味着源条目代表 Debian 发行版的源代码。https://apt.postgresql.org/pub/repos/apt
:这是一个指向可以找到 APT 数据的位置的 URI。 在这种情况下,URI 指向官方 PostgreSQL 存储库所在的 HTTPS 地址。bionic-pgdg
:Ubuntu 存储库可以包含多个版本的软件包。 该行的这一部分指定 APT 应该只从 Ubuntu 的bionic
版本下载文件(“Bionic Beaver”是 Ubuntu 18.04 的代号)。 另外,请注意,此存储库将-pgdg
(“PostgreSQL Global Development Group”的缩写)附加到每个版本名称的末尾。main
:这部分将 APT 指向四个 Ubuntu 存储库组件之一。 在这种情况下,它指向主组件。
运行此命令后,更新服务器的本地包索引,以便 APT 知道在哪里可以找到安装 psql
shell 的包:
sudo apt update
更新机器的本地包索引后,您就可以安装所选版本的 psql
。 提供 psql
客户端的包都以 postgresql-client
开头,因此您可以通过运行以下命令找到所有这些包的信息:
apt-cache search postgresql-client
这将返回名称包含 postgresql-client
的所有可用包的列表,以及每个包的简要说明:
Outputpostgresql-client - front-end programs for PostgreSQL (supported version) postgresql-client-10 - front-end programs for PostgreSQL 10 postgresql-client-common - manager for multiple PostgreSQL client versions postgresql-client-10-dbgsym - debug symbols for postgresql-client-10 postgresql-client-11 - front-end programs for PostgreSQL 11 postgresql-client-11-dbgsym - debug symbols for postgresql-client-11 postgresql-client-12 - front-end programs for PostgreSQL 12 postgresql-client-12-dbgsym - debug symbols for postgresql-client-12 postgresql-client-13 - front-end programs for PostgreSQL 13 postgresql-client-13-dbgsym - debug symbols for postgresql-client-13 postgresql-client-8.2 - front-end programs for PostgreSQL 8.2 postgresql-client-8.3 - front-end programs for PostgreSQL 8.3 postgresql-client-8.4 - front-end programs for PostgreSQL 8.4 postgresql-client-9.0 - front-end programs for PostgreSQL 9.0 postgresql-client-9.1 - front-end programs for PostgreSQL 9.1 postgresql-client-9.2 - front-end programs for PostgreSQL 9.2 postgresql-client-9.3 - front-end programs for PostgreSQL 9.3 postgresql-client-9.4 - front-end programs for PostgreSQL 9.4 postgresql-client-9.5 - front-end programs for PostgreSQL 9.5 postgresql-client-9.6 - front-end programs for PostgreSQL 9.6
找到与托管 Postgres 数据库正在运行的版本最匹配的包,然后使用 apt install
命令安装它。 以下示例将安装客户端的版本 13:
sudo apt install postgresql-client-13
APT 将要求您确认是否要安装该软件包。 按 ENTER
即可。
一旦该操作完成安装,您就可以连接到您的托管 Postgres 数据库,而无需进一步配置。 为此,您可以使用以下标志调用 psql
:
-U
,你想连接的 PostgreSQL 用户-h
,托管数据库的主机名或 IP 地址-p
,托管数据库正在侦听连接的 TCP 端口-d
,你要连接的具体数据库--set
,位于其他连接变量和变量值之前。 例如,如果您想在连接时验证数据库的 CA 证书,您可以在命令中包含--set=sslmode=require
-W
,它告诉psql
提示您输入 PostgreSQL 用户的密码。 请注意,您可以在psql
命令之前加上PGPASSWORD=password
,但通常认为在命令行中不包含密码更安全
包含这些标志后,psql
命令的语法如下所示:
psql -U user -h host -p port -d database --set=variable=value -W
或者,如果您的托管数据库提供程序提供 统一资源标识符 (URI) 用于连接,您可以使用以下语法:
psql postgresql://username:password@host:port/database?option_1=value&option_n=value
如果您要连接到 DigitalOcean 托管 PostgreSQL 数据库,您可以在 云控制面板 中找到所有这些连接信息。 单击左侧边栏菜单中的 Databases,然后单击要连接的数据库并向下滚动以找到其 Connection Details 部分。 从那里,您可以执行以下操作之一:
- 选择 Connection parameters 选项并将相关字段分别复制到前面详述的
psql
语法中 - 选择 Connection String 选项并复制一个现成的连接 URI,您可以将其粘贴到上面概述的连接 URI 语法中
- 选择 Flags 选项并复制一个现成的
psql
命令,您可以将其粘贴到终端以建立连接
这样,您就可以开始使用托管 PostgreSQL 实例了。 有关如何与 PostgreSQL 交互的更多信息,请遵循我们关于 如何管理 SQL 数据库 的指南。 您可能还会发现我们的 Introduction to Queries in PostgreSQL 很有用。
连接到托管 MySQL 数据库
要访问托管 MySQL 数据库,您需要在计划建立连接的计算机上安装 MySQL 客户端。 可以使用 MySQL 命令行客户端 提供的 mysql
命令进行连接,但此命令不支持连接字符串。 为了让您的连接方式更加灵活,我们建议您改用 mysqlsh
命令,该命令允许您使用官方的 MySQL Shell,因为它可以让您自由连接标志或一个连接 URI。
为了访问 DigitalOcean Managed MySQL 数据库,您需要安装 MySQL shell 8.0 或更高版本。 为此,您必须先添加 MySQL 软件存储库,然后再安装 mysql-shell
软件包。
首先在 Web 浏览器中导航到 MySQL APT 存储库页面 。 找到右下角的下载按钮,点击进入下一页。 此页面将提示您登录或注册 Oracle Web 帐户。 您可以跳过它,而是查找显示 不,谢谢,开始我的下载 的链接。 右键单击链接并选择复制链接地址(此选项的措辞可能不同,具体取决于您的浏览器)。
您现在可以下载文件了。 在您的服务器上,移动到您可以写入的目录。 /tmp/
是 Linux 系统上的临时目录,通常是通用可写的,默认情况下:
cd /tmp
使用 curl
下载文件,记住粘贴您刚刚复制的地址来代替以下命令的突出显示部分。 您还需要将两个命令行标志传递给 curl
。 -O
指示 curl
输出到文件而不是标准输出。 L
标志使 curl
遵循 HTTP 重定向,在这种情况下这是必要的,因为您复制的地址实际上会在文件下载之前重定向到另一个位置:
curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.17-1_all.deb
此命令会将文件下载到您当前的工作目录。 列出文件以确保:
ls
此命令将列出新下载的文件:
Outputmysql-apt-config_0.8.17-1_all.deb . . .
现在您可以将 MySQL APT 存储库添加到系统的存储库列表中。 dpkg
命令用于安装、删除和检查 .deb
软件包。 以下命令包含 -i
标志,表示您想从指定文件安装:
sudo dpkg -i mysql-apt-config*
在安装过程中,您将看到一个配置屏幕,您可以在其中指定您喜欢的 MySQL 版本,以及为其他 MySQL 相关工具安装存储库的选项。 默认值将添加 MySQL 最新稳定版本的存储库信息,仅此而已。 这就是我们想要的,所以使用向下箭头导航到 Ok
菜单选项并点击 ENTER
。
之后,包将完成添加存储库。 刷新您的 apt
软件包缓存以使新软件包可用:
sudo apt update
接下来,您可以稍微清理一下系统并删除您下载的文件,因为您将来不需要它。 这不是绝对必要的,因为任何写入 /tmp/
目录的文件都会在十天后自动删除,但是您现在可以使用以下命令删除该文件:
rm mysql-apt-config*
注意: 如果您需要更新这些存储库的配置,请运行以下命令来选择您的新选项:
sudo dpkg-reconfigure mysql-apt-config
选择新选项后,运行以下命令刷新包缓存:
sudo apt update
现在您已经添加了 MySQL 存储库,您可以安装实际的 MySQL Shell 软件了。 使用以下 apt
命令执行此操作:
sudo apt install mysql-shell
该命令完成后,检查软件版本号以确保您拥有最新版本:
mysqlsh --version
Outputmysqlsh Ver 8.0.25 for Linux on x86_64 - for MySQL 8.0.25 (MySQL Community Server (GPL))
安装 mysql-shell
软件包后,您可以通过运行带有以下标志作为参数的 mysqlsh
命令来访问托管数据库:
-u
,你想连接的 MySQL 用户-p
,告诉mysqlsh
提示输入用户密码。 您可以将密码直接包含在-p
标志后面的连接命令中(没有空格,如-ppassword
),但出于安全原因,通常不建议这样做-h
,数据库的主机名或IP地址-P
,MySQL 监听连接的 TCP 端口-D
,你要连接的具体数据库
此外,您可能希望包括 --sql
选项。 当 MySQL Shell 打开一个新会话时,它会以以下三种模式之一进行:SQL、JavaScript 或 Python。 SQL 模式打开一个会话,您可以在其中使用 SQL 查询和操作数据,以及创建数据库、表、组或任何其他您需要存储和管理数据的东西。 JavaScript 和 Python 模式允许您使用这些各自语言中可用的函数来创建许多会话对象。 这使您可以从同一个 MySQL Shell 实例中使用多个 MySQL 服务器实例。
MySQL Shell 默认会以 JavaScript 模式打开会话。 因此,如果您想像使用 MySQL 命令行客户端一样运行 SQL 查询,则需要指定 --sql
选项以在 SQL 模式下建立连接。
使用这些标志,mysqlsh
语法将如下所示:
mysqlsh -u user -p -h host -P port -D database --sql
或者,如果您有一个可用于连接的连接 URI,您将使用如下语法:
mysqlsh --sql mysql://user:password@host:port/database?option_1=value&option_n=value
如果您要连接到 DigitalOcean 托管数据库,您可以在 云控制面板 中找到所有这些连接信息。 单击左侧边栏菜单中的 Databases,然后单击要连接的数据库并向下滚动以找到其 Connection Details 部分。 从那里,您可以执行以下操作之一:
- 选择 Connection parameters 选项并将相关字段分别复制到前面概述的
mysqlsh
语法中 - 选择 Connection String 选项并复制一个现成的连接 URI,您可以将其粘贴到上面详述的连接字符串命令中
这样,您就可以开始使用托管 MySQL 实例了。
如果您不熟悉 MySQL Shell,需要注意的一点是,为了关闭连接,其他 MySQL 客户端中使用的 exit
命令将不起作用。 相反,您可以运行 \q
快捷方式:
\q
OutputBye!
有关如何与 MySQL 交互的更多信息,我们鼓励您阅读我们关于 如何管理 SQL 数据库 的指南。 您可能还会发现我们的 MySQL 查询简介 很有用。
关于 MySQL 8 中密码验证的注意事项
在 MySQL 8.0 和更新版本中,默认的身份验证插件是 caching_sha2_password
。 但是,在撰写本文时,PHP 不支持 caching_sha2_password
。 如果您计划将托管 MySQL 数据库与使用 PHP 的应用程序(例如 WordPress 或 phpMyAdmin)一起使用,则在应用程序尝试连接到数据库时可能会出现问题。
如果您有权访问数据库的配置文件,则可以添加一个设置以强制它使用 PHP 支持的身份验证插件 - 例如,mysql_native_password
- 默认情况下:
示例 MySQL 配置文件
[mysqld] default-authentication-plugin=mysql_native_password
但是,一些托管数据库提供商(包括 DigitalOcean)不会向最终用户提供数据库配置文件。 在这种情况下,您可以连接到数据库并为需要连接到数据库的任何现有 MySQL 用户运行 ALTER USER
命令,但不能使用 caching_sha2_password
插件执行此操作:
ALTER USER user IDENTIFIED WITH mysql_native_password BY 'password';
当然,您可以通过在各自的 CREATE USER
语句中指定插件来设置新用户使用 mysql_native_password
进行身份验证:
CREATE USER user IDENTIFIED WITH mysql_native_password BY 'password';
如果您使用的是 DigitalOcean 托管数据库,请注意,如果您将用户配置为使用 caching_sha2_password
以外的插件进行身份验证,那么您将无法在云控制面板中找到该用户的密码。 因此,您应该确保记下在安全位置使用 mysql_native_password
或其他插件进行身份验证的任何用户的密码。
连接到托管 Redis 数据库
在本地安装 Redis 时,会附带 Redis 命令行界面 redis-cli
。 您可以使用 redis-cli
连接到远程托管 Redis 实例,但它本身不支持 TLS/SSL 连接。 您可以通过多种方式配置 redis-cli
以安全地连接到托管 Redis 实例(例如,通过 配置 TLS 隧道 ),但还有其他具有内置 TLS 支持的 Redis 客户端.
对于 DigitalOcean 托管的 Redis 数据库,我们建议您安装 Redli,一个开源的交互式 Redis 终端。 为此,请导航到 Redli GitHub 项目上的 Releases Page 并找到最新版本的 Assets 表。 在撰写本文时,这将是版本 0.5.2。
在那里,找到以 linux_amd64.tar.gz
结尾的文件的链接。 此链接指向一个称为 tarball 的存档文件,当提取该文件时,它将在您的系统上创建一些文件。 右键单击此链接并选择复制链接地址(此选项可能因您的网络浏览器而异)。
在您的服务器上,移动到您可以写入的目录:
cd /tmp
然后,将链接粘贴到以下 wget
命令中,替换突出显示的 URL。 此命令会将文件下载到您的服务器:
wget https://github.com/IBM-Cloud/redli/releases/download/v0.5.2/redli_0.5.2_linux_amd64.tar.gz
将文件下载到您的服务器后,解压缩 tarball:
tar xvf redli_0.5.2_linux_amd64.tar.gz
这将在您的服务器上创建以下文件:
OutputLICENSE.txt README.md redli
redli
文件是 Redli 二进制文件 。 将其移至 /usr/local/bin
目录,即 Ubuntu 查找可执行文件的位置:
sudo mv redli /usr/local/bin/
此时,您可以稍微清理一下系统并删除 tarball:
rm redli_0.5.2_linux_amd64.tar.gz
现在您可以使用 Redli 连接到您的托管 Redis 实例。 您可以通过运行 redli
命令后跟以下标志来执行此操作:
-h
,要连接的主机。 这可以是主机名或 IP 地址-a
,用于对 Redis 实例进行身份验证的密码-p
,要连接的端口
包含这些标志后,redli
语法将如下所示。 请注意,此示例还包括 --tls
选项,它允许您通过 TLS/SSL 连接到托管 Redis 数据库,而无需隧道:
redli --tls -h host -a password -p port
Redli 相对于 redis-cli
的一个好处是它理解 rediss
协议,该协议用于指定指向 Redis 数据库的 URI。 这允许您使用连接字符串来访问您的数据库:
redli --tls -u rediss://user:password@host:port
请注意,此示例包含 -u
标志,它指定以下参数将是连接 URI。
如果您要连接到 DigitalOcean 托管数据库,您可以在 云控制面板 中找到所有这些连接信息。 单击左侧边栏菜单中的 Databases,然后单击要连接的数据库并向下滚动以找到 Connection Details 部分。 从那里,您可以执行以下操作之一:
- 选择 Connection parameters 选项并将相关字段分别复制到前面详述的
redli
语法中 - 选择 Connection String 选项并复制一个现成的连接 URI,您可以将其与上述连接字符串语法一起使用
- 选择 Flags 选项并复制一个现成的
redli
命令,您可以将其粘贴到终端以建立连接
之后,您可以开始与托管 Redis 实例进行交互。 有关如何使用 Redis 的更多信息,请查看我们关于 如何管理 Redis 数据库 的备忘单系列。
连接到托管 MongoDB 数据库
当您在本地设置 MongoDB 服务器时,它会与一个包一起安装,该包提供一个称为 mongo
shell 的程序。 mongo
shell 是一个基于 JavaScript 的 shell 接口,您可以使用它来管理 Mongo 数据并与之交互。
您可以通过从默认 Ubuntu 存储库下载并安装 mongodb
软件包来安装 mongo
shell 以及完整的 MongoDB 服务器。 但是,在撰写本文时,默认 APT 存储库中可用的 MongoDB 版本是版本 3.6.1。 此版本与撰写本文时的最新稳定版本 4.4.6 有很大不同。
一般来说,旧版本的 mongo
shell 仍然可以与新版本的 MongoDB 服务器一起使用,但是这种版本不匹配可能会导致某些仅在新版本中可用的命令出现问题。
DigitalOcean 托管的 MongoDB 数据库运行 Mongo 的 4.4 版本,其他提供托管 Mongo 数据库即服务的云供应商通常也只提供比 3.6 版本更新的版本。 如果您使用的是 DigitalOcean 托管 MongoDB 数据库或任何运行比默认 Ubuntu 存储库中可用版本更新的版本的托管 MongoDB 数据库,建议您安装匹配版本的 mongo
shell。
获取最新版本的 mongo
shell 软件的一种方法是将 MongoDB 的专用包存储库添加到您的 APT 源。 为此,首先通过运行以下命令导入最新稳定版 MongoDB 的公共 GPG 密钥。 如果您打算使用 4.4 以外的 MongoDB 版本,请务必更改此命令的 URL 部分中的 4.4
以与您要安装的版本保持一致:
curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
cURL 是用于传输数据的许多操作系统上可用的命令行工具。 它读取存储在传递给它的 URL 中的任何数据,并将内容打印到系统的输出。 在前面的示例中,cURL 打印 GPG 密钥文件的内容,然后将其通过管道传送到后续的 sudo apt-key add -
命令中,从而将 GPG 密钥添加到您的受信任密钥列表中。
另外,请注意,此 curl
命令使用选项 -fsSL
,它们一起基本上告诉 cURL 静默失败。 这意味着如果由于某种原因 cURL 无法联系 GPG 服务器或 GPG 服务器已关闭,它不会意外地将生成的错误代码添加到您的受信任密钥列表中。
如果密钥添加成功,此命令将返回 OK
:
OutputOK
如果您想仔细检查是否正确添加了密钥,可以使用以下命令执行此操作:
apt-key list
这将在输出中的某处返回 MongoDB 键:
Output/etc/apt/trusted.gpg -------------------- pub rsa4096 2019-05-28 [SC] [expires: 2024-05-26] 2069 1EEC 3521 6C63 CAF6 6CE1 6564 08E3 90CF B1F5 uid [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com> . . .
此时,您的 APT 安装仍然不知道在哪里可以找到安装最新版本的 mongo
shell 所需的包。
APT 在您的服务器上有两个地方查找要下载和安装的软件包的在线资源:sources.list
文件和 sources.list.d
目录。 sources.list
是一个列出 APT 数据的活动源的文件,每行一个源,最首选的源首先列出。 sources.list.d
目录允许您将此类 sources.list
条目添加为单独的文件。
运行以下命令,将在 sources.list.d
目录中创建一个名为 mongodb-org-4.4.list
的文件。 该文件中唯一的内容是单行读取 deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse
:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
因为这个文件在 /etc/apt/sources.list.d/
目录中,所以 APT 知道在它搜索包的任何时候都要读取它。 此文件中的单行告诉 APT 在远程存储库中查找软件包需要知道什么:
deb
:这意味着源条目引用了一个常规的 Debian 架构。 在其他情况下,该行的这一部分可能显示为deb-src
,这意味着源条目代表 Debian 发行版的源代码。[ arch=amd64,arm64 ]
:这指定应该将 APT 数据下载到哪些架构。 在这种情况下,它指定了amd64
和arm64
架构。https://repo.mongodb.org/apt/ubuntu
:这是一个 URI,表示可以找到 APT 数据的位置。 在这种情况下,URI 指向官方 MongoDB 存储库所在的 HTTPS 地址。bionic/mongodb-org/4.4
:Ubuntu 存储库可以包含多个不同的版本。 这指定您只希望mongodb-org
软件包的4.4
版本可用于 Ubuntu 的bionic
版本(“Bionic Beaver”是 Ubuntu 18.04 的代号)。multiverse
:这部分将 APT 指向四个 Ubuntu 存储库类别或组件之一。 在这种情况下,它指向 多元宇宙组件 。
运行此命令后,更新服务器的本地包索引,以便 APT 知道在哪里可以找到安装 mongo
shell 的包:
sudo apt update
之后,您可以安装 mongodb-org-shell
包来安装 mongo
shell:
sudo apt install mongodb-org-shell
安装后,您可以使用 mongo
shell 连接到托管的 MongoDB 实例。 执行此操作的一种方法是调用 mongo
命令并在其后使用连接 URI 作为参数。 但是,需要注意的是,如果您使用连接 URI 来访问托管的 MongoDB 实例,则必须将连接字符串用引号括起来,如下例所示:
mongo "mongodb://username:password@managed_db_hostname_or_URL:port/connection_options"
此示例 MongoDB 连接 URI 包含以下元素:
mongodb://
:此前缀指定其后面的元素遵循 MongoDB 的连接 URI 格式username
:你的 MongoDB 用户名password
:您的 MongoDB 用户密码managed_db_hostname_or_URL
:可以访问你的MongoDB数据库的主机port
:运行托管 MongoDB 实例的端口号。 仅当您的数据库在 Mongo 默认端口27017
以外的端口上运行时,才需要包含此内容connection_options
:附加连接选项
此外,一些云提供商(包括 DigitalOcean)要求您使用加密的 TLS 连接连接到托管的 MongoDB 数据库。 为此,您必须在连接 URI 后面加上 --tls
选项——它告诉 MongoDB 客户端使用 TLS 加密连接到托管数据库——以及必须遵循的 --tlsCAFile
选项通过指向有效 CA 证书的文件路径。
包含这些附加选项后,mongo
语法将如下所示:
mongo "mongodb://username:password@managed_db_hostname_or_URL:port/connection_options" --tls --tlsCAFile /path/to/CA/file
如果您从 DigitalOcean 连接到托管 MongoDB 数据库,您可以在 云控制面板 中找到所有这些连接信息。 单击左侧边栏菜单中的 Databases,然后单击要连接的 Mongo 数据库并向下滚动以找到 Connection Details 部分。 从那里,您可以执行以下操作之一:
- 选择 Connection parameters 选项并将相关字段分别复制到前面详述的
mongo
语法中 - 选择 Connection String 选项并复制一个现成的连接 URI,您可以将其与前面概述的连接字符串语法一起使用
- 选择 Flags 选项并复制一个现成的
mongo
命令,您可以将其粘贴到终端以建立连接
您还必须将托管 MongoDB 数据库的 CA 证书添加到要连接的机器上。 为此,请单击 连接详细信息 部分中的 ⤓ 下载 CA 证书 链接,这会将证书下载到本地计算机。 如果要从虚拟专用服务器连接到数据库,则可以使用 scp
之类的工具将证书传输到服务器:
scp ~/local/path/to/CA/certificate sammy@your_server_ip
从您用来连接到托管 MongoDB 数据库的任何机器上,按照连接 URI 和 --tls
选项、--tlsCAFile
选项和前面示例中概述的 CA 证书文件路径。
之后,您可以开始与托管的 MongoDB 实例进行交互。 有关如何使用 Mongo 的更多信息,我们鼓励您查看我们的 MongoDB 相关内容的完整集合 。
结论
作为云服务的一项相对较新的发展,许多以自我管理数据库而闻名的实践并未针对云提供商管理的数据库进行广泛或全面的记录。 这些实践中最基本的一种方法是访问数据库,对于那些刚接触托管数据库的人来说,可能并不会立即清楚。 我们本教程的目标是帮助您开始使用托管数据库存储数据。
有关使用数据库的更多信息,我们鼓励您查看我们的各种 数据库相关内容 ,包括直接关注 PostgreSQL、MySQL、[ X205X]Redis 和 MongoDB。
要了解有关 DigitalOcean 托管数据库的更多信息,请查看我们的 托管数据库产品文档 。