PlatnetScaleはクラウドベースでMySQLを利用することができるサービスでデータベース用のサーバを準備する必要がなく(Serverless)ネットワーク越しにデータベースを利用することができます。

本文書ではPlanetScaleへのユーザ登録の方法、データベースの作成方法を確認して、ローカルPC(mac OS)のLaravel 10からPlanetScaleのMySQLデータベースヘの接続方法を確認していきます。Laravelを利用した経験のある人を前提にしているためLaravelプロジェクトの作成などについての詳細な説明は行っていません。

PlanetScaleへのユーザ登録

PlanetScaleを利用するためにはユーザ登録を行う必要があります。PlanetScaleのホームページにアクセスすると右上または中央に”Get started”のボタンが表示されているのでボタンをクリックします。

PlaneScaleトップページ
PlaneScaleトップページ

ユーザ登録を行う前に利用料金が気になる人は上部にあるメニューの中にPricingがあるので料金を確認しておきましょう。HobbyからEnterpriceまで4つのプランが提供されています。Hobbyの料金は”Free”なので本文書ではHobbyのプランを利用することになります。ユーザ登録の中でプランを選択することはなく”Free”プランで登録され管理画面の中でプランの”Upgrade”を行うことができます。プランによって利用できるデータベースの数などに制限があります。右上の”Get started”ボタンをクリックしてユーザの登録を行います。

PlanetScaleの料金体系
PlanetScaleの料金体系

ユーザ登録にはEmailまたはGitHubのアカウントから行うことができます。本文書ではEmailを利用して登録を行います。

サインアップ画面
サインアップ画面

入力が完了すると入力したメールアドレスにメールが送信されます。

メール確認画面
メール確認画面

メールを確認するとシンプルな確認メールが届きます。”Confirm email”ボタンをクリックします。

確認メール
確認メール

データベースの作成

クリックするとPlanetScaleのOverview画面にリダイレクトされ以下の画面が表示されます。データベースを新規作成するので”Create a new database”ボタンをクリックします。

Overview画面
Overview画面

データベースの作成画面が表示されます。Organizationはアカウントを作成すると自動でユーザ名で作成せれるのでそのまま選択します。Organizationの追加、変更は可能です。データベース名に任意の名前をつけてプランタイプを選択します。

デフォルトではHobbyプランが選択されていないので無料で利用する場合には必ずHobbyを選択してください。

データベース作成画面
データベース作成画面

さらに画面をスクロールすると選択したプランによってCluster sizeの各種選択ができますがHobbyプランでは選択できなくなっています。

データベースを作成するためには”Please add a credit or debit card to this organization”と表示されており、”Add new card”ボタンをクリックしてクレジットカード情報を入力する必要があります。それまでは”Create database”ボタンをクリックすることができません。

データベース作成画面の続き
データベース作成画面の続き

“Add new card”ボタンをクリックすると入力画面が表示されます。

クレジットカードの入力画面
クレジットカードの入力画面

クレジットカード情報を入力すると”Create Database”がクリックできるようになります。

クレジットカード入力後
クレジットカード入力後

データベースに接続する予定の言語またはフレームワークの一覧が表示されます。接続を行う言語またはフレームワークをクリックしてくだい。

接続する言語またはフレームワークの選択
接続する言語またはフレームワークの選択

本文書ではこれから接続設定を行うLaravelをクリックします。クリックするとデータベースのパスワード名の入力フォームが表示されます。パスワード名が入力された状態で表示されますが変更することは可能です。”Create password”ボタンをクリックします。

Laravelの選択
Laravelの選択

接続に必要なUsernameとPasswordが表示されます。その下にLaravelの.envファイルに設定する情報が表示されます。

接続情報の表示
接続情報の表示

さらにスクロールするとデータベースへの接続をチェックするためにルーティングの設定方法が記述されているので後ほど利用します。”Go to your database overview”ボタンをクリックします。

接続確認のサンプルコード
接続確認のサンプルコード

Overview画面で作成したtest_dbの情報を確認することができます。

Overview画面
Overview画面

Laravel環境の構築

