使用 AWS CLI 管理 RDS

Amazon RDS(Relational Database Service)是 AWS 的关系型数据库服务。

查询安全组

安全组需要放行 TCP 3306 端口。

  1. 查询安全组列表:

    aws ec2 describe-security-groups --query 'SecurityGroups[].{GroupId:GroupId,GroupName:GroupName}'
    
  2. 保存安全组 ID:

    export GROUP_ID=$(aws ec2 describe-security-groups --group-names 'my-security-group' --query "SecurityGroups[0].GroupId" --output text)
    
  3. 添加 TCP 3306 放行规则:

    aws ec2 authorize-security-group-ingress \
        --group-id $GROUP_ID \
        --protocol tcp \
        --port 3306 \
        --cidr 0.0.0.0/0
    
  4. 检查安全组放行规则:

    aws ec2 describe-security-groups \
        --group-names 'my-security-group' \
        --query 'SecurityGroups[*].IpPermissions[*].{IpProtocol:IpProtocol,FromPort:FromPort,ToPort:ToPort,IpRanges:IpRanges}'
    

创建 RDS

  1. 创建数据库实例:

    aws rds create-db-instance \
        --engine 'mysql' \
        --engine-version '8.0.39' \
        --db-instance-identifier 'my-db' \
        --master-username 'root' \
        --master-user-password 'password-longer-than-8-bits' \
        --db-instance-class 'db.t4g.micro' \
        --vpc-security-group-ids $GROUP_ID \
        --allocated-storage 20
    
  2. 查询数据库实例:

    aws rds describe-db-instances \
        --db-instance-identifier 'my-db' \
        --query 'DBInstances[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBInstanceStatus:DBInstanceStatus,Engine:Engine,EngineVersion:EngineVersion,MasterUsername:MasterUsername,Endpoint:Endpoint}'
    

    等待 5 分钟左右,当 DBInstanceStatus 变为 available 时,保存 Endpoint.Address 字段到 ADDRESS 环境变量:

    export ADDRESS='my-db.abcdefghijkl.us-east-1.rds.amazonaws.com'
    
  3. 连接数据库实例:

    mysql -h $ADDRESS -P 3306 -u 'root' -p
    

    如果你本地没有安装 MySQL:

    docker run -it --rm mysql:8.0.39 mysql -h $ADDRESS -P 3306 -u 'root' -p
    

删除 RDS

  1. 查询数据库实例:

    aws rds describe-db-instances --query 'DBInstances[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBInstanceStatus:DBInstanceStatus,Engine:Engine,EngineVersion:EngineVersion,MasterUsername:MasterUsername,Endpoint:Endpoint}'
    
  2. 删除数据库实例:

    aws rds delete-db-instance \
        --db-instance-identifier 'my-db' \
        --skip-final-snapshot
    

Troubleshooting

由于墙的缘故,国内可能会出现连不上数据库的情况:

Error: Couldn't resolve host "my-db.abcdefghijkl.us-east-1.rds.amazonaws.com"

我暂时没想到解决办法。

posted @ 2025-01-09 19:19  Undefined443  阅读(54)  评论(0)    收藏  举报