サーバ&アプリ開発

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

SANA

こんにちは。今回は「Ubuntu22.04にMy SQLをインストールする方法」について解説します。

特にDBサーバが必要という訳でははなかったのですが、先日Webサーバを構築したので、「ついでにDBサーバも作っちゃえ!」という勢いで作業しております。

【30分で完了】Apacheを使ったWebサーバ構築手順
【30分で完了】Apacheを使ったWebサーバ構築手順
【詳説】PythonでChatGPTを呼び出して独自APIを公開するまで
【詳説】PythonでChatGPTを呼び出して独自APIを公開するまで

現在、ConoHa VPSを使って様々なサービス開発を行ってます。VPSは専用サーバーと同様の制御をすることが可能です。例えるなら、何をやってもOKな広場が与えられたようなものです。遊園地を作っても良いですし、飲食店を作っても良いですし、やりたい放題できます。

そんな色々遊べるConoHa VPSは月額500円程度で使い放題なのでオススメです。下記のボタンからのお申し込みで最大1ヶ月無料となりますので是非お試しください。

こちらのボタン限定! 最大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';

Xからの読者コメントをお待ちしています。
ブログ更新の励みになります!
ABOUT ME
さな夫
さな夫
JTC エクストリーム中間管理職
東京生まれ。30代。大学院修了後に今のSIer会社へ就職。普段はアプリ開発の設計を担当。奥さんと子供2人とほのぼのとした日常を過ごしながら技術系のブログを執筆中。
記事URLをコピーしました