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

前書き

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

このガイドでは、Ubuntu 18.04サーバーにPostgreSQLMySQLRedisなどのさまざまなデータベース管理システム(DBMS)のクライアントプログラムをインストールする方法について説明します。 また、これらのプログラムを使用してマネージドデータベースインスタンスに接続する方法についても説明します。

[.note]#Note:このガイドで概説されている手順は、DigitalOcean Managed Databasesでテストされていますが、通常、クラウドプロバイダーの管理対象データベースで機能するはずです。 ただし、別のプロバイダーからプロビジョニングされたデータベースへの接続で問題が発生した場合は、そのプロバイダーのドキュメントを参照してください。

前提条件

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

  • Ubuntu 18.04を実行しているサーバーへのアクセス。 このサーバーには、管理者権限を持つroot以外のユーザーと、ufwで構成されたファイアウォールが必要です。 これを設定するには、Initial Server Setup Guide for Ubuntu 18.04に従います。

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

これらを配置したら、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=passwordを付けることもできますが、コマンドラインにパスワードを含めない方が一般的に安全であると考えられています。

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

psql -U user -h host -p port -d database -v variable=value -W

または、管理対象データベースプロバイダーが接続用にuniform resource identifer(URI)を提供している場合は、次の構文を使用できます。

psql postgresql://username:password@host:port/database?option_1=value&option_n=value

[。注意]##

Note: DigitalOceanマネージドデータベースに接続している場合、この接続情報はすべてCloud Control Panelにあります。 左側のサイドバーメニューでDatabasesをクリックし、接続するデータベースをクリックして下にスクロールし、そのConnection Detailsセクションを見つけます。 そこから、次のいずれかを実行します。

  • Connection parametersオプションを選択し、関連するフィールドを個別に、前述のpsql構文にコピーします。

  • Connection Stringオプションを選択し、上記の接続URI構文に貼り付けることができる既製の接続URIをコピーします

  • Flagsオプションを選択し、すぐに使用できるpsqlコマンドをコピーして、端末に貼り付けて接続します。

これで、マネージPostgreSQLインスタンスで使用を開始する準備が整いました。 PostgreSQLとの対話方法の詳細については、How to Manage an SQL Databaseに関するガイドを参照してください。 また、Introduction to Queries in PostgreSQLが役立つ場合もあります。

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

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

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

[。注意]##

Note:最新バージョンのmysql-clientをインストールする必要がない場合は、MySQLソフトウェアリポジトリを追加せずに、サーバーのパッケージインデックスを更新してmysql-clientをインストールできます。

sudo apt update
sudo apt install mysql-client

最新バージョンのmysql-clientが必要かどうかわからない場合は、クラウドプロバイダーのマネージドデータベースのドキュメントを参照してください。

Webブラウザでthe MySQL APT Repository pageに移動することから始めます。 右下隅にあるDownloadボタンを見つけて、クリックして次のページに進みます。 このページでは、ログインするか、Oracle Webアカウントにサインアップするよう求められます。 それをスキップして、代わりにNo thanks, just start my downloadというリンクを探すことができます。 リンクを右クリックして、Copy Link Addressを選択します(このオプションは、ブラウザによって異なる表現になる場合があります)。

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

cd /tmp

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

curl -OL https://dev.mysql.com/get/mysql-apt-config_0.8.13-1_all.deb

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

ls

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

Outputmysql-apt-config_0.8.13-1_all.deb
. . .

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

sudo dpkg -i mysql-apt-config*

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

Selecting mysql-apt-config configuration options

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

sudo apt update

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

rm mysql-apt-config*

[。注意]##

Note:これらのリポジトリの構成を更新する必要がある場合は、次のコマンドを実行して新しいオプションを選択します。

sudo dpkg-reconfigure mysql-apt-config

新しいオプションを選択したら、次のコマンドを実行してパッケージキャッシュを更新します。

sudo apt update

MySQLリポジトリを追加したので、実際のMySQLクライアントソフトウェアをインストールする準備ができました。 これを行うには、次のaptコマンドを使用します。

sudo apt install mysql-client

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

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

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

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

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

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

  • -P、MySQLが接続をリッスンしているTCPポート

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

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

mysql -u user -p -h host -P port -D database

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

mysql mysql://user:password@host:port/database?option_1=value&option_n=value

[。注意]##

Note: DigitalOceanマネージドデータベースに接続している場合、この接続情報はすべてCloud Control Panelにあります。 左側のサイドバーメニューでDatabasesをクリックし、接続するデータベースをクリックして下にスクロールし、そのConnection Detailsセクションを見つけます。 そこから、次のいずれかを実行します。

  • Connection parametersオプションを選択し、関連するフィールドを個別に前述のmysql構文にコピーします

  • Connection Stringオプションを選択し、上記の接続文字列に貼り付けることができる既製の接続URIをコピーします

  • Flagsオプションを選択し、すぐに使用できるmysqlコマンドをコピーして、端末に貼り付けて接続します。

これで、管理されたMySQLインスタンスで使用を開始する準備が整いました。 MySQLとの対話方法の詳細については、How to Manage an SQL Databaseに関するガイドを参照してください。 また、Introduction to Queries in 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=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を構成する方法はいくつかありますが(たとえば、configuring a TLS tunnelによって)、TLSサポートが組み込まれている代替のRedisクライアントがあります。

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

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

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

cd /tmp

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

wget https://github.com/IBM-Cloud/redli/releases/download/v0.4.4/redli_0.4.4_linux_amd64.tar.gz

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

tar xvf redli_0.4.4_linux_amd64.tar.gz

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

OutputLICENSE.txt
README.md
redli

redliファイルはRedlibinary fileです。 Ubuntuが実行可能ファイルを探す場所である/usr/local/binディレクトリに移動します。

sudo mv redli /usr/local/bin/

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

rm redli_0.4.4_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

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

[。注意]##

Note: DigitalOceanマネージドデータベースに接続している場合、この接続情報はすべてCloud Control Panelにあります。 左側のサイドバーメニューでDatabasesをクリックしてから、接続するデータベースをクリックし、下にスクロールしてConnection Detailsセクションを見つけます。 そこから、次のいずれかを実行します。

  • Connection parametersオプションを選択し、関連するフィールドを個別に、前述のredli構文にコピーします。

  • Connection Stringオプションを選択し、上記の接続文字列構文で使用できる既製の接続URIをコピーします

  • Flagsオプションを選択し、すぐに使用できるredliコマンドをコピーして、端末に貼り付けて接続します。

その後、管理対象のRedisインスタンスとの対話を開始できます。 Redisの操作方法の詳細については、シリーズまたはHow To Manage a Redis Databaseのチートシートを参照してください。

結論

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

データベースの操作の詳細については、PostgreSQLMySQL、およびRedisに直接焦点を当てたチュートリアルなど、さまざまなdatabase-related contentを確認することをお勧めします。

DigitalOceanマネージドデータベースの詳細については、Managed Databases product documentationを参照してください。

Related