はじめに
この実験では、最も人気のあるオープンソースのリレーショナルデータベース管理システム(RDBMS)の一つであるMySQLの基本的な設定と使用方法を探求します。MySQLは、多くのデータベース駆動型Webアプリケーションや人気のあるWebサイトで広く利用されています。この実験を終える頃には、MySQLのインストール確認、初期セットアップのセキュリティ確保、MySQLシェルへのアクセス、そしてシステムデータベースやテーブルの調査に関する実践的な経験を積むことができます。
MySQLのインストール確認
MySQLは、利便性を考慮してシステムにプリインストールされています。しかし、インストールプロセスを理解しておくことは重要です。一般的なUbuntu環境では、以下のコマンドを使用してMySQLをインストールします。
以下のコマンドは参考用です。MySQLはすでに環境にインストールされているため、実行する必要はありません。
## DO NOT RUN THESE COMMANDS
sudo apt update
sudo apt install mysql-server -y
apt update コマンドはパッケージリストを更新し、利用可能なパッケージに関する最新情報を取得します。apt install mysql-server -y コマンドはMySQLサーバーパッケージをインストールします。-y フラグは、インストール中に表示される可能性のあるプロンプトに対して自動的に「yes」と回答するために使用されます。
それでは、MySQLのインストールを確認し、そのステータスをチェックすることから始めましょう。
まず、デスクトップ上のターミナルアイコンをクリックしてターミナルウィンドウを開きます。

ターミナルが開いたら、以下のコマンドを実行してMySQLのステータスを確認します。
sudo service mysql status
このコマンドは、システムレベルの操作で頻繁に必要となる管理者権限で実行するために sudo を使用しています。service mysql status の部分は、MySQLサービスの現在の状態を報告するようシステムに要求します。

MySQLが停止していることを示す出力が表示されるはずです。これは、まだMySQLサービスを開始していないため、想定通りの動作です。
sudo service mysql start
サービスが開始されるまで数秒待ち、再度ステータス確認コマンドを実行します。

MySQLシェルへのアクセス
次に、MySQLシェルにアクセスして基本的な操作を行ってみましょう。
MySQLシェルにアクセスするには、以下のコマンドを使用します。
sudo mysql -u root
このコマンドは、システムレベルの操作で頻繁に必要となる管理者権限で実行するために sudo を使用しています。mysql コマンドはMySQLシェルにアクセスするために使用され、-u root フラグは root ユーザーとして接続することを指定しています。
LabEx VM上のMySQLインストールは root ユーザーがパスワードなしでログインできるように設定されているため、この場合はパスワードを入力する必要はありません。これは開発環境では一般的ですが、本番システムでは行うべきではありません。
成功すると、ウェルカムメッセージとMySQLのプロンプトが表示されます。
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 52
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
これでMySQLシェルに入りました。ここでSQLコマンドを実行できます。
MariaDB [(none)]> というプロンプトは、現在MariaDB(MySQLのフォーク)に接続しており、特定のデータベースを使用していないことを示しています。
MySQLではなくMariaDBが表示されていることに注意してください。心配はいりません。これは、この実験を完了したり、MySQLコマンドを学習したりする能力には影響しません。理由は以下の通りです。
- MariaDBはMySQLのオリジナル開発者によって作成されたMySQLのフォークです。MySQLのドロップイン置換として設計されており、MySQLの構文や操作と完全に互換性があります。
- MariaDBは、真にオープンソースなバージョンのMySQLが常に利用可能であることを保証するために作成されました。MySQLとの高い互換性を維持しつつ、独自の機能や改善点も提供しています。
- この実験および初級から中級レベルのMySQL操作においては、MariaDBをMySQLと全く同じように扱うことができます。この実験で使用するすべてのコマンドは、MariaDBとMySQLの両方で同じように動作します。
- MariaDBはMySQLよりも軽量で高速であると見なされることが多く、このような学習環境には最適です。応答時間が速いため、学習体験がよりスムーズになるでしょう。
- Ubuntuのいくつかのバージョンを含む多くのLinuxディストリビューションでは、そのオープンソースの性質とパフォーマンスの利点から、デフォルトのMySQL互換データベースシステムとしてMariaDBを採用しています。
したがって、プロンプトや出力に「MariaDB」と表示されても、この実験の目的においてはMySQLと考えて差し支えありません。ここで学ぶスキルは、現実世界のシナリオにおいてMariaDBとMySQLの両方に直接適用可能です。
システムデータベースの調査
システムデータベースを調査してみましょう。これらはMySQLにプリインストールされており、MySQLサーバー自体に関する重要な情報が含まれています。
ステップ2から引き続きMySQLシェル内にいる場合は、まず通常のターミナルに戻ります。
EXIT;
次に、ターミナルで以下のコマンドを実行します。
sudo mysql -u root -e "SHOW DATABASES;" | tee /home/labex/project/system_databases.txt
-e オプションは、ターミナルから直接SQLステートメントを実行するようにMySQLに指示します。tee コマンドは出力のコピーを /home/labex/project/system_databases.txt に保存するため、後で結果を確認しやすくなります。

