MySQLのインストールと基本操作|簡単ガイド

こんにちは。今回は「Ubuntu22.04にMy SQLをインストールする方法」について解説します。
特にDBサーバが必要という訳でははなかったのですが、先日Webサーバを構築したので、「ついでにDBサーバも作っちゃえ!」という勢いで作業しております。


現在、ConoHa VPSを使って様々なサービス開発を行ってます。VPSは専用サーバーと同様の制御をすることが可能です。例えるなら、何をやってもOKな広場が与えられたようなものです。遊園地を作っても良いですし、飲食店を作っても良いですし、やりたい放題できます。
そんな色々遊べるConoHa VPSは月額500円程度で使い放題なのでオススメです。下記のボタンからのお申し込みで最大1ヶ月無料となりますので是非お試しください。

それでは始めていきましょう。
開発環境
今回の開発環境は以下となります。
サーバ:ConoHa VPS
OS:Ubuntu22.04
My SQLのインストール
まずは「My SQL」をインストールしましょう。まずはパッケージマネージャーでバージョンを確認してみると
apt show mysql-server
結果は「Version: 8.0.36-0ubuntu0.22.04.1
」となっていたので、まあ良し。(今時点の最新版だと8.2)
以下のコマンドで「mysql-server
」をインストールします。
sudo apt update
sudo apt install mysql-server
完了したら以下のコマンドで状態を確認して、「active(running)
」になっていればOKです。
sudo systemctl restart mysql # MySQL再起動
sudo systemctl status mysql # MySQL状態確認

MySQLにログインする
Rootユーザーでログインを試みます。
sudo mysql -u root -p
とログインしようと思うと、、パスワードが要求されました。。
パスワードがわからない!
「/var/log/mysql/error.log
」を見るとこんな文言が。。
2024-02-29T05:01:46.799695Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the –initialize-insecure option.
パスワード空(empty)やん。ってなったのでそのまま突き進むことに。
$ sudo mysql -u root -p
Enter password: [設定したパスワード]
mysql>
これでいったんログインすることはできました。
rootのパスワードを設定する
パスワードが空の状態なので、速攻でrootのパスワードを設定します。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
変更を有効にします。
FLUSH PRIVILEGES;
これでrootのパスワード設定が完了しました。
ユーザーを作成する
rootユーザーのパスワード設定が終わったので、新しいユーザー作成します。下記のコマンドで「TEST」というユーザーを作成します。
CREATE USER 'TEST'@'localhost' IDENTIFIED BY 'パスワード';
変更を有効にします。
FLUSH PRIVILEGES;
ログインできるか試してみましょう。
$ mysql -u TEST -p
Enter password: [設定したパスワード]
mysql>
これでOKです。
テーブルを作成する
テーブルを作成します。
1CREATE TABLE mydatabase.employees (
2 id INT AUTO_INCREMENT PRIMARY KEY,
3 first_name VARCHAR(50),
4 last_name VARCHAR(50),
5 birth_date DATE,
6 hire_date DATE
7);
mydatabaseはDB名、employeesはテーブル名を表しています。「id」 カラムは整数型で作成しプライマリーキーとします。また、新しいレコードが追加される度に自動的に1増加されるように設定します。「first_name」 と 「last_name」 には最大50文字の文字列、「birth_date」 と 「hire_date」には日付を格納できるようにします。
SQLを流す
次にレコードをINSERTしてみます。
INSERT INTO mydatabase.employees (first_name, last_name, birth_date, hire_date) VALUES
('Taro', 'Yamada', '1990-01-01', '2015-05-01'),
('Hanako', 'Tanaka', '1992-02-02', '2016-06-01'),
('Jiro', 'Sato', '1988-03-03', '2017-07-01'),
('Yumi', 'Suzuki', '1993-04-04', '2018-08-01'),
('Kenta', 'Takahashi', '1985-05-05', '2019-09-01'),
('Mika', 'Nakamura', '1991-06-06', '2020-10-01'),
('Ryo', 'Kato', '1989-07-07', '2021-11-01'),
('Nana', 'Ito', '1990-08-08', '2022-12-01'),
('Yuta', 'Watanabe', '1986-09-09', '2023-01-01'),
('Saki', 'Yoshida', '1994-10-10', '2024-02-01');
SELECT文を流してみましょう。
select * from mydatabase.employees;
1mysql> select * from mydatabase.employees;
2+----+------------+-----------+------------+------------+
3| id | first_name | last_name | birth_date | hire_date |
4+----+------------+-----------+------------+------------+
5| 1 | Taro | Yamada | 1990-01-01 | 2015-05-01 |
6| 2 | Hanako | Tanaka | 1992-02-02 | 2016-06-01 |
7| 3 | Jiro | Sato | 1988-03-03 | 2017-07-01 |
8| 4 | Yumi | Suzuki | 1993-04-04 | 2018-08-01 |
9| 5 | Kenta | Takahashi | 1985-05-05 | 2019-09-01 |
10| 6 | Mika | Nakamura | 1991-06-06 | 2020-10-01 |
11| 7 | Ryo | Kato | 1989-07-07 | 2021-11-01 |
12| 8 | Nana | Ito | 1990-08-08 | 2022-12-01 |
13| 9 | Yuta | Watanabe | 1986-09-09 | 2023-01-01 |
14| 10 | Saki | Yoshida | 1994-10-10 | 2024-02-01 |
15+----+------------+-----------+------------+------------+
1610 rows in set (0.00 sec)
17mysql>
以上となります。
Appendix
◆ユーザー権限設定
--全権限を付与
GRANT ALL PRIVILEGES ON *.* TO 'someuser'@'localhost';
--特定のテーブルに対する権限付与
GRANT SELECT, INSERT ON mydatabase.mytable TO 'someuser'@'localhost';
--権限削除
REVOKE INSERT ON mydatabase.mytable FROM 'someuser'@'localhost';
◆権限の確認
SHOW GRANTS FOR 'someuser'@'localhost';