2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS の EC2(Amazon Linux 2023) に MySQL インストールして外部から接続

Last updated at Posted at 2024-04-02

AWS の EC2 の Amazon Linux 2023 に MySQL インストールして外部から接続した時の備忘録メモ
初期パスワードは探すの大変だった...log から取得しかないかは謎です...
実施したのは 2024/04/03 時点です
ざっくり流れは...

  1. EC2インスタンス起動
  2. EC2ログイン
  3. MySQLインストール
  4. MySQLユーザ作成
  5. 外部からMySQL接続

EC2インスタンス起動

AMI は Amazon Linux 2023にして ssh で接続するのでキーペアとかちゃんと設定する
MySQL に外部から接続できるようにセキュリティグループを追加
そのほかは自由でOK

image.png

EC2 ログイン

windows pc で作業したので putty 使ってログイン
TeraTermがv5になったのでそれでも良いかも
putty の ppk 指定は [Connection] - [Auth] - [Credentials] のところから

image.png

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

image.png

パスワードのリセット方法

MySQL の root ユーザや作ったユーザのパスワードを忘れることがあるのでリセット方法
EC2にログインして root ユーザになってから実施する
ざっくり手順はこんな感じ

  1. MySQL定義ファイルに認証スキップの設定追加
  2. MySQL リスタート
  3. MySQL rootログイン(設定変えたのでパスワード不要)
  4. 認証スキップしたテーブルリロードしてからパスワード変更
  5. MySQL定義ファイルに追加した認証スキップの設定削除
  6. MySQL リスタート
  • MySQL定義ファイル my.cnf に認証スキップの設定追加
    • my.cnf ファイルひらく
      vi /etc/my.cnf
      
    • 最後の行に以下を追加 (パスワード無でログイン可能になる)
      skip-grant-tables
      
  • 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
      
  • MySQL サービス リスタート
    systemctl restart mysqld
    
  • MySQL パスワード入れてログインしてみる
    mysql -u root -p
    
2
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?