Linux 用 Windows サブシステム上のデータベースの概要

このステップバイステップ ガイドは、WSL でプロジェクトを初めてデータベースに接続するときに役立ちます。 MySQL、PostgreSQL、MongoDB、Redis、Microsoft SQL Server、または SQLite で作業を開始します。

前提条件

データベース システムによる相違点

データベース システムの最も一般的な選択肢には、次が含まれます。

MySQL は、オープンソースの SQL リレーショナル データベースで、データ型が互いに関連付け合う可能性がある 1 つ以上のテーブルにデータを編成します。 これは、垂直方向にスケーラブルです。つまり、1 つの最終的なマシンが処理を行います。 現在、4 つのデータベース システムで最も広く使用されています。

PostgreSQL (Postgres とも呼ばれる) もオープンソースの SQL リレーショナル データベースで、拡張性と標準への準拠を重視しています。 現在は JSON も処理できますが、一般的には、構造化データ、垂直方向の規模拡張、および、e コマースや金融取引などの ACID 準拠のニーズに適しています。

Microsoft SQL Server には、SQL Server on Windows、SQL Server on Linux、SQL on Azure が含まれます。 これらも、サーバー上に設定されたリレーショナル データベース管理システムで、ソフトウェア アプリケーションからの要求に応じてデータを格納および取得する主な機能を備えています。

SQLite は、オープンソースの自己完結型のファイルベースの サーバーレス ” データベースであり、移植性、信頼性、低メモリ環境でも優れたパフォーマンスが確保されています。

MongoDB は、JSON で動作し、スキーマフリーのデータを格納するように設計された、オープンソースの NoSQL ドキュメント データベースです。 これは、水平方向にスケーラブルです。つまり、複数の小さなマシンが処理を行います。 柔軟性および非構造化データと、リアルタイム分析のキャッシュに適しています。

Redis は、オープンソースの NoSQL インメモリ データ構造ストアです。 ストレージにドキュメントではなくキーと値のペアが使用されます。 Redis は、柔軟性、パフォーマンス、幅広い言語サポートで知られています。 ’キャッシュまたはメッセージブローカーとして使用するのに十分な柔軟性を備えており、リスト、セット、ハッシュなどのデータ構造を使用できます。

選択するデータベースの種類は、データベースを使用するアプリケーションの種類に応じて決める必要があります。 構造化データベースと非構造化データベースの長所と短所を検討し、ユースケースに基づいて選択することをお勧めします。

MySQL をインストールする

WSL に MySQL をインストールするには (つまり、 Ubuntu):

  1. WSL ターミナルを開きます (つまり、 Ubuntu)。
  2. sudo apt update を実行して Ubuntu パッケージを更新します。
  3. パッケージが更新されたら、sudo apt install mysql-server を使用して MySQL をインストールします。
  4. mysql --version を実行してインストールを確認し、バージョン番号を取得します。

含まれているセキュリティ スクリプトを実行することもできます。 これにより、リモート ルート ログインやサンプル ユーザーなど、安全性の低い既定のオプションの一部が変更されます。 セキュリティ スクリプトを実行するには:

  1. sudo /etc/init.d/mysql start を実行して MySQL サーバーを起動します。
  2. sudo mysql_secure_installation を実行して、セキュリティ スクリプト プロンプトを開始します。
  3. 最初のプロンプトで、パスワードの検証プラグインを設定するかどうかを確認するメッセージが表示され ’ ます。これは、MySQL パスワードの強度をテストするために使用できます。 次に、MySQL ルート ユーザーのパスワードを設定し、匿名ユーザーを削除するかどうかを決定し、ルート ユーザーがローカルとリモートの両方でログインできるようにするかどうかを決定し、テスト データベースを削除するかどうかを決定し、最後に特権テーブルを直ちに再読み込みするかどうかを決定します。

MySQL プロンプトを開くには、「sudo mysql」と入力します。

使用可能なデータベースを確認するには、MySQL プロンプトで「SHOW DATABASES;」と入力します。

新しいデータベースを作成するには、「CREATE DATABASE database_name;」と入力します。

データベースを削除するには、「 DROP DATABASE database_name;」と入力します。

MySQL データベースの操作の詳細については、MySQL のドキュメントを参照します。

VS Code で MySQL データベースを使用するには、MySQL 拡張機能を試します。

PostgreSQL のインストール

WSL に PostgreSQL をインストールするには (つまり、 Ubuntu):

  1. WSL ターミナルを開きます (つまり、 Ubuntu)。
  2. sudo apt update を実行して Ubuntu パッケージを更新します。
  3. パッケージが更新されたら、sudo apt install postgresql postgresql-contrib を実行して PostgreSQL (およびいくつかの便利なユーティリティが含まれている -contrib パッケージ) をインストールします。
  4. psql --version を実行してインストールを確認し、バージョン番号を取得します。

PostgreSQL をインストールした後は、次の 3 つのコマンドについて覚えておく必要があります。

  • データベースの状態を確認する sudo service postgresql status
  • データベースの実行を開始する sudo service postgresql start
  • データベースの実行を停止する sudo service postgresql stop

