MySQL 8.0 を Ubuntu 22.04 にインストールする
こんにちは、@studio_meowtoon です。今回は、WSL の Ubuntu 22.04 に MySQL 8.0 をインストールする手順を紹介します。
新しい Ubuntu のバージョンに対応した記事があります。
目的
Windows 11 の Linux でクラウド開発します。
こちらから記事の一覧がご覧いただけます。
実現すること
Ubuntu 22.04 に MySQL 8.0 をインストールします。
プロジェクトにより古いバージョンの MySQL が使用されていることもあります。 以下の記事では MySQL 5.7 をインストールする方法を紹介しています。
技術トピック
MySQL とは?
こちらを展開してご覧いただけます。
MySQL
MySQL は、オープンソースのリレーショナルデータベース管理システム (RDBMS) で、世界中で広く利用されているデータベースソフトウェアです。
特徴 |
---|
MySQL は、高いパフォーマンス、拡張性、信頼性、および簡単な使用と管理性が特徴であり、Web アプリケーションや企業アプリケーションなど、さまざまな用途で使用されています。 |
MySQL は、クライアント/サーバーシステムとして動作し、多くのプログラムやWebアプリケーションから利用できます。 |
また、MySQL はオープンソースであるため、コミュニティによって開発されており、多くの開発者やユーザーが貢献しています。 |
MySQL は現在、Oracle Corporation が所有しており、Oracle Corporation から商用ライセンスも提供されています。 |
開発環境
- Windows 11 Home 22H2 を使用しています。
WSL の Ubuntu を操作しますので macOS の方も参考にして頂けます。
WSL (Microsoft Store アプリ版) ※ こちらの関連記事からインストール方法をご確認いただけます
> wsl --version
WSL バージョン: 1.0.3.0
カーネル バージョン: 5.15.79.1
WSLg バージョン: 1.0.47
Ubuntu ※ こちらの関連記事からインストール方法をご確認いただけます
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.1 LTS
Release: 22.04
この記事では基本的に Ubuntu のターミナルで操作を行います。Vim を使用してコピペする方法をはじめて学ぶ人のために、以下の記事で手順を紹介しています。ぜひ挑戦してみてください。
MySQL のインストール
MySQL の存在を確認します。
$ mysql --version
-bash: /usr/bin/mysql: そのようなファイルやディレクトリはありません
インストールします。
$ sudo apt update
$ sudo apt install mysql-server-8.0 -f
MySQL のバージョンを確認します。
$ mysql --version
mysql Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
ここまでの手順で、MySQL 8.0 を Ubuntu 22.04 にインストールすることができました。
データベースとテーブルを作成
ここでは例として The Beatles のメンバーを登録するデータベースを作成します。
MySQL を起動します。
$ sudo service mysql start
MySQL にログインします。
この記事ではとくに root パスワードを設定しません。
$ sudo mysql -u root
データベースを作成して選択します。
> CREATE DATABASE music;
> USE music;
テーブルを作成します。
> CREATE TABLE musician (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
birthdate DATE NOT NULL,
instrument VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
データベースの一覧表示をします。
> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| music |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
テーブルを確認をします。
> SHOW TABLES;
+-----------------+
| Tables_in_music |
+-----------------+
| musician |
+-----------------+
1 row in set (0.00 sec)
以下は、テーブルを削除するコマンドです。
> DROP TABLE <table_name>;
以下は、データベースを削除するコマンドです。
> DROP DATABASE <database_name>;
MySQL からログアウトします。
> exit;
Bye
ここまでの手順で、MySQL にデータベースとテーブルを作成することができました。
テーブルにデータを挿入
musician.sql を作成します。
$ cd ~/tmp
$ vim musician.sql
ファイルの内容
USE music;
INSERT INTO musician (id, name, birthdate, instrument) VALUES
(1, 'John Lennon', '1940-10-09', 'Vocal, Guitar'),
(2, 'Paul McCartney', '1942-06-18', 'Vocal, Bass'),
(3, 'George Harrison', '1943-02-25', 'Vocal, Guitar'),
(4, 'Ringo Starr', '1940-07-07', 'Vocal, Drums');
MySQL にログインします。
$ sudo mysql -u root
データベースを選択します。
> USE music;
SQL ファイルをインポートします。
> SOURCE musician.sql;
テーブルの内容を表示します。
> SELECT * FROM musician;
+----+-----------------+------------+---------------+
| id | name | birthdate | instrument |
+----+-----------------+------------+---------------+
| 1 | John Lennon | 1940-10-09 | Vocal, Guitar |
| 2 | Paul McCartney | 1942-06-18 | Vocal, Bass |
| 3 | George Harrison | 1943-02-25 | Vocal, Guitar |
| 4 | Ringo Starr | 1940-07-07 | Vocal, Drums |
+----+-----------------+------------+---------------+
4 rows in set (0.00 sec)
MySQL からログアウトします。
> exit;
Bye
ここまでの手順で、MySQL のテーブルに SQL ファイルからデータをインポートすることができました。
データベースをダンプする
データベースのテーブルスキーマとデータをファイルにダンプします。
作業ディレクトリに移動します。
※ ~/tmp を作業ディレクトリとしています。
$ cd ~/tmp
データベースをダンプします。
$ sudo mysqldump -u root music > music_dump.sql
ダンプされたファイルを確認します。
$ cat ~/tmp/music_dump.sql
ファイルの内容を確認します。
-- MySQL dump 10.13 Distrib 8.0.32, for Linux (x86_64)
--
-- Host: localhost Database: music
-- ------------------------------------------------------
-- Server version 8.0.32-0ubuntu0.22.04.2
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `musician`
--
DROP TABLE IF EXISTS `musician`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `musician` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`birthdate` date NOT NULL,
`instrument` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `musician`
--
LOCK TABLES `musician` WRITE;
/*!40000 ALTER TABLE `musician` DISABLE KEYS */;
INSERT INTO `musician` VALUES (1,'John Lennon','1940-10-09','Vocal, Guitar'),(2,'Paul McCartney','1942-06-18','Vocal, Bass'),(3,'George Harrison','1943-02-25','Vocal, Guitar'),(4,'Ringo Starr','1940-07-07','Vocal, Drums');
/*!40000 ALTER TABLE `musician` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2023-04-11 15:24:02
ここまでの手順で、データベースのテーブルスキーマ、データを含む内容を music_dump.sql ファイルにダンプすることができました。
このでの手順では、music_dump.sql ダンプファイルに CREATE DATABASE music; 文が含まれないことに注意してください。
データベースをリストアする
データベースのテーブルスキーマとデータをファイルからリストアします。
この記事の例では、データベースをいったん削除しています。
作業ディレクトリに移動します。
※ ~/tmp を作業ディレクトリとしています。
$ cd ~/tmp
MySQL にログインします。
$ sudo mysql -u root
データベースを作成して選択します。
> CREATE DATABASE music;
> USE music;
データベースをリストアします。
> source music_dump.sql;
テーブルの内容を表示します。
> SELECT * FROM musician;
MySQL からログアウトします。
> exit;
Bye
ここまでの手順で、データベースのテーブルスキーマ、データを含む music_dump.sql ダンプファイルを、新しく作成した music データベースにリストアすることができました。
アンインストール
MySQL を停止します。
$ sudo service mysql stop
MySQL パッケージを削除します。
$ sudo apt purge mysql-server mysql-client mysql-common \
mysql-server-core-* mysql-client-core-*
MySQL の設定ファイルとデータベースを削除します。
$ sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql
ここまでの手順で、MySQL 8.0 をシステムから完全にアンインストールできます。
トラブルシューティング
ポート 3306 を使用しているプロセスを確認するコマンドです。
$ sudo lsof -i :3306
もしポートが占有されている場合は、以下のコマンドでそのプロセスを終了します。
$ sudo kill -9 <nnnnn>
MySQL のソケットファイルを削除するコマンドです。
$ sudo rm /var/run/mysqld/mysqld.sock
まとめ
Ubuntu 22.04 に MySQL 8.0 をインストールして、データベースを使用する開発環境を構築することができました。
Ubuntu を使うと Linux の知識も身に付きます。最初は難しく感じるかもしれませんが、徐々に進めていけば自信を持って書けるようになります。
どうでしたか? MySQL の操作には、この他にもたくさんのコマンドがあります。みなさんも少しづつ試してみてください。今後も開発環境などを紹介しますので、ぜひお楽しみにしてください。