Ubuntu 18.04で管理対象データベースに接続する方法

前書き

https://www.digitalocean.com/community/tutorials/understanding-managed-databases [管理されたデータベース]は、自動更新、簡素化されたスケーリング、高可用性など、自己管理されたデータベースに比べて多くの利点があります。 ただし、管理されたデータベースを初めて使用する場合、特定のタスク(データベースへの接続など)を実行する最善の方法は自明ではない場合があります。

このガイドでは、https://www.postgresql.org/ [PostgreSQL]、https://www.mysql.com/ [ MySQL]、およびhttps://redis.io/[Redis]、Ubuntu 18.04サーバー。 また、これらのプログラムを使用してマネージドデータベースインスタンスに接続する方法についても説明します。

前提条件

このガイドで説明されている手順に従うには、次のものが必要です。

  • Ubuntu 18.04を実行しているサーバーへのアクセス。 このサーバーには、管理権限を持つ非rootユーザーと、「+ ufw +」で設定されたファイアウォールが必要です。 これを設定するには、https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04 [Ubuntu 18.04の初期サーバーセットアップガイド]に従ってください。

  • 管理されたデータベースインスタンス。 このチュートリアルでは、さまざまなデータベース管理システム、特にPostgreSQL、MySQL、Redisに接続する方法について説明します。 DigitalOcean Managed Databaseをプロビジョニングするには、選択したDBMSのドキュメントを確認してください。

  • PostgreSQL

  • MySQL

  • Redis

これらを配置したら、DBMSと一致するセクションにジャンプします。

管理されたPostgreSQLデータベースへの接続

管理されたPostgreSQLデータベースに接続するには、Postgresの標準コマンドラインクライアントである `+ psql `を使用できます。 これはオープンソースであり、PostgreSQL Development Groupによって管理されており、通常、PostgreSQLサーバーをダウンロードするときに含まれます。 ただし、APTで ` postgresql-client `パッケージをインストールすることで、 ` psql +`を単独でインストールできます。

最近行っていない場合は、サーバーのパッケージインデックスを更新します。

sudo apt update

次に、次のコマンドを実行して `+ psql +`をインストールします。

sudo apt install postgresql-client

APTは、パッケージをインストールすることを確認するように求めます。 これを行うには、「+ ENTER」を押します。

その後、追加の設定を行うことなく、管理対象のPostgresデータベースに接続できます。 たとえば、次のフラグを使用して `+ psql +`を呼び出すことができます。

  • 「+ -U +」、接続するPostgreSQLユーザー

  • + -h +、管理対象データベースのホスト名またはIPアドレス

  • + -p +、管理対象データベースが接続をリッスンしているTCPポート

  • 「+ -d +」、接続する特定のデータベース

  • 「変数」の略語である「+ -v 」は、他の接続変数の前に等号( ` = `)と変数の値が続きます。 たとえば、接続時にデータベースのCA証明書を検証する場合は、コマンドに ` -v sslmode = require +`を含めます

  • + -W +。これは、 `+ psql `にPostgreSQLユーザーのパスワードの入力を求めるよう指示します。 ` psql `コマンドの前に ` PGPASSWORD = +`を付けることもできますが、通常はコマンドラインにパスワードを含めない方が安全であると考えられていることに注意してください

これらのフラグを含めると、 `+ psql`コマンドの構文は次のようになります。

psql -U  -h  -p  -d  -v = -W

または、マネージデータベースプロバイダーが接続用にhttps://en.wikipedia.org/wiki/Uniform_Resource_Identifier[uniform resource identifer](URI)を提供している場合、次の構文を使用できます。

psql postgresql://:@:/?=&=

これで、マネージPostgreSQLインスタンスで使用を開始する準備が整いました。 PostgreSQLとの対話方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-manage-sql-database-cheat-sheet [SQLデータベースの管理方法]のガイドを参照してください。 また、https://www.digitalocean.com/community/tutorials/introduction-to-queries-postgresql [PostgreSQLのクエリの紹介]も便利です。