既定の管理者ユーザー postgres には、データベースに接続するパスワードを割り当てる必要があります。 パスワードを設定するには:

  1. コマンド sudo passwd postgres を入力します。
  2. 新しいパスワードを入力するように求めるメッセージが表示されます。
  3. ターミナルを閉じ、開き直します。

psql シェルを使用して PostgreSQL を実行するには:

  1. sudo service postgresql start を実行して postgres サービスを開始します。
  2. sudo -u postgres psql を実行して postgres サービスに接続し、psql シェルを開きます。

正常に psql シェルに入ると、コマンドラインが postgres=# のように変わります。

注意

または、su - postgres を使用して postgres ユーザーに切り替え、コマンド psql を入力することで psql シェルを開くことができます。

postgres=# を終了するには、\q と入力するか、Ctrl + D のショートカット キーを使用します

PostgreSQL のインストールで作成されたユーザー アカウントを確認するには、WSL ターミナルから psql -c "\du" を使用します。または、psql シェルが開いている場合は、\du を実行します。 このコマンドにより、アカウントのユーザー名、ロール属性の一覧、ロール グループのメンバーの列が表示されます。 q を入力すると、終了してコマンド ラインに戻ります。

PostgreSQL データベースの操作の詳細については、PostgreSQL のドキュメントを参照します。

VS Code で PostgreSQL データベースを使用するには、PostgreSQL 拡張機能を試します。

MongoDB をインストールする

WSL (Ubuntu 20.04) に MongoDB (バージョン 5.0) をインストールするには:

  1. WSL ターミナルを開き (つまり、 Ubuntu)、cd ~ を実行してホーム ディレクトリに移動します。
  2. sudo apt update を実行して Ubuntu パッケージを更新します。
  3. wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - を実行して、MongoDB パッケージ管理システムで使用される公開キーをインポートします。
  4. echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list を実行して、MongoDB のリスト ファイルを作成します。
  5. sudo apt-get update を実行して、ローカル パッケージ データベースをもう一度読み込みます。
  6. sudo apt-get install -y mongodb-org を実行して、MongoDB パッケージをインストールします。
  7. mongod --version を実行してインストールを確認し、バージョン番号を取得します。
  8. mkdir -p ~/data/db を実行して、データを格納するディレクトリを作成します。
  9. sudo mongod --dbpath ~/data/db を実行して、Mongo インスタンスを実行します。
  10. ps -e | grep 'mongod' を実行して、MongoDB インスタンスが実行されていることを確認します。
  11. MongoDB シェルを終了するには、ショートカット キー Ctrl + C を使用します。

ヒント

MongoDB をインストールする場合は、インストールに使用されている Linux ディストリビューションによっては、若干異なる手順が必要になることがあります。 MongoDB のインストールに関するチュートリアルを参照します。 また、インストールするバージョン番号によっても、MongoDB のインストールが異なる場合があることに注意します。 MongoDB ドキュメントの左上隅にあるバージョンのドロップダウン リストを使用して、目的に合わせてバージョンを選択します。

MongoDB init システムの違い

上の例では、MongoDB を直接実行しました。 その他のチュートリアルでは、オペレーティング システムに組み込みの init システムを使用して MongoDB を開始する場合があります。 チュートリアルや記事で、sudo systemctl status mongodb コマンドが使用されている場合があります。 現在、WSL は systemd (Linux のサービス管理システム) をサポートしていません。

違いはほとんどありませんが、チュートリアルで sudo systemctl が使用されている場合は、代わりに sudo /etc/init.d/ を使用します。 たとえば、sudo /etc/init.d/docker status は WSL では sudo systemctl status docker になります。または、sudo service docker status を使用することもできます。

サービスとして MongoDB を開始する init スクリプトを追加する

上記のインストール手順でインストールする MongoDB のバージョンには、/etc/init.d/ にスクリプトが自動的には含まれません。 サービス コマンドを使用する場合は、このソースから mongodb 用の init.d スクリプトをダウンロードして、パス にファイルとして手動で配置することができます。その後、sudo service mongodb start を使用して、Mongo をサービスとして開始できます。

  1. MongoDB 用の init.d スクリプトをダウンロードします。次のように実行します。curl https://raw.githubusercontent.com/mongodb/mongo/master/debian/init.d | sudo tee /etc/init.d/mongodb >/dev/null
  2. sudo chmod +x /etc/init.d/mongodb を実行して、そのスクリプトの実行可能なアクセス許可を割り当てます。
  3. これで、MongoDB サービス コマンドを使用して、次を実行できるようになりました。
    • データベースの状態を確認する sudo service mongodb status データベースが実行されていない場合は、[失敗] の応答が表示されます。
    • データベースの実行を開始する sudo service mongodb start。 [OK] の応答が表示されます。
    • データベースの実行を停止する sudo service mongodb stop
  4. 診断コマンド mongo --eval 'db.runCommand({ connectionStatus: 1 })' を使用して、データベース サーバーに接続していることを確認します。これにより、現在のデータベースのバージョン、サーバーのアドレスとポート、status コマンドの出力が出力されます。 応答の "ok" フィールドに 1 の値は、サーバーが動作していることを示しています。

