今回はCentOS8にMySQLのインストール、データベースとユーザーを作成し、MySQLを使用できる状態にする方法を説明します。
実施環境・導入バージョン
OS | CentOS 8 最小限のインストール |
---|---|
MySQL | 8.0.20 |
事前準備
今回はCentOS8の最小限のインストール環境のため、MySQLのパッケージの取得およびアーカイブを展開するために、wgetとtarをインストールします。
・wgetとtarをインストール
# dnf install -y tar wget
MySQLのインストール
初めに、作業用のフォルダに移動しMySQLのパッケージをダウンロードします。ダウンロード後はアーカイブを展開しパッケージをdnf localinstallコマンドでインストールします。
・作業用フォルダに移動
# cd /usr/local/src
・MySQL 8.0.20のパッケージをダウンロード
# wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.20-1.el8.x86_64.rpm-bundle.tar
・MySQL 8.0.20のアーカイブを展開
# tar xvf mysql-8.0.19-1.el8.x86_64.rpm-bundle.tar
・MySQL 8.0.20をローカルインストール
dnf localinstall mysql-community-*
MySQLインストール後、パッケージファイルを削除します。
・MySQLのパッケージを削除
# rm -rf mysql-community-*
MySQLの起動
MySQLのインストール後、systemctlコマンドでMySQLを起動します。また、再起動後の自動設定も設定します。
・MySQLを起動
# systemctl start mysqld
# systemctl enable mysqld
MySQLにログイン
MySQL起動後、rootユーザーでログインするためにrootユーザーのパスワードを調べます。
・rootユーザーのパスワードを検索
# grep 'temporary password' /var/log/mysqld.log
2020-05-04T02:08:17.724096Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: #7q0*sr(k5:Y
root@localhostの後の文字列がrootユーザーのパスワードとなります。今回の例では「7q0*sr(k5:Y」がrootユーザーのパスワードとなるため、ログイン用にコピーしておきます。
rootユーザーのパスワード検索後、MySQLにログインします。Enter passwordと表示されたら、先程のパスワードを入力します。
・MySQLにログイン
# mysql -u root -p
Enter password:
elcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 14
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MySQLの入力が表示されたらログイン成功です。
ログインの確認後、rootユーザーのパスワードを変更します。MySQLのデフォルトのパスワードポリシーは以下の内容となっています。
- パスワードの文字数は8文字以上とする
- 大文字と小文字を1文字以上入れる
- 数字を1文字以上入れる
- 記号を1文字以上入れる
そのため、要件に合わせたパスワードを以下のコマンドで設定します。パスワード部分は設定したいパスワードを入力してください。
・rootユーザーに「5e#Ej8n!o」というパスワードを設定
mysql> alter user 'root'@'localhost' identified by '5e#Ej8n!o';
もし、勉強用等で長いパスワードが面倒という人は、以下のコマンドでパスワードポリシーをLOWに設定しパスワードの文字数8文字のみにすることができます。
・MySQLのパスワードポリシーをLOWに変更
mysql> set global validate_password.policy = "LOW";
データベース、ユーザーを作成
ログイン後、作業用のデータベースを作成します。また、管理者権限が必要な内容以外でrootユーザーを使うのはセキュリティ的に良くないため、作業用のユーザーも作成します。
・作業用のtestdbという名前のデータベースを作成
mysql> create database testdb;
・testdbが作成されているか確認
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| testdb |
+--------------------+
5 rows in set (0.00 sec)
・ユーザー名「testuser」パスワード「P@ssW0rd」のユーザーを作成
mysql> create user 'testuser'@'localhost' identified by 'P@ssW0rd';
・testuserが作成されているか確認
mysql> select Host, User from mysql.user;
+-----------+------------------+
| Host | User |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
| localhost | testuser |
+-----------+------------------+
5 rows in set (0.00 sec)
・testdbを選択し、testuserにtestdbに対する全ての権限を付与
mysql> use testdb;
mysql> grant all on testdb to 'testuser'@'localhost';
※注意
今回は作業・勉強用のためデータベースに対して全ての権限を付与していますが、実際の業務等では開発・運用方針に合わせてユーザー権限を付与してください。
まとめ
- CentOS8にMySQLをインストールする場合、パッケージからインストールする
- 初回のrootユーザーのパスワードは「grep ‘temporary password’ /var/log/mysqld.log」コマンドで検索する
- MySQLへのログインは「mysql」コマンドでログインする
- ユーザーのパスワードを変更する場合は「alter user」コマンドで変更する
- データベースの作成は「create database」コマンドを使用する
- ユーザーの作成は「create user」コマンドを使用する
- データベースの選択は「use」コマンドを使用する
- ユーザーへの権限付与は「grant」コマンドを使用する