AWS の EC2 の Amazon Linux 2023 に MySQL インストールして外部から接続した時の備忘録メモ
初期パスワードは探すの大変だった...log から取得しかないかは謎です...
実施したのは 2024/04/03 時点です
ざっくり流れは...
- EC2インスタンス起動
- EC2ログイン
- MySQLインストール
- MySQLユーザ作成
- 外部からMySQL接続
EC2インスタンス起動
AMI は Amazon Linux 2023にして ssh で接続するのでキーペアとかちゃんと設定する
MySQL に外部から接続できるようにセキュリティグループを追加
そのほかは自由でOK
EC2 ログイン
windows pc で作業したので putty 使ってログイン
TeraTermがv5になったのでそれでも良いかも
putty の ppk 指定は [Connection] - [Auth] - [Credentials] のところから
root でログイン
sudo -i
MySQLインストール
-
リポジトリ
実行したら入力もとめらるのでy
を入力してエンター(コマンドに-y
追加でもOK)dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el9-5.noarch.rpm
-
パッケージ
実行したら入力もとめらるのでy
を入力してエンター(コマンドに-y
追加でもOK)dnf install mysql-community-server mysql-community-client mysql-community-devel
MySQLサーバ起動
systemctl start mysqld
MySQL の root パスワード設定、外部接続用ユーザ作成
-
MySQL の root の初期パスワード確認
cat /var/log/mysqld.log | grep root@localhost
# 実行結果はこんな感じ 2024-04-02T16:10:50.386960Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Pas*********
-
MySQL に root でログイン
コマンド実行でパスワード入力になるので上のパスワードをコピペmysql -u root -p
-
MySQL の root のパスワード変更
なんとなく初期パスワード忘れそうなので適当なやつに変更しておく
大文字・小文字・数字・記号含む8文字以上がポリシーになってるset password = 'Abc1****';
-
外部接続用のユーザ作成
ユーザ、パスワードは適当に変更する# ユーザ作成 create user 'user'@'%' identified by 'Abc1****';
# 権限追加 grant all on *.* to 'user'@'%';
# 確認用SQL select user, host from mysql.user;
外部から接続確認
windows pc の MySQL Workbench からアクセスしてみる
Hostname に EC2 のパブリックIP 、Username はさっき作ったユーザ使う
Test Connection でパスワード入力で接続設定つくってつながればOK
パスワードのリセット方法
MySQL の root ユーザや作ったユーザのパスワードを忘れることがあるのでリセット方法
EC2にログインして root ユーザになってから実施する
ざっくり手順はこんな感じ
- MySQL定義ファイルに認証スキップの設定追加
- MySQL リスタート
- MySQL rootログイン(設定変えたのでパスワード不要)
- 認証スキップしたテーブルリロードしてからパスワード変更
- MySQL定義ファイルに追加した認証スキップの設定削除
- MySQL リスタート
- MySQL定義ファイル my.cnf に認証スキップの設定追加
- my.cnf ファイルひらく
vi /etc/my.cnf
- 最後の行に以下を追加 (パスワード無でログイン可能になる)
skip-grant-tables
- my.cnf ファイルひらく
- MySQL サービス リスタート
systemctl restart mysqld
- MySQL rootログイン(設定変えたのでパスワード不要)
mysql -u root
- MySQL スキップした管理テーブルリロードからパスワード変更
- スキップした管理テーブルリロード
FLUSH PRIVILEGES;
- MySQL ユーザのパスワード変更 (以下は root リセットの例)
パスワードは大文字・小文字・数字・記号含む8文字以上がポリシーになってるALTER USER 'root'@'localhost' IDENTIFIED BY 'Abcd1***';
- スキップした管理テーブルリロード
- MySQL ログアウト
quit
- MySQL定義ファイル my.cnf に追加した認証スキップ削除
- my.cnf ファイルひらく
vi /etc/my.cnf
- 最後の行の以下を削除 ( or コメントアウト)
# skip-grant-tables
- my.cnf ファイルひらく
- MySQL サービス リスタート
systemctl restart mysqld
- MySQL パスワード入れてログインしてみる
mysql -u root -p