lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

AWS Lightsail(CentOS 7)にMySQL 5.7の構築

概要

ASP.NET CoreアプリをAWS LightsailのCentOS 7環境で公開するにあたりDBにMySQLを使用しているためMySQL環境を構築した手順メモです。
今回インストールするのはMySQL5.7です。

構成は下記の様な形です。

f:id:HM_Atlas:20190316194213p:plain

ASP.NET Coreアプリ + Nginxの構成部分はすでに構築済みです。 前回の記事をご参照ください。

kitigai.hatenablog.com

目次

環境

$ cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

参考サイト様

MySQLインストール

下準備:mariadbのアンインストール

CentOS 7.x系ではデフォルトでmariaDBがインストールされている様なのでアンインストールします。

$ rpm -qa | grep maria
mariadb-libs-5.5.60-1.el7_5.x86_64
$ sudo yum remove -y mariadb-libs

MySQLのインストール

yumリポジトリMySQL 5.7用に変更し、インストールします。

$ sudo yum localinstall -y http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
インストール:
  mysql57-community-release.noarch 0:el7-7

完了しました!
$ sudo yum install -y mysql mysql-devel mysql-server mysql-utilities
インストール:
  mysql-community-client.x86_64 0:5.7.25-1.el7                     mysql-community-devel.x86_64 0:5.7.25-1.el7
  mysql-community-server.x86_64 0:5.7.25-1.el7                     mysql-utilities.noarch 0:1.6.5-1.el7

依存性関連をインストールしました:
  省略

完了しました!

MySQLセットアップ

MySQLの初期化

$ sudo mysqld --user=mysql --initialize

サービス登録&起動

$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service
$ sudo systemctl status mysqld.service

mysql_secure_installationコマンドの実行

MySQLのパスワード変更等の設定をやってくれる便利なやつです。
詳細はこちらの記事がわかりやすく参考になりました。

# インストール時に設定される初期パスワードの確認
$ grep password /var/log/mysqld.log
2019-03-06T10:43:23.779473Z 1 [Note] A temporary password is generated for root@localhost: XXXXXXXXXXXX
# 設定開始
$ mysql_secure_installation

my.cnfの設定

今回は個人で作成したToDoアプリの構築メモなので顔文字用に文字コード設定を変更しています。 そのうちパフォーマンス設定もやってみたいなとか思ってます...

$ sudo vi /etc/my.cnf
  • /etc/my.cnf
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4

設定を反映するためMySQLを再起動

$ sudo systemctl restart mysqld.service

ユーザとDBスキーマの作成

アプリ専用ユーザとスキーマを作成します。

$ mysql -uroot -p
mysql> CREATE DATABASE hogehoge;
mysql> CREATE USER 'hoge'@'localhost' IDENTIFIED BY 'fuga';
mysql> GRANT ALL PRIVILEGES ON hogehoge.* TO 'hoge'@'localhost';
mysql> FLUSH PRIVILEGES;

以上で構築作業は完了になります。
このあとEntityFramework Coreから発行されたscriptなどを適用したりしています。

雑感

色んな所に公開されてる手順記事の劣化版と言う感じになってしまっているけど
ローカルメモやiTermのログは埋もれていくので整理してブログに書いとくのがあとで見直すのに一番ですね。