管理されたMySQLデータベースへの接続

管理されたMySQLデータベースに接続するには、公式のMySQLデータベースクライアントを使用できます。 Ubuntuでは、このクライアントは通常、APTを介して `+ mysql-client +`パッケージをダウンロードすることによりインストールされます。 ただし、デフォルトのUbuntuリポジトリを使用している場合、プログラムのバージョン5.7がインストールされます。

DigitalOcean Managed MySQLデータベースにアクセスするには、バージョン8.0以降をインストールする必要があります。 これを行うには、パッケージをインストールする前に、最初にMySQLソフトウェアリポジトリを追加する必要があります。

まず、Webブラウザーでhttps://dev.mysql.com/downloads/repo/apt/[MySQL APTリポジトリ*ページ]に移動します。 右下隅にある[ダウンロード]ボタンを見つけて、クリックして次のページに進みます。 このページでは、ログインするか、Oracle Webアカウントにサインアップするよう求められます。 それをスキップして、代わりに*いいえ、リンクを探してください。ダウンロードを開始してください。 リンクを右クリックし、[リンクアドレスのコピー]を選択します(このオプションは、ブラウザによって異なる表現になる場合があります)。

これで、ファイルをダウンロードする準備ができました。 サーバーで、書き込み可能なディレクトリに移動します。

cd /tmp

`+ curl `を使用してファイルをダウンロードし、次のコマンドの強調表示された部分の場所にコピーしたアドレスを忘れずに貼り付けます。 また、2つのコマンドラインフラグを ` curl `に渡す必要があります。 ` -O `は、標準出力ではなくファイルに出力するように ` curl `に指示します。 ` L `フラグは ` curl +`がHTTPリダイレクトに従うようにします。これは、コピーしたアドレスが実際にファイルをダウンロードする前に別の場所にリダイレクトするため、この場合に必要です。

curl -OL

これで、ファイルが現在のディレクトリにダウンロードされます。 ファイルをリストして確認してください:

ls

出力にファイル名がリストされます:

Outputmysql-apt-config__all.deb
. . .

これで、MySQL APTリポジトリをシステムのリポジトリリストに追加できます。 `+ .deb `ソフトウェアパッケージをインストール、削除、検査するには、 ` dpkg `コマンドを使用します。 次のコマンドには、指定されたファイルからインストールすることを示す「 -i +」フラグが含まれています。

sudo dpkg -i mysql-apt-config*

インストール中に、他のMySQL関連ツールのリポジトリをインストールするオプションとともに、希望するMySQLのバージョンを指定できる設定画面が表示されます。 デフォルトでは、MySQLの最新の安定バージョンのリポジトリ情報のみが追加されます。 これが必要なものなので、下矢印を使用して「+ Ok 」メニューオプションに移動し、「 ENTER +」を押します。

image:https://assets.digitalocean.com/articles/pma_managed_db/dpkg_mysql_apt_config_alt2.png [mysql-apt-config構成オプションの選択]

その後、パッケージはリポジトリの追加を完了します。 `+ apt +`パッケージキャッシュを更新して、新しいソフトウェアパッケージを利用できるようにします。

sudo apt update

次に、システムを少しクリーンアップして、ダウンロードしたファイルを削除することができます。これは今後必要にならないためです。

rm mysql-apt-config*

MySQLリポジトリを追加したので、実際のMySQLクライアントソフトウェアをインストールする準備ができました。 次の `+ apt +`コマンドを使用してください。

sudo apt install mysql-client

そのコマンドが終了したら、ソフトウェアのバージョン番号をチェックして、最新のリリースがあることを確認します。

mysql --version
Outputmysql  Ver -cluster for Linux on x86_64 (MySQL Community Server - GPL)