注意

MongoDB には、データを /data/db に格納する、ポート 27017 で実行するなど、いくつかの既定のパラメーターがあります。 また、mongod はデーモン (データベースのホスト プロセス) であり、mongomongod の特定のインスタンスに接続するコマンドライン シェルです。

VS Code では、Azure CosmosDB 拡張機能による MongoDB データベースの操作がサポートされており、VS Code 内から MongoDB データベースの作成、管理、クエリ実行を行うことができます。 詳細については、VS Code のドキュメントで MongoDB の使用に関する説明を参照します。

詳細については、次の MongoDB のドキュメントを参照してください。

Microsoft SQL Server のインストール:

WSL に SQL Server をインストールするには (つまり、 Ubuntu)、「クイックスタート: Ubuntu に SQL Server をインストールし、データベースを作成する」に従います。

VS Code で Microsoft SQL Server データベースを操作するには、MSSQL 拡張機能を試します。

SQLite をインストールする

WSL に SQLite をインストールするには (つまり、 Ubuntu):

  1. WSL ターミナルを開きます (つまり、 Ubuntu)。
  2. sudo apt update を実行して Ubuntu パッケージを更新します。
  3. パッケージが更新されたら、sudo apt install sqlite3 を実行して SQLite3 をインストールします。
  4. sqlite3 --version を実行してインストールを確認し、バージョン番号を取得します。

"example. db" という名前のテスト データベースを作成するには、「sqlite3 example.db」と入力します。

SQLite データベースの一覧を表示するには、「.databases」と入力します。

データベースの状態を確認するには、「.dbinfo ?DB?」と入力します。

SQLite プロンプトを終了するには、「.exit」と入力します。

SQLite データベースの操作の詳細については、SQLite のドキュメントを参照します。

VS Code で SQLite データベースを使用するには、SQLite 拡張機能を試します。

Redis をインストールする

Redis を WSL にインストールするには (つまり、 Ubuntu):

  1. WSL ターミナルを開きます (つまり、 Ubuntu)。
  2. sudo apt update を実行して Ubuntu パッケージを更新します。
  3. パッケージが更新されたら、sudo apt install redis-server を実行して Redis をインストールします。
  4. redis-server --version を実行してインストールを確認し、バージョン番号を取得します。

Redis サーバーの実行を開始するには、sudo service redis-server start を実行します。

Redis が動作しているかどうかを確認します (redis-cli は、Redis と対話するためのコマンド ライン インターフェイス ユーティリティです)。redis-cli ping を実行すると、"PONG" という応答が返されます。

Redis サーバーの実行を停止するには、sudo service redis-server stop を実行します。

Redis データベースの使用方法の詳細については、Redis のドキュメントを参照します。

VS Code で Redis データベースを使用するには、Redis 拡張機能を試します。

サービスの実行を確認しプロファイルの別名を設定する

現在 WSL ディストリビューションで実行されているサービスを表示するには、「service --status-all」と入力します。

sudo service mongodb startsudo service postgres startsudo -u postgrest psql などの入力は面倒な場合があります。 これらのコマンドをすばやく使えるように、また覚えやすくするために、WSL 上の .profile ファイルでエイリアスを設定することを検討してください。

これらのコマンドを実行するためのカスタム エイリアス (ショートカット) を設定するには、次の手順を実行します。

  1. WSL ターミナルを開き、cd ~ と入力してルート ディレクトリに移動します。

  2. sudo nano .profile と入力して、ターミナルの設定を制御する .profile ファイルを、ターミナルのテキスト エディター Nano で開きます。

  3. ファイルの最後に次の内容を追加します (# set PATH 設定は変更しないでください)。

    # My Aliases
    alias start-pg='sudo service postgresql start'
    alias run-pg='sudo -u postgres psql'
    

    以後、start-pg と入力して postgresql サービスの実行を開始し、run-pg と入力して psql シェルを開くことができます。 start-pg および run-pg は任意の名前に変更できますが、postgres が既に使用しているコマンドを上書きしないよう注意してください。

  4. 新しいエイリアスを追加したら、Ctrl + X キーを使用して Nano テキスト エディターを終了し、保存の確認に対して (はい) を選択して Enter キーを押します (ファイル名は .profile のままにします)。

  5. WSL ターミナルを閉じて開き直してから、新しいエイリアス コマンドを試してみてください。

トラブルシューティング

エラー: ディレクトリ同期 fdatasync の無効な引数

WSL 2 モードで Linux ディストリビューションを実行していることを確認します。 WSL 1 から WSL 2 への切り替えの詳細については、ディストリビューションのバージョンを WSL 1 または WSL 2 に設定する方法に関する説明を参照します。

その他のリソース