Ubuntu18.04で管理対象データベースに接続する方法
序章
管理対象データベースには、自動更新、簡素化されたスケーリング、高可用性など、自己管理型データベースに比べて多くの利点があります。 管理対象データベースの操作に慣れていない場合、データベースへの接続など、特定のタスクを実行するための最良の方法は自明ではない場合があります。
このガイドでは、 PostgreSQL 、 MySQL 、 Redis 、 MongoDB [などのさまざまなデータベース管理システム(DBMS)用のクライアントプログラムをインストールする方法の概要を説明します。 X184X] —Ubuntu18.04サーバー上。 また、これらのプログラムを使用して管理対象データベースインスタンスに接続する方法についても説明します。
注:このガイドで概説されている手順は、 DigitalOceanマネージドデータベースでテストされていますが、通常、クラウドプロバイダーのマネージドデータベースで機能するはずです。 ただし、別のプロバイダーからプロビジョニングされたデータベースへの接続で問題が発生した場合は、そのプロバイダーのドキュメントを参照してください。
前提条件
このガイドで詳しく説明されている手順に従うには、次のものが必要です。
- Ubuntu18.04を実行しているサーバーへのアクセス。 このサーバーには、管理者権限を持つroot以外のユーザーと、
ufw
で構成されたファイアウォールが必要です。 これを設定するには、 Ubuntu18.04の初期サーバーセットアップガイドに従ってください。 - 管理対象データベースインスタンス。 このチュートリアルでは、さまざまなデータベース管理システム、特にPostgreSQL、MySQL、Redis、MongoDBに接続する方法について説明します。 DigitalOceanマネージドデータベースをプロビジョニングするには、選択したDBMSのドキュメントを確認してください。
- PostgreSQL
これらの前提条件が整ったら、データベース管理システム(DBMS)に対応するセクションにジャンプします。
マネージドPostgreSQLデータベースへの接続
マネージドPostgreSQLデータベースに接続するには、Postgresの標準コマンドラインクライアントであるpsql
を使用できます。 これはオープンソースであり、PostgreSQL開発グループによって維持されており、通常、PostgreSQLサーバーをインストールするときに含まれます。
psql
は、APTでpostgresql-client
パッケージをインストールすることで単独でインストールできますが、デフォルトのUbuntu 18.04リポジトリからインストールすると、psql
、PostgreSQLの最新のメジャーバージョンはバージョン13です。 一部のマネージドデータベースプロバイダーは、データベースで使用するPostgreSQLのバージョンにさまざまなオプションを提供しています。 この記事の執筆時点で、DigitalOceanは、マネージドPostgreSQLデータベース用にバージョン10から13を提供しています。
一般に、データベースのバージョンと一致しないバージョンのpsql
を引き続き使用できます。 ただし、psql
のバージョンがPostgresデータベースのバージョンよりも古い場合、新しいデータベースバージョンに含まれている特定の機能を使用できない場合があります。
psql
クライアントの特定のバージョンをインストールする1つの方法は、公式のPostgreSQLAPTリポジトリをコンピューターの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がダウンロードおよびインストールするパッケージのオンラインソースを探す場所は2つあります。sources.list
ファイルとsources.list.d
ディレクトリで、どちらも[にあります。 X194X]ディレクトリ。 sources.list
は、APTデータのアクティブなソースをリストするファイルで、1行に1つのソースがあり、最も優先されるソースが最初にリストされています。 sources.list.d
ディレクトリでは、このようなsources.list
エントリを個別のファイルとして追加できます。
次のコマンドを実行すると、sources.list.d
ディレクトリにpdgd.list
という名前のファイルが作成されます。 このファイルの唯一の内容は、deb https://apt.postgresql.org/pub/repos/apt bionic-pgdg main
を読み取る1行です。
echo "deb https://apt.postgresql.org/pub/repos/apt bionic-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list
この1行は、ソースが何であるか、およびソースがどこにあるかについて知る必要があるすべてをAPTに伝えます。
deb
:これは、ソースエントリが通常のDebianアーキテクチャを参照していることを意味します。 その他の場合、行のこの部分はdeb-src
と表示されることがあります。これは、ソースエントリがDebianディストリビューションのソースコードを表すことを意味します。https://apt.postgresql.org/pub/repos/apt
:これはAPTデータが見つかる場所を指すURIです。 この場合、URIは公式のPostgreSQLリポジトリが配置されているHTTPSアドレスを指します。bionic-pgdg
:Ubuntuリポジトリには複数のリリースのパッケージを含めることができます。 行のこの部分は、APTがUbuntuのbionic
リリースからのみファイルをダウンロードする必要があることを指定しています(「BionicBeaver」はUbuntu 18.04のコードネームです)。 また、このリポジトリは、すべてのリリース名の末尾に-pgdg
(「PostgreSQLグローバル開発グループ」の略)を追加することに注意してください。main
:この部分は、APTが4つのUbuntuリポジトリコンポーネントの1つを指していることを示しています。 この場合は、メインコンポーネントを指しています。
このコマンドを実行した後、サーバーのローカルパッケージインデックスを更新して、APTがpsql
シェルをインストールするパッケージの場所を認識できるようにします。
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(URI)を提供している場合は、次の構文を使用できます。
psql postgresql://username:password@host:port/database?option_1=value&option_n=value
DigitalOceanマネージドPostgreSQLデータベースに接続している場合、この接続情報はすべてクラウドコントロールパネルにあります。 左側のサイドバーメニューでデータベースをクリックし、接続するデータベースをクリックして下にスクロールし、接続の詳細セクションを見つけます。 そこから、次のいずれかを実行します。
- 接続パラメータオプションを選択し、関連するフィールドを個別に
psql
構文にコピーします。 - 接続文字列オプションを選択し、上記の接続URI構文に貼り付けることができる既製の接続URIをコピーします
- Flags オプションを選択し、すぐに使用できる
psql
コマンドをコピーして、端末に貼り付けて接続します。
これで、マネージドPostgreSQLインスタンスの使用を開始する準備が整いました。 PostgreSQLとの対話方法の詳細については、SQLデータベースの管理方法に関するガイドに従ってください。 PostgreSQLのクエリの概要も役立つ場合があります。
マネージドMySQLデータベースへの接続
管理対象のMySQLデータベースにアクセスするには、接続を計画しているマシンにMySQLクライアントをインストールする必要があります。 MySQLコマンドラインクライアントが提供するmysql
コマンドを使用して接続することは可能ですが、このコマンドは接続文字列をサポートしていません。 接続方法の柔軟性を高めるために、代わりにmysqlsh
コマンドを使用することをお勧めします。これにより、公式の MySQL Shell を使用できるようになります。これにより、フラグまたは接続URI。
DigitalOceanマネージドMySQLデータベースにアクセスするには、MySQLシェルのバージョン8.0以降をインストールする必要があります。 そのためには、mysql-shell
パッケージをインストールする前に、まずMySQLソフトウェアリポジトリを追加する必要があります。
WebブラウザでMySQLAPTリポジトリページに移動することから始めます。 右下隅にあるダウンロードボタンを見つけて、クリックして次のページに進みます。 このページでは、OracleWebアカウントにログインまたはサインアップするように求められます。 それをスキップして、代わりにというリンクを探すことができます。いいえ、ダウンロードを開始してください。 リンクを右クリックして、リンクアドレスのコピーを選択します(このオプションは、ブラウザによって異なる表現になる場合があります)。
これで、ファイルをダウンロードする準備が整いました。 サーバー上で、書き込み可能なディレクトリに移動します。 /tmp/
は、Linuxシステムにある一時的なディレクトリであり、通常、デフォルトで普遍的に書き込み可能です。
cd /tmp
curl
を使用してファイルをダウンロードします。次のコマンドで強調表示されている部分の代わりに、コピーしたばかりのアドレスを貼り付けることを忘れないでください。 また、2つのコマンドラインフラグを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 . . .
これで、MySQLAPTリポジトリをシステムのリポジトリリストに追加できます。 dpkg
コマンドは、.deb
ソフトウェアパッケージのインストール、削除、および検査に使用されます。 次のコマンドには、-i
フラグが含まれており、指定されたファイルからインストールすることを示します。
sudo dpkg -i mysql-apt-config*
インストール中に、希望するMySQLのバージョンを指定できる構成画面と、他のMySQL関連ツールのリポジトリをインストールするオプションが表示されます。 デフォルトでは、MySQLの最新の安定バージョンのリポジトリ情報のみが追加されます。 これが必要なので、下矢印を使用してOk
メニューオプションに移動し、ENTER
をクリックします。
その後、パッケージはリポジトリの追加を終了します。 apt
パッケージキャッシュを更新して、新しいソフトウェアパッケージを利用できるようにします。
sudo apt update
次に、システムを少しクリーンアップして、ダウンロードしたファイルを削除できます。これは、今後必要なくなるためです。 /tmp/
ディレクトリに書き込まれたファイルは10日後に自動的に削除されるため、これは厳密には必要ありませんが、次のコマンドを使用してファイルを削除できます。
rm mysql-apt-config*
注:これらのリポジトリの構成を更新する必要がある場合は、次のコマンドを実行して新しいオプションを選択してください。
sudo dpkg-reconfigure mysql-apt-config
新しいオプションを選択した後、次のコマンドを実行してパッケージキャッシュを更新します。
sudo apt update
MySQLリポジトリを追加したので、実際のMySQLShellソフトウェアをインストールする準備が整いました。 次の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の3つのモードのいずれかで開きます。 SQLモードでは、SQLを使用してデータのクエリと操作を行ったり、データベース、テーブル、グループなど、データの保存と管理に必要なものを作成したりできるセッションが開きます。 JavaScriptモードとPythonモードでは、それぞれの言語で使用可能な関数を使用して、多数のセッションオブジェクトを作成できます。 これにより、同じMySQLシェルインスタンスから複数の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マネージドデータベースに接続している場合、この接続情報はすべてクラウドコントロールパネルにあります。 左側のサイドバーメニューでデータベースをクリックし、接続するデータベースをクリックして下にスクロールし、接続の詳細セクションを見つけます。 そこから、次のいずれかを実行します。
- 接続パラメータオプションを選択し、関連するフィールドを前述の
mysqlsh
構文に個別にコピーします - 接続文字列オプションを選択し、上記の接続文字列コマンドに貼り付けることができる既製の接続URIをコピーします
これで、マネージドMySQLインスタンスの使用を開始する準備が整いました。
MySQLシェルを初めて使用する場合は、接続を閉じるために、他のMySQLクライアントで使用されているexit
コマンドが機能しないことに注意してください。 代わりに、\q
ショートカットを実行できます。
\q
OutputBye!
MySQLとの対話方法の詳細については、SQLデータベースの管理方法に関するガイドを読むことをお勧めします。 また、MySQLのクエリの概要が役立つ場合があります。
MySQL8でのパスワード認証に関する注意
MySQL 8.0以降では、デフォルトの認証プラグインはcaching_sha2_password
です。 ただし、この記事の執筆時点では、PHPはcaching_sha2_password
をサポートしていません。 管理対象のMySQLデータベースをWordPressやphpMyAdminなどのPHPを使用するアプリケーションで使用する場合、アプリケーションがデータベースに接続しようとしたときに問題が発生する可能性があります。
データベースの構成ファイルにアクセスできる場合は、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インスタンスに安全に接続するようにredis-cli
を構成する方法はいくつかありますが(たとえば、 TLSトンネルを構成する)、TLSサポートが組み込まれている代替のRedisクライアントがあります。
DigitalOceanマネージドRedisデータベースの場合、オープンソースのインタラクティブなRedisターミナルであるRedliをインストールすることをお勧めします。 これを行うには、Redli GitHubプロジェクトのリリースページに移動し、最新リリースのAssetsテーブルを見つけます。 この記事の執筆時点では、これはバージョン0.5.2になります。
そこで、linux_amd64.tar.gz
で終わるファイルのリンクを見つけます。 このリンクは、 tarball と呼ばれるアーカイブファイルを指しており、解凍すると、システム上にいくつかのファイルが作成されます。 このリンクを右クリックして、リンクアドレスのコピーを選択します(このオプションは、Webブラウザによって異なる場合があります)。
サーバーで、書き込み可能なディレクトリに移動します。
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バイナリファイルです。 Ubuntuが実行可能ファイルを探す場所である/usr/local/bin
ディレクトリに移動します。
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
より優れている点の1つは、Redisデータベースを指すURIを指定するために使用されるrediss
プロトコルを理解することです。 これにより、接続文字列を使用してデータベースにアクセスできます。
redli --tls -u rediss://user:password@host:port
この例には、-u
フラグが含まれていることに注意してください。このフラグは、次の引数が接続URIになることを指定します。
DigitalOceanマネージドデータベースに接続している場合、この接続情報はすべてクラウドコントロールパネルにあります。 左側のサイドバーメニューでデータベースをクリックし、接続するデータベースをクリックして下にスクロールし、接続の詳細セクションを見つけます。 そこから、次のいずれかを実行します。
- 接続パラメータオプションを選択し、関連するフィールドを個別に
redli
構文にコピーします。 - 接続文字列オプションを選択し、上記の接続文字列構文で使用できる既製の接続URIをコピーします
- Flags オプションを選択し、すぐに使用できる
redli
コマンドをコピーして、端末に貼り付けて接続します。
その後、マネージドRedisインスタンスとの対話を開始できます。 Redisの操作方法の詳細については、Redisデータベースの管理方法に関する一連のチートシートを確認してください。
マネージドMongoDBデータベースへの接続
MongoDBサーバーをローカルにセットアップすると、mongo
シェルと呼ばれるプログラムを提供するパッケージと一緒にインストールされます。 mongo
シェルは、JavaScriptベースのシェルインターフェイスであり、Mongoデータの管理と操作に使用できます。
デフォルトのUbuntuリポジトリからmongodb
パッケージをダウンロードしてインストールすることにより、完全なMongoDBサーバーとともにmongo
シェルをインストールできます。 ただし、この記事の執筆時点では、デフォルトのAPTリポジトリから利用できるMongoDBのバージョンはバージョン3.6.1です。 このリリースは、この記事の執筆時点での最新の安定版リリースであるバージョン4.4.6とは大幅に異なります。
一般に、古いバージョンのmongo
シェルは新しいバージョンのMongoDBサーバーでも機能しますが、このようなバージョンの不一致により、新しいリリースでのみ使用できる特定のコマンドで問題が発生する可能性があります。
DigitalOceanマネージドMongoDBデータベースはMongoのバージョン4.4を実行し、マネージドMongoデータベースをサービスとして提供する他のクラウドベンダーも通常、バージョン3.6よりも新しいリリースのみを提供します。 DigitalOceanマネージドMongoDBデータベース、またはデフォルトのUbuntuリポジトリで利用可能なバージョンよりも新しいバージョンを実行するマネージドMongoDBデータベースを使用している場合は、一致するバージョンのmongo
シェルをインストールすることをお勧めします。
mongo
シェルソフトウェアの最新バージョンを入手する1つの方法は、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 <[email protected]> . . .
この時点では、APTインストールは、最新バージョンのmongo
シェルをインストールするために必要なパッケージの場所をまだ認識していません。
サーバー上で、APTがダウンロードおよびインストールするパッケージのオンラインソースを探す場所は、sources.list
ファイルとsources.list.d
ディレクトリの2つです。 sources.list
は、APTデータのアクティブなソースをリストするファイルで、1行に1つのソースがあり、最も優先されるソースが最初にリストされています。 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
を読み取る1行です。
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はパッケージを検索するたびにこのファイルを読み取ることを認識しています。 このファイルの1行は、リモートリポジトリでパッケージを見つけるために知っておくべきことをAPTに伝えます。
deb
:これは、ソースエントリが通常のDebianアーキテクチャを参照していることを意味します。 その他の場合、行のこの部分はdeb-src
と表示されることがあります。これは、ソースエントリがDebianディストリビューションのソースコードを表すことを意味します。[ arch=amd64,arm64 ]
:これは、APTデータをダウンロードするアーキテクチャを指定します。 この場合、amd64
およびarm64
アーキテクチャを指定します。https://repo.mongodb.org/apt/ubuntu
:これはAPTデータを見つけることができる場所を表すURIです。 この場合、URIは公式のMongoDBリポジトリが配置されているHTTPSアドレスを指します。bionic/mongodb-org/4.4
:Ubuntuリポジトリにはいくつかの異なるリリースを含めることができます。 これは、Ubuntuのbionic
リリースで使用可能なmongodb-org
パッケージのバージョン4.4
のみが必要であることを指定します(「BionicBeaver」はUbuntu 18.04のコードネームです)。multiverse
:この部分は、APTが4つのUbuntuリポジトリカテゴリまたはコンポーネントの1つを指していることを示しています。 この場合、それはマルチバースコンポーネントを指しています。
このコマンドを実行した後、サーバーのローカルパッケージインデックスを更新して、APTがmongo
シェルをインストールするパッケージの場所を認識できるようにします。
sudo apt update
その後、mongodb-org-shell
パッケージをインストールして、mongo
シェルをインストールできます。
sudo apt install mongodb-org-shell
インストールしたら、mongo
シェルを使用してマネージドMongoDBインスタンスに接続できます。 これを行う1つの方法は、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
オプション(TLS暗号化を使用して管理対象データベースに接続するようにMongoDBクライアントに指示する)と、従う必要のある--tlsCAFile
オプションを使用する必要があります。有効なCA証明書を指すファイルパスによって。
これらの追加オプションを含めると、mongo
構文は次のようになります。
mongo "mongodb://username:password@managed_db_hostname_or_URL:port/connection_options" --tls --tlsCAFile /path/to/CA/file
DigitalOceanからマネージドMongoDBデータベースに接続している場合、この接続情報はすべてクラウドコントロールパネルにあります。 左側のサイドバーメニューでデータベースをクリックし、接続するMongoデータベースをクリックして下にスクロールし、接続の詳細セクションを見つけます。 そこから、次のいずれかを実行します。
- 接続パラメータオプションを選択し、関連するフィールドを個別に
mongo
構文にコピーします。 - 接続文字列オプションを選択し、前に概説した接続文字列構文で使用できる既製の接続URIをコピーします
- Flags オプションを選択し、すぐに使用できる
mongo
コマンドをコピーして、端末に貼り付けて接続します。
また、接続元のマシンにマネージドMongoDBデータベースのCA証明書を追加する必要があります。 これを行うには、接続の詳細セクションの⤓CA証明書のダウンロードリンクをクリックします。これにより、証明書がローカルマシンにダウンロードされます。 仮想プライベートサーバーからデータベースに接続する場合は、scp
などのツールを使用して証明書をサーバーに転送できます。
scp ~/local/path/to/CA/certificate sammy@your_server_ip
管理対象MongoDBデータベースへの接続に使用するマシンから、前の例で概説したように、--tls
オプション、--tlsCAFile
オプション、およびCA証明書のファイルパスを使用して接続URIに従います。
その後、マネージドMongoDBインスタンスとの対話を開始できます。 Mongoの操作方法の詳細については、MongoDB関連コンテンツの完全なコレクションを確認することをお勧めします。
結論
クラウドサービスの比較的新しい開発として、自己管理データベースでよく知られている多くのプラクティスは、クラウドプロバイダーによって管理されるデータベースについて広くまたは包括的に文書化されていません。 これらのプラクティスの最も基本的なものの1つであるデータベースへのアクセスは、管理対象データベースの操作に不慣れな人にはすぐにはわからない場合があります。 このチュートリアルの目標は、データの保存にマネージドデータベースの使用を開始するときに役立つことです。
データベースの操作の詳細については、 PostgreSQL 、 MySQL 、[ X205X] Redis 、およびMongoDB。
DigitalOceanマネージドデータベースの詳細については、マネージドデータベースの製品ドキュメントをご覧ください。