`+ mysql-client `パッケージをインストールした後、次のフラグを引数として ` mysql +`コマンドを実行することで管理データベースにアクセスできます。

  • 「+ -u +」、接続するMySQLユーザー

  • 「+ -p 」は、ユーザーのパスワードの入力を求めるように「 mysql 」に指示します。 ` -p `フラグに続く接続コマンドにパスワードを直接含めることができます( ` -p +`のようにスペースなしで)が、セキュリティ上の理由から、これは一般的に推奨されません

  • + -h +、データベースのホスト名またはIPアドレス

  • + -P +、MySQLが接続を待機しているTCPポート

  • 「+ -D +」、接続する特定のデータベース

これらのフラグを使用すると、 `+ mysql`構文は次のようになります。

mysql -u  -p -h  -P  -D

あるいは、接続に使用できる接続URIがある場合は、次のような構文を使用します。

mysql mysql://:@:/?=&=

これで、管理されたMySQLインスタンスで使用を開始する準備が整いました。 MySQLと対話する方法の詳細については、https://www.digitalocean.com/community/tutorials/how-to-manage-sql-database-cheat-sheet [SQLデータベースの管理方法]のガイドを参照してください。 また、https://www.digitalocean.com/community/tutorials/introduction-to-queries-mysql [MySQLのクエリの概要]が役立つ場合があります。

MySQL 8のパスワード認証に関する注意

MySQL 8.0以降では、デフォルトの認証プラグインは `+ caching_sha2_password `です。 この記事の執筆時点では、PHPは ` caching_sha2_password`をサポートしていません。 WordPressやphpMyAdminなどのPHPを使用するアプリケーションでマネージMySQLデータベースを使用する予定がある場合、アプリケーションがデータベースに接続しようとすると問題が発生する可能性があります。

データベースの設定ファイルにアクセスできる場合は、PHPでサポートされている認証プラグインを使用するように強制する設定を追加できます-たとえば、デフォルトで + mysql_native_password +-

MySQL構成ファイルの例

[mysqld]
default-authentication-plugin=

ただし、DigitalOceanを含む一部のマネージドデータベースプロバイダーは、データベース構成ファイルをエンドユーザーが使用できないようにします。 この場合、データベースに接続して、データベースに接続する必要がある既存のMySQLユーザーに対して `+ ALTER USER `コマンドを実行できますが、 ` caching_sha2_password +`プラグインでは実行できません。

ALTER USER  IDENTIFIED WITH mysql_native_password BY '';

もちろん、それぞれの `+ CREATE USER `ステートメントでプラグインを指定することで、 ` mysql_native_password +`で認証するように新しいユーザーを設定できます。

CREATE USER  IDENTIFIED WITH mysql_native_password BY '';

DigitalOcean Managed Databaseを使用している場合、「+ caching_sha2_password 」以外のプラグインで認証するようにユーザーを設定すると、クラウドコントロールパネルでそのユーザーのパスワードが表示されないことに注意してください。 このため、安全な場所にある ` mysql_native_password +`またはその他のプラグインで認証するユーザーのパスワードを書き留めてください。

管理されたRedisデータベースへの接続

