前書き
Managed databasesには、自動更新、簡素化されたスケーリング、高可用性など、自己管理データベースに比べて多くの利点があります。 ただし、管理されたデータベースを初めて使用する場合、特定のタスク(データベースへの接続など)を実行する最良の方法は自明ではない場合があります。
このガイドでは、Ubuntu 18.04サーバーにPostgreSQL、MySQL、Redisなどのさまざまなデータベース管理システム(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
を押します。
その後、パッケージはリポジトリの追加を完了します。 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つであるデータベースへのアクセスは、管理されたデータベースを使用するのが初めての人にはすぐにはわからないかもしれません。 このチュートリアルの目標は、データを保存するために管理されたデータベースを使用し始めるときに、開始するのに役立つことです。
データベースの操作の詳細については、PostgreSQL、MySQL、およびRedisに直接焦点を当てたチュートリアルなど、さまざまなdatabase-related contentを確認することをお勧めします。
DigitalOceanマネージドデータベースの詳細については、Managed Databases product documentationを参照してください。