このコマンドは、MySQLサーバー内に存在するすべてのデータベースを一覧表示します。以下のような出力が表示されるはずです。
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
これらのデータベースが何であるかを説明します。
information_schema: データベースのメタデータへのアクセスを提供するデータベースです。mysql: MySQLサーバーの動作に必要な情報が含まれているデータベースです。performance_schema: 実行時のサーバーの内部動作を調査する方法を提供するデータベースです。sys: DBAや開発者がperformance_schemaによって収集されたデータを解釈するのを助けるオブジェクトのセットが含まれているデータベースです。
この実験では、mysql データベースに焦点を当てます。ターミナルで以下のコマンドを実行して、そのデータベース内のテーブルを一覧表示し、出力を保存します。
sudo mysql -u root -e "USE mysql; SHOW TABLES;" | tee /home/labex/project/mysql_tables.txt
テーブルの長いリストが表示されます。これらのテーブルには、MySQLのさまざまな設定データや運用データが格納されています。
システムテーブル内のデータの調査
システムテーブルを確認したので、その中の一つに含まれるデータを調べてみましょう。mysql データベース内の user テーブルには、MySQLユーザーアカウントに関する情報が含まれています。
MySQLシェルに再接続します。
sudo mysql -u root
MariaDB [(none)]> プロンプトが表示されたら、mysql データベースに切り替えます。
USE mysql;
以下のコマンドを実行して、user テーブルの構造を確認します。
DESCRIBE user;
これにより、user テーブルのすべてのカラムが表示されます。このテーブルには各MySQLユーザーに関する詳細情報が含まれているため、多くのカラムが表示されます。
次に、このテーブル内のデータの一部を見てみましょう。いくつかの主要なカラムに焦点を当てます。
SELECT User, Host, Password_expired FROM user;
このクエリは、user テーブルから3つの重要なカラムを選択します。
User: MySQLアカウントのユーザー名Host: このユーザーが接続を許可されているホストPassword_expired: パスワードが期限切れかどうか
以下のような出力が表示されるはずです。
+-------------+-----------+------------------+
| User | Host | password_expired |
+-------------+-----------+------------------+
| mariadb.sys | localhost | Y |
| root | localhost | N |
| mysql | localhost | N |
+-------------+-----------+------------------+
3 rows in set (0.001 sec)
この出力は、システム上に存在するMySQLユーザーアカウントを示しています。root ユーザーは主要な管理者アカウントであり、その他はMySQLがさまざまな目的で使用するシステムアカウントです。
MySQLシェルを終了するには、以下を入力します。
EXIT;
これで通常のターミナルプロンプトに戻ります。
まとめ
この実験では、LabEx VMでMySQLを扱うための基本的なステップを網羅しました。MySQLのインストール確認、初期セットアップのセキュリティ確保、MySQLシェルへのアクセス、システムデータベースの調査、そしてシステムテーブル内のデータの確認を行いました。
以下の方法を学びました。
- MySQLサービスのステータスの確認と管理
- MySQLシェルへのアクセス
- システムデータベースの表示
- システムデータベース内のテーブルの調査
- システムテーブルからのデータクエリ
これらの基本的なスキルは、より高度なデータベース管理タスクの基礎となります。MySQLの学習を続ける中で、これらの基礎の上に独自のデータベースを作成し、洗練されたクエリを記述し、MySQLをさまざまなアプリケーションと統合していくことになります。データベース管理を習得するには練習が鍵ですので、さまざまなコマンドを試したり、MySQLの機能をさらに探求したりすることを恐れないでください。



