CentOS 7
Sponsored Link

MySQL 8.0 : インストール2020/01/23

MySQL 8.0 をインストールし、データベースサーバーを構築します。
[1] MySQL 8.0 は CentOS SCLo Software Collections からインストール可能です。
なお、デフォルトの MariaDB がインストールされた状態でも、Software Collections パッケージは別パスにインスールされるため、共存が可能となっています。
# SCLoからインストール

[root@www ~]#
yum --enablerepo=centos-sclo-rh -y install rh-mysql80-mysql-server
[root@www ~]#
vi /etc/opt/rh/rh-mysql80/my.cnf.d/mysql-server.cnf
# 21行目:デフォルトの文字コードを追記

[root@www ~]#
systemctl enable --now rh-mysql80-mysqld

[2] Software Collections パッケージは [/opt] 配下にインストールされます。
# 環境変数を読み込む

[root@www ~]#
scl enable rh-mysql80 bash
[root@www ~]#
mysql -V

mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
[root@www ~]#
which mysql

[3] ログイン時に自動的に有効にするには以下のように設定します。
[root@www ~]#
vi /etc/profile.d/rh-mysql80.sh
# 以下の内容で新規作成

source /opt/rh/rh-mysql80/enable
export X_SCLS="`scl enable rh-mysql80 'echo $X_SCLS'`"
[4] MySQL 8.0 を有効にして初期設定を実施します。
[root@www ~]#

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

# パスワード品質チェックを有効にするか否か
Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

# パスワード品質チェックを有効にした場合は強度を選択
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Please set the password for root here.

# MySQL root パスワードを設定
New password:

Re-enter new password:

# 入力したパスワードで良いかの確認
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production

# 匿名ユーザーを削除するか否か
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

# root ユーザーのリモートログインを無効とするか否か
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production

# テストデータベースを削除するか否か
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...

 - Removing privileges on test database...

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

# 特権情報をリロードするか否か
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

All done!

# MySQL に root ユーザーで接続

[root@www ~]#
mysql -u root -p

Enter password:    
# 設定したパスワードで認証

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.17 Source distribution

Copyright (c) 2000, 2019, 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

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

# ユーザー情報一覧表示
mysql> select user,host from mysql.user; 
| user             | host      |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
4 rows in set (0.00 sec)

# データベース一覧表示
mysql> show databases; 
| Database           |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
4 rows in set (0.01 sec)

# テストデータベース作成
mysql> create database test_database; 
Query OK, 1 row affected (0.11 sec)

# テストデータベースにテストテーブル作成
mysql> create table test_database.test_table (id int, name varchar(50), address varchar(50), primary key (id)); 
Query OK, 0 rows affected (0.42 sec)

# テストテーブルにデータ投入
mysql> insert into test_database.test_table(id, name, address) values("001", "CentOS", "Hiroshima"); 
Query OK, 1 row affected (0.04 sec)

# テストテーブル表示
mysql> select * from test_database.test_table; 
| id | name   | address   |
|  1 | CentOS | Hiroshima |
1 row in set (0.00 sec)

# テストデータベース削除
mysql> drop database test_database; 
Query OK, 1 row affected (0.27 sec)

mysql> exit
[5] MySQL を他ホストからも利用する場合 且つ Firewalld を有効にしている場合は、MySQL サービスの許可が必要です。MySQL は 3306/TCP を使用します。
[root@www ~]#
firewall-cmd --add-service=mysql --permanent

[root@www ~]#
firewall-cmd --reload