PlanetScaleに接続するためのにローカルPC上でlaravel newコマンドを実行してLaravelプロジェクトを作成します。


 % laravel new laravel_planetscale

プロジェクト作成後にlaravel_planetscaleのフォルダに移動します。


 % cd laravel_planetscale

Laravelからの接続確認

.envファイルを開いて先ほど設定されていた情報を.envファイルに設定します。


DB_CONNECTION=mysql
DB_HOST=aws.connect.psdbdb.cloud
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=pxl1a8ppt4uk1lxteajz
DB_PASSWORD=pscale_pw_HxPyixAbZ7u4FGHSGgFKMgW1mxW3lHgc4F0ebCToMKr
MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem

web.phpファイルにPlanetScale上に作成したデータベースへの接続用のコードを記述します。


>?php

use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider and all of them will
| be assigned to the "web" middleware group. Make something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/test-database', function () {
    try {
        DB::connection()->getPdo();
        print_r("Connected successfully to: " . DB::connection()->getDatabaseName());
    } catch (\Exception $e) {
        die("Could not connect to the database.  Please check your configuration. Error:" . $e );
    }
});

php artisan serveコマンドで開発サーバの起動を行います。


 % php artisan serve

   INFO  Server running on [http://127.0.0.1:8000].  

  Press Ctrl+C to stop the server

ブラウザからhttp://127.0.0.1:8000/test-databaseにアクセスを行います。

接続成功のメッセージ
接続成功のメッセージ

接続情報に誤りがあると”Could not connect to the database. Please check your configuration. Error:PDOException: SQLSTATE[HY000] [1045] Access denied for user”のメッセージとスタックトレースが表示されるので.envファイルを修正してください。

テーブルの作成

Laravelではデフォルトでデータベーステーブルを作成するためのmigrationファイルが準備されているのでphp artisan migrateコマンドを実行するだけでテーブルを作成することができます。


 % php artisan migrate

   INFO  Preparing database.  

  Creating migration table ................................................. 117ms DONE

   INFO  Running migrations.  

  2014_10_12_000000_create_users_table ...................................... 149ms DONE
  2014_10_12_100000_create_password_reset_tokens_table ...................... 178ms DONE
  2019_08_19_000000_create_failed_jobs_table ................................ 145ms DONE
  2019_12_14_000001_create_personal_access_tokens_table ..................... 220ms DONE

テーブルの作成は問題なく作成することができました。実際に作成できているか確認するためにPlanetScaleのデータベースのOverviewを確認します。

Tablesの値が5になっていることが確認できます。

作成したテーブルの確認
作成したテーブルの確認

Tables 5をクリックすると作成したテーブルの情報を確認することができます。5つのテーブルが作成されていることが確認できます。

作成したテーブルの確認
作成したテーブルの確認

Web Consoleへのアクセス

Web Console画面ではコマンドラインを利用してデータベースにアクセスすることができるためテーブルに挿入されているデータを確認するためメニューのConsoleタブをクリックします。

しかし”There are no branches you’re able to connect to”のメッセージが表示されます。デフォルトではProduction BranchesではWeb Consoleにアクセスできないようになっています。

Console画面
Console画面

Web Console画面へのアクセスを行うためデータベースのSetting画面に移動して”Allow web console access to production branches”のチェックを行い、”Save database settings”ボタンをクリックします。

Database Setting画面
Database Setting画面

設定変更するとWeb Consoleへのアクセスが可能となります。

Web Consoleへの接続
Web Consoleへの接続

コンソールでselect文を利用してmigrationsテーブルにアクセスを行います。

select文の実行
select文の実行

コンソールからSQL文を利用してMySQLのバージョンも確認することができます。

MySQLのVersionの確認
MySQLのVersionの確認

GUIを利用した接続

TablePlusなどのデータベース管理ソフトを利用してPlanetSacle上のデータベースにアクセスすることができます。TablePlusの接続に利用する接続情報を確認するためにOverview画面の”Connect”ボタンをクリックします。

作成したテーブルの確認
作成したテーブルの確認

Connect withで”General”を選択します。表示される情報が接続するために必要な情報です。

接続情報
接続情報

TablePlusで接続先にMySQLを選択してMySQL Connection画面で必要な情報を入力します。パスワードは.envファイルに保存したものを利用してください。

MySQL Connection画面
MySQL Connection画面

“Connect”ボタンをクリックすると接続ができます。

データベースの接続画面
データベースの接続画面

GUIのデータベース管理ソフトウェアを利用してテーブルの内容を確認することができます。

コマンドラインの利用方法

PlanetScaleはコマンドラインも用意されており、コマンドを利用して設定を変更することができます。コマンドラインを利用するためにはインストールが必要となります。

macOSでのインストール方法

macOSではHomebrewを利用してインストールを行います。Homebrewをインストールを行っていない場合にはインストールを行う必要があります。

brewコマンドを利用してインストールを行います。


 % brew install planetscale/tap/pscale

インストールが完了するとpscaleコマンドを利用することが可能となり、helpのオプションをつけて実行すると下記のメッセージが表示されます。


 % pscale --help
pscale is a CLI library for communicating with PlanetScale's API.

Usage:
  pscale [command]

Available Commands:
  api            Performs authenticated calls against the PlanetScale API. Useful for scripting.
//略

MySQLのClientもbrewコマンドを利用してインストールします。


 % brew install mysql-client

データベースの情報を見るためにコマンドを実行してもエラーになります。


 % pscale db ls
Error: the access token has expired. Please run 'pscale auth login'

コマンドラインからのログイン

PlanetScaleのWeb Consoleにログインした状態からpscale auth loginコマンドを実行します。


 % pscale auth login 

Confirmation Code: KUXRARR4

If something goes wrong, copy and paste this URL into your browser: https://auth.planetscale.com/oauth/device?user_code=KUXRARR4

⠦ 

コマンドを実行するとブラウザのタブが自動で起動してPlanetScaleのログイン画面(Web Consoleからログアウトしている場合)が表示されます。

サインインするとブラウザ上にConfirmation Codeが表示されます。

Confirmation Code確認画面
Confirmation Code確認画面

コマンド実行時と同じコードになっているかを確認し同じ場合は”Confirm code”ボタンをクリックします。画面には以下が表示されます。

ログイン完了のメッセージ
ログイン完了のメッセージ

コマンドを実行したコンソールを確認するとログインが完了していることがメッセージからわかります。


 % pscale auth login 

Confirmation Code: KUXRARR4

If something goes wrong, copy and paste this URL into your browser: https://auth.planetscale.com/oauth/device?user_code=KUXRARR4

Successfully logged in.

ログイン後に先程失敗したpscale db lsコマンドを実行します。PlanetScale上のデータベースの情報を取得することができます。


 % pscale db ls
  NAME      CREATED AT    UPDATED AT       NOTES  
 --------- ------------- ---------------- ------- 
  test_db   8 hours ago   30 minutes ago 

コマンドラインからのログアウト

ログアウトを行いたい場合はpscale auth logoutボタンを実行後に表示されるメッセージの後に”Enter”ボタンを押すとログアウトできます。


 % pscale auth logout
Press Enter to log out of the PlanetScale API.

データベースの作成/削除

データベースの作成もコマンドラインから行うことができます。しかりFreeプランでは追加のデータベースを作成できません。Yesを選択すると追加データベースを作成できますがコストがかかります。クレジットカードを入力しているので誤って”Yes”を選択しないようにしてください。


 % pscale db create laravel10
Organization [johndoe10] does not have any free databases remaining
If you choose to continue, this database will be created on the Scaler plan. The monthly cost is $29.

作成したデータベースの情報はdatabase showコマンドで確認することができます。


 % pscale database show test_db
  NAME       CREATED AT       UPDATED AT       NOTES  
 ---------- ---------------- ---------------- ------- 
  test_db   12 minutes ago   11 minutes ago    

オプションの–webをつけて実行するとブラウザのタブが起動してブラウザ上でデータベースの情報を確認することができます。


 % pscale database show test_db --web

データベースの削除も行うことができます。


% pscale database delete test_db 
? Please type test_db to confirm: test_db
Database test_db was successfully deleted.