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

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

PlanetScaleへのユーザ登録

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

PlanetScaleのホームページ
PlanetScaleのホームページ

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

プラン一覧
プラン一覧

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

PlanetScaleへのサインアップ画面
PlanetScaleへのサインアップ画面

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

メール送信確認画面
メール送信確認画面

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

確認メール
確認メール

データベースの作成

確認メールの”Confirm email”ボタンをクリックするとWelcomeページにリダイレクトされます。画面上に表示されている”See how PlanetScale works”のボタンをクリックするとPlanetScaleについての説明画面が5画面ほど続きます。PlanetScaleについての説明が必要ない場合はボタンの下にある”Ready to create or import a database instead?”のcreateのリンクをクリックしてください。ここでも説明画面はスキップしてデータベースの作成に進みます。

PlanetScaleのWelcomeページ
PlanetScaleのWelcomeページ

データベースの作成画面が表示されます。

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

Nameを入力後、RegionではTokyoを選択することができます。データベースの作成はコマンドラインでも行うことができます。

作成するデータベースの情報を入力
作成するデータベースの情報を入力

作成が開始されると以下のWeb Consoleの画面が表示されます。Web Console画面の左上にOverview, Settingsなどのリンクが存在しデータベースの作成やプランの確認などを行うことができます。さらにWeb Consoleからデータベースに対してQueryを実行することもできます。

中央の左側にに”Ready to connect to your database?”のリンクか”Connect”ボタンをクリックしてください。”Ready to connect to your database?”はしばらくすると消えます。

データベース作成直後の画面
データベース作成直後の画面

接続はLaravel以外にはさまざまな言語やツールによって接続することができるので適切なものを選択します。ここでは”Laravel”を選択します。

接続方法の選択
接続方法の選択

.envファイルに設定することができる環境変数が表示されます。動作確認を行う場合は各自が取得した情報を利用してください。

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

PlanetScale上でのデータベースの作成は完了です。

Laravel環境の構築

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


 % laravel new laravel_planetscale

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


 % cd laravel_planetscale

Laravelからの接続設定

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


DB_CONNECTION=mysql
DB_HOST=vctsig3fp8a5.ap-northeast-2.psdb.cloud
DB_PORT=3306
DB_DATABASE=laravel9
DB_USERNAME=56qae8nbc9tk4
DB_PASSWORD=pscale_pw_-nr-cQ97byteOAZikpH7sJl3tg-lq1bI4KBydK-4HiQ
MYSQL_ATTR_SSL_CA=/etc/ssl/cert.pem

テーブルを作成するためにphp artisan migrateコマンドを実行します。


 % php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (136.61ms)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (95.38ms)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated:  2019_08_19_000000_create_failed_jobs_table (100.85ms)
Migrating: 2019_12_14_000001_create_personal_access_tokens_table
Migrated:  2019_12_14_000001_create_personal_access_tokens_table (147.38ms)

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

Overview画面をリロードしてもすぐにテーブル作成の情報が反映されているわけではないのでLaravel上でテーブルを作成してもTablesの数は0のままです。情報を反映させるため表示されているTablesをクリックします。

テーブルの数の確認
テーブルの数の確認

画面には”Refresh Schema”というボタンがあるのでボタンをクリックするとphp artisan migrateコマンドで作成したテーブルのSQLが表示されます。

スキーマをリフレッシュ
スキーマをリフレッシュ

Overview画面に戻るとテーブルの数が0から5に増えていることが確認できます。

テーブル数の確認
テーブル数の確認

テーブルに挿入されているデータを確認するためコンソールタブをクリックします。コンソールでselect文を利用してmigrationsテーブルにアクセスを行います。Consoleへの移動はOverviewの画面でTablesをクリックするとSchemaに移動するので上部のメニューに表示されるConsoleをクリックします。

select文の実行
select文の実行

ローカル環境のLaravelからクラウド上にあるPlanetScaleのMySQLにアクセスできることが確認できました。

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

MySQLのバージョンを確認
MySQLのバージョンを確認

Laravel9からPlanetScaleの接続を確認することができました。

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

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:
  audit-log      List audit l
//略

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


 % brew install mysql-client

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


 % pscale db ls
Error: not authenticated yet. 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  
 ---------- -------------- -------------- ------- 
  laravel9   1 hours ago   1 hours ago

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

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


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

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

データベースの作成もコマンドラインから行うことができます。データベースを作成する場合はオプsヒョンの–regionを設定しない場合はus-east-4に作成されました。


 % pscale db create laravel9
Database laravel9 was successfully created

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


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

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


 % pscale database show laravel9 --web

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


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