RDS(MySQL)への踏み台サーバーの設定について。

Amazon Linux 2023

デフォルトでは mysql client に対応していなくて mariadb になります。 そのため、MySQLへの接続用Clientとして mariadbをインストールします。

sudo yum install mariadb105

成功すると、以下のように4個パッケージがインストールされているはずです。

sudo yum list mariadb*
Last metadata expiration check: 1:04:41 ago on Thu Jan 23 12:03:53 2025.
Installed Packages
mariadb-connector-c.x86_64                    3.1.13-1.amzn2023.0.3        @amazonlinux
mariadb-connector-c-config.noarch             3.1.13-1.amzn2023.0.3        @amazonlinux
mariadb105.x86_64                             3:10.5.25-1.amzn2023.0.1     @amazonlinux
mariadb105-common.x86_64                      3:10.5.25-1.amzn2023.0.1     @amazonlinux
Available Packages
....

CDK

CDKで作成するEC2踏み台サーバーに mariadbクライアント をインストールする場合、 Ec2.CloudFormationInit.fromConfigSets が使えます。 Amazon Linux 2023なら、以下のように Ec2.InitPackage.yum で "mariadb105" をインストールできます。

init: Ec2.CloudFormationInit.fromConfigSets({
        configSets: {
          default: ["yumPreinstall", "config"],
        },
        configs: {
          yumPreinstall: new Ec2.InitConfig([
            Ec2.InitCommand.shellCommand("yum update -y"),
            Ec2.InitPackage.yum("mariadb105"),
          ]),
        },
      }),

例 CDKのEC2インスタンス作成

    const bastion = new Ec2.Instance(this, `${stackName}AmazonLinux2023`, {
      vpc: vpc,
      vpcSubnets: { subnetType: Ec2.SubnetType.PUBLIC },
      role: bastionRole,
      securityGroup: bastionSg,
      instanceName: `${stackName}AmazonLinux2023`,
      instanceType: Ec2.InstanceType.of(
        Ec2.InstanceClass.T3,
        Ec2.InstanceSize.MICRO
      ),
      machineImage: new Ec2.AmazonLinuxImage({
        generation: Ec2.AmazonLinuxGeneration.AMAZON_LINUX_2023,
        cpuType: Ec2.AmazonLinuxCpuType.X86_64,
      }),

      // 秘密鍵
      keyPair: Ec2.KeyPair.fromKeyPairName(this, "jp_test", "jp_test_keypair"),

      // SSMを有効
      ssmSessionPermissions: true,

      init: Ec2.CloudFormationInit.fromConfigSets({
        configSets: {
          default: ["yumPreinstall", "config"],
        },
        configs: {
          yumPreinstall: new Ec2.InitConfig([
            Ec2.InitCommand.shellCommand("yum update -y"),
            Ec2.InitPackage.yum("mariadb105"),
          ]),
        },
      }),
    });

mariadbクライアントの設定

Amazon Linux 2023で yum か dnf でmariadbクライアントをインストールすると、設定ファイルは /etc/my.cnf.d/ に作成されます。 MySQLへの接続用Clientの設定は以下になります。

/etc/my.cnf.d/client.cnf

インストール後の中身は以下のようになります。

#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#


[client]

# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]

RDS(MySQL)接続のクライアント文字コードを設定する場合、clientの項目に default-character-set を設定します。

[client]
default-character-set = utf8mb4

接続方法

接続先、ユーザー、パスワードをSecret Managerのシークレット等で確認したら、mariadbコマンドで接続します。

mariadb -h [接続先] -u [ユーザー名] -p

$ mariadb -h xxxstack-xxx1234abcd-efghijklmnod.xxxxx.ap-northeast-1.rds.amazonaws.com -u admin -p