====== Amazon Linux 2 に MySQL8 をインストール ======
# インストール済みの MySQL を確認
yum list installed | grep mysql
# インストール済みの MariaDB を確認
yum list installed | grep mariadb
# MariaDB のアンインストール
sudo yum remove mariadb-libs
# インストールされる MySQL のバージョンを確認
yum info mysql
# MySQL のバージョンが古い場合やパッケージがない場合は、リポジトリを追加
sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
# インストールされるバージョンを確認
sudo yum info --enablerepo=mysql80-community mysql-community-server
# MySQL のインストール
sudo yum install -y --enablerepo=mysql80-community mysql-community-server
# バージョン確認
mysql --version
# 起動
sudo systemctl start mysqld.service
# 自動起動
sudo systemctl enable mysqld.service
# ステータスの確認
systemctl status mysqld.service
# ログディレクトリの作成
sudo mkdir /var/log/mysql
sudo chown mysql:mysql /var/log/mysql
# my.cnfの編集
sudoedit /etc/my.cnf
log-error=/var/log/mysql/mysqld.log
slow_query_log=1
slow_query_log_file=/var/log/mysql/slow_query.log
long_query_time=0.1
validate_password.policy=LOW
# root ユーザのパスワード確認
sudo cat /var/log/mysqld.log | grep "temporary password"
# セキュリティ&パスワード設定
# 全てy
sudo mysql_secure_installation
# MySQL の再起動
sudo systemctl restart mysqld.service
# 不要になったログファイルの削除
sudo less /var/log/mysqld.log
sudo rm /var/log/mysqld.log
# MySQL にログイン
mysql -u root -p
# パスワードポリシーの確認
show variables like 'validate_password%';
# ログ設定の確認
show variables like '%log%';
# 文字コードの確認
show global variables like 'character%';
# ユーザの作成
create user USER_NAME@'localhost' identified by 'PASSWORD';
select user, host from mysql.user;
create database DB_NAME;
# 権限の付与
grant all on DB_NAME.* to USER_NAME@'localhost';
flush privileges;
show grants for USER_NAME@'localhost';
exit;
# 接続テスト
mysql -u USER_NAME -p -D DB_NAME
===== 追記:buffer pool のメモリが足りてないエラー =====
とあるサーバで、MySQL の再起動に失敗し、MySQL接続エラーが発生しました。\\
ログを確認したところ、以下のように表示されました。
> mmap(137363456 bytes) failed; errno 12
> Cannot allocate memory for the buffer pool
> Plugin initialization aborted with error Generic error.
> Failed to initialize DD Storage Engine
> Data Dictionary initialization failed.
> Aborting
> /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.22) MySQL Community Server - GPL.
原因は buffer pool のメモリが足りてないということでした。\\
デフォルトでは 128M になっているので、my.cnf を編集して適当な値に増やします。
# innodb_buffer_pool_size の変更
sudoedit /etc/my.cnf
[mysqld]
innodb_buffer_pool_size = 512M
# MySQL 再起動
sudo service mysqld restart
# MySQL に接続して、値が増えているのを確認
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name | Value |
+-------------------------+-----------+
| innodb_buffer_pool_size | 536870912 |
+-------------------------+-----------+
1 row in set (0.01 sec)