Redisをローカルにインストールすると、Redisコマンドラインインターフェイスである `+ redis-cli `が付属します。 ` redis-cli `を使用して、リモートの管理されたRedisインスタンスに接続できますが、TLS / SSL接続をネイティブでサポートしていません。 管理されたRedisインスタンスに安全に接続するように「 redis-cli +」を設定する方法があります(たとえば、https://www.digitalocean.com/community/tutorials/how-to-connect-to-managed-redisによって-over-tls-with-stunnel-and-redis-cli [TLSトンネルの構成])が、組み込みのTLSサポートを持つ代替Redisクライアントがあります。

DigitalOcean Managed Redisデータベースの場合、オープンソースの対話型RedisターミナルであるRedliをインストールすることをお勧めします。 これを行うには、Redli GitHubプロジェクトのhttps://github.com/IBM-Cloud/redli/releases[Releases Page *]に移動し、最新リリースの Assets *テーブルを見つけます。 これを書いている時点で、これはバージョン0.4.4になります。

そこで、「+ linux_amd64.tar.gz +」で終わるファイルへのリンクを見つけます。 このリンクは、_tarball_と呼ばれるアーカイブファイルを指します。これは、抽出されると、システム上にいくつかのファイルを作成します。 このリンクを右クリックして、[リンクアドレスのコピー]を選択します(このオプションはWebブラウザーによって異なる場合があります)。

サーバーで、書き込み可能なディレクトリに移動します。

cd /tmp

次に、次の「+ wget +」コマンドにリンクを貼り付けて、強調表示されたURLを置き換えます。 このコマンドは、サーバーにファイルをダウンロードします。

wget

ファイルがサーバーにダウンロードされたら、tarballを抽出します。

tar xvf redli__linux_amd64.tar.gz

これにより、サーバー上に次のファイルが作成されます。

OutputLICENSE.txt
README.md
redli

`+ redli `ファイルはRedli https://en.wikipedia.org/wiki/Binary_file[_binary file_]です。 Ubuntuが実行可能ファイルを探す場所である ` / usr / local / bin`ディレクトリに移動します。

sudo mv redli /usr/local/bin/

この時点で、システムを少しクリーンアップしてtarballを削除できます。

rm redli__linux_amd64.tar.gz

これで、Redliを使用して管理対象のRedisインスタンスに接続できます。 これを行うには、 `+ redli +`コマンドの後にこれらのフラグを続けます。

  • + -h +、接続するホスト。 これはホスト名またはIPアドレスのいずれかです

  • + -a +、Redisインスタンスへの認証に使用されるパスワード

  • + -p +、接続するポート

これらのフラグを含めると、 `+ redli `構文は次のようになります。 この例には、「-tls +」オプションも含まれていることに注意してください。これにより、トンネルを使用せずにTLS / SSL経由で管理対象のRedisデータベースに接続できます。

redli --tls -h  -a  -p

Redliが `+ redis-cli `よりも優れている点の1つは、Redisデータベースを指すURIを指定するために使用される ` rediss +`プロトコルを理解できることです。 これにより、接続文字列を使用してデータベースにアクセスできます。

redli --tls -u rediss://:@:

この例には、次の引数が接続URIになることを指定する `+ -u +`フラグが含まれていることに注意してください。

その後、管理対象のRedisインスタンスとの対話を開始できます。 Redisの使用方法の詳細については、https://www.digitalocean.com/community/tutorial_series/how-to-manage-a-redis-databaseのシリーズまたはチートシートを参照してください[Redisデータベースの管理方法] 。

結論

クラウドサービスの比較的新しい開発として、自己管理データベースでよく知られている多くのプラクティスは、クラウドプロバイダーが管理するデータベースについて広くまたは包括的に文書化されていません。 これらのプラクティスの最も基本的なものの1つであるデータベースへのアクセスは、管理されたデータベースを使用するのが初めての人にはすぐにはわからないかもしれません。 このチュートリアルの目標は、データを保存するために管理されたデータベースを使用し始めるときに、開始するのに役立つことです。

データベースの操作の詳細については、httpsに直接焦点を当てたチュートリアルなど、さまざまなhttps://www.digitalocean.com/community/tags/databases?type=tutorials [データベース関連コンテンツ]を確認することをお勧めします。 //www.digitalocean.com/community/tags/postgresql?type=tutorials[PostgreSQL]、https://www.digitalocean.com/community/tags/mysql?type=tutorials[MySQL]、およびhttps:// www .digitalocean.com / community / tags / redis?type = tutorials [Redis]。

DigitalOcean Managed Databasesの詳細については、https://www.digitalocean.com/docs/databases/ [Managed Databases製品ドキュメント]をご覧ください。

前の投稿:Ubuntu 16.04でDjangoをインストールして開発環境をセットアップする方法
次の投稿:Debian 7のNginxでECC証明書を作成する方法