はじめに
この実験では、最も人気のあるオープンソースのリレーショナルデータベース管理システム(RDBMS)の1つであるMySQLの基本的な設定と使い方を学びます。MySQLは、多くのデータベース駆動のWebアプリケーションや人気のあるウェブサイトで広く使用されています。この実験が終了するとき、あなたはMySQLのインストールを確認し、初期設定をセキュアにすること、MySQLシェルにアクセスすること、およびシステムデータベースとテーブルを調べることに関する実践的な経験を得るでしょう。
この実験では、最も人気のあるオープンソースのリレーショナルデータベース管理システム(RDBMS)の1つであるMySQLの基本的な設定と使い方を学びます。MySQLは、多くのデータベース駆動のWebアプリケーションや人気のあるウェブサイトで広く使用されています。この実験が終了するとき、あなたはMySQLのインストールを確認し、初期設定をセキュアにすること、MySQLシェルにアクセスすること、およびシステムデータベースとテーブルを調べることに関する実践的な経験を得るでしょう。
便利のためにMySQLはあなたのシステムに事前にインストールされています。ただし、インストールプロセスを理解することが重要です。典型的なUbuntu環境では、次のコマンドを使用してMySQLをインストールします。
次のコマンドは参考のみです。実行する必要はありません。なぜなら、MySQLは既にあなたの環境にインストールされているからです。
## これらのコマンドを実行しないでください
sudo apt update
sudo apt install mysql-server -y
apt update
コマンドはパッケージリストを更新して、利用可能なパッケージに関する最新情報を確認します。apt install mysql-server -y
コマンドはMySQLサーバーパッケージをインストールします。-y
フラグは、インストール中に表示されるプロンプトに対して自動的に「はい」と回答するために使用されます。
まずは、MySQLのインストールを確認してその状態をチェックしましょう。
まず、デスクトップのターミナルアイコンをクリックしてターミナルウィンドウを開きます。
ターミナルに入ったら、次のコマンドを実行してMySQLの状態を確認します。
sudo service mysql status
このコマンドは、システムレベルの操作ではよく必要となる管理者特権で実行するためにsudo
を使用しています。service mysql status
の部分は、システムにMySQLサービスの現在の状態を報告させます。
MySQLが停止していることを示す出力が表示されるはずです。これは予想される結果で、まだMySQLサービスを起動していないからです。
sudo service mysql start
サービスが起動するまで数秒待った後、再度状態コマンドを実行します。
さて、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の分岐)に接続しており、現在特定のデータベースを使用していないことを示しています。
プロンプトや出力に「MariaDB」が表示されることに注意することが重要です。心配しないでください。これは、この実験を完了したり、MySQLコマンドを学んだりする能力に影響を与えません。理由は次の通りです。
したがって、プロンプトや出力に「MariaDB」が表示されたときは、この実験の目的では、それをMySQLと同じように考えることができます。ここで学ぶすべてのスキルは、現実のシナリオでMariaDBとMySQLの両方に直接適用されます。
MySQLシェルに入ったので、システムデータベースを調べましょう。これらはMySQLに事前にインストールされており、MySQLサーバー自体に関する重要な情報を含むデータベースです。
MySQLシェルで、次のコマンドを実行します。
SHOW DATABASES;
注: コマンドの末尾のセミコロン (
;
) を忘れないでください。SQLコマンドはセミコロンで終わる必要があります。
このコマンドは、MySQLサーバーに存在するすべてのデータベースを一覧表示します。次のような出力が表示されるはずです。
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
これらのデータベースが何であるか解説しましょう。
information_schema
: これは、データベースのメタデータにアクセスするためのデータベースです。mysql
: このデータベースには、MySQLサーバーの動作に必要な情報が含まれています。performance_schema
: このデータベースは、実行時にサーバーの内部実行を検査するための方法を提供します。sys
: このデータベースには、performance_schemaによって収集されたデータを解釈するのに役立つオブジェクトのセットが含まれています。この実験では、mysql
データベースに焦点を当てます。切り替えましょう。
USE mysql;
では、このデータベースにどのテーブルがあるか見てみましょう。
SHOW TABLES;
たくさんのテーブルの一覧が表示されます。これらのテーブルは、MySQLのさまざまな設定と操作データを格納しています。
システムテーブルを見てきたので、その中の1つのデータを調べましょう。mysql
データベースのuser
テーブルには、MySQLユーザーアカウントに関する情報が含まれています。
user
テーブルの構造を見るには、次のコマンドを実行します。
DESCRIBE user;
これにより、user
テーブルのすべての列が表示されます。このテーブルには、各MySQLユーザーに関する詳細な情報が含まれているため、たくさんの列が表示されます。
では、このテーブルの一部のデータを見てみましょう。いくつかの重要な列に焦点を当てます。
SELECT User, Host, Password_expired FROM user;
このクエリは、user
テーブルから4つの重要な列を選択します。
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;
これにより、通常のターミナルプロンプトに戻ります。
この実験では、Docker環境でMySQLを操作するための基本的な手順を学びました。MySQLのインストールを確認し、初期設定をセキュアにし、MySQLシェルにアクセスし、システムデータベースを調べ、システムテーブルのデータを調べました。
以下のことができるようになりました。
これらの基本的なスキルは、より高度なデータベース管理タスクの基礎を形成します。MySQLの学習を続けるにつれて、これらの基本を基に自分自身のデータベースを作成し、高度な照会を書き、さまざまなアプリケーションとMySQLを統合するようになります。覚えておいてください。練習こそがデータベース管理をマスターする鍵です。だから、さまざまなコマンドを試して、MySQLの機能をさらに探求することをためらわないでください。