2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

EC2(AmazonLinux2)にmysql8をインストールする

Last updated at Posted at 2021-08-19

はじめに

以下の実装を目標にする。

・AmazonLinux2にmysql8をインストール

※インフラAWS化を目指している初学者
使用PC:Mac

mysqlパッケージに関する注意点

EC2AMIAmazonLinux2を選択した場合
CentOS7系がベースとなっているため
mysql8で選択すべきパッケージ
**mysql80-community-release-el7-3.noarch.rpm(2021/8/18時点)**となる。

MySQL公式ページから自分がインストールする時に適切なパッケージを確認する。

手順

1、MySQL公式ページから対象パッケージをダウンロード
2、ローカルにダウンロードしたファイルを、リモート(AWS ES2)にscpコマンドでコピー
3、ファイルからMySQLをインストールする

恐らく、遠回りな実装例だが個人的にイメージがつきやすかったのでこの方法で進める。
(mysql公式ページのURLを読み取ってインストールした方が早道)
 → 圧倒的にURL読み取りの方が楽なので、4.にまとめた

1、対象パッケージをダウンロード

下記の公式ページからパッケージをダウンロードする。
(今回はEC2のAMIにAmazonLinux2を選択しているため7系を選択する。)

スクリーンショット 2021-08-19 15.05.34.png

すると自分のローカル(MacならFinder内)にダウンロードされるので
ちゃんと出来ているか確認しておく。

2、ローカルからリモートへコピー

下記コマンドでリモートのホームディレクトリ配下にファイルを置いておく。
Macユーザーのため.sshディレクトリにEC2の秘密鍵を入れている。

ターミナル

# scp <秘密鍵の認証> <コピー元ファイル> <コピー先>
% scp -i ~/.ssh/秘密鍵名.pem ~/Downloads/mysql80-community-release-el7-3.noarch.rpm ec2-user@リモートIPアドレス:~/ 

3、mysqlインストール

まずは、EC2にログインします。

ターミナル

# ssh接続でEC2にログイン
% ssh -i ~/.ssh/秘密鍵名.pem ec2-user@リモートIPアドレス

### SSH情報を登録する場合
% vi ~/.ssh/config

##### EC2アクセス というコメント
Host ホスト名
  HostName IPアドレス
  User ec2-user
  IdentityFile ~/.ssh/秘密鍵

### コマンドを省略してEC2にログイン
% ssh ホスト名

あとは公式ページのコマンドに従って入力していく。

EC2
# デフォルトでインストール済みのMariaDBパッケージ一式を削除する
% sudo yum remove mariadb*

# yumのリポジトリにセット
% sudo yum install mysql80-community-release-el7-3.noarch.rpm

# セットできたかを確認
% yum repolist enabled | grep "mysql.*-community.*"

# mysqlをインストール
% sudo yum install mysql-community-server

# mysqlを起動
% sudo service mysqld start

# 起動確認
% sudo systemctl status mysqld.service

4.(楽)MySQLのURLを参照してyumにインストールさせる

わざわざファイルをダウンロードするのは手間なので
直接URLからインストールする方法をまとめる。(2021/01/04時点)

EC2

% sudo yum remove mariadb*

% sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-4.noarch.rpm

% sudo yum install --enablerepo=mysql80-community mysql-community-server

% sudo yum install --enablerepo=mysql80-community mysql-community-devel

% sudo service mysqld start

% sudo systemctl status mysqld.service

自分がハマった部分

冒頭で説明している
EC2のAMI(AmazonLinux2)とMySQLバージョン相性
しっかり理解しないまま、実装すると以下のドツボにハマった。

・AMIがAmazonLinux2なのにmysql8.0(8系)をダウンロード/インストールしてしまう
・間違いだと気づき、ダウンロードファイルとyumにセットされたパッケージを削除
・正しいmysql8.0(7系)シリーズをダウンロードする
・再びインストールするも依存関係のエラーが発生
・しばらく解決策の情報収集して、色々試すも解決せず
・ふとエラー文を見ると、なぜかmysqlをインストールするコマンド入力時に
 mysql8.0(8系)に変換されてしまっていることが発覚。
・ただし、どこに過去のファイルが残っていて影響しているのか特定できず
 (ネットで同じ状況の人を探すもヒットしない…)

エラー(イメージ)

% sudo yum install mysql-community-server

~ 結果 ~

インストール中     : mysql-community-client-plugins-8.0.26-1.el8.x86_64
                                   ↑el7じゃない…

ここから解決策が上手く探し出せずに、泣く泣く下記方法で解決した。

・EC2を削除して一から立て直しする

意外と同じ状態にハマる人もいるかもしれないので、記録に残す。

番外:mysqlシリーズを変更する

インストール前に
MySQL8.0ではなく、5.7や5.6に変更したい場合は
現状どのシリーズが有効になっているかを確認

ec2_ターミナル

% yum repolist all | grep mysql

デフォルトではシリーズはMySQL8.0が有効となっているので
8.0を無効に、対象シリーズを有効に変更する。

ec2_ターミナル

% sudo yum-config-manager --disable mysql80-community

% sudo yum-config-manager --enable mysql57-community

同様にmysqlをインストールする。

ec2_ターミナル

% sudo yum install mysql-community-server

終わりに

AWSのビジネスサポートに月100$で加入できるらしいので
どのタイミングで加入しようか検討中。

いま、加入したら序盤も序盤すぎて
質問の仕方も曖昧になってしまって、無駄遣いになりそう。

まずは、基本のrailsアプリをEC2上に
デプロイする所までは自力で頑張ろう。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?