使用 AWS CLI 管理 RDS
Amazon RDS(Relational Database Service)是 AWS 的关系型数据库服务。
查询安全组
安全组需要放行 TCP 3306 端口。
-
查询安全组列表:
aws ec2 describe-security-groups --query 'SecurityGroups[].{GroupId:GroupId,GroupName:GroupName}' -
保存安全组 ID:
export GROUP_ID=$(aws ec2 describe-security-groups --group-names 'my-security-group' --query "SecurityGroups[0].GroupId" --output text) -
添加 TCP
3306放行规则:aws ec2 authorize-security-group-ingress \ --group-id $GROUP_ID \ --protocol tcp \ --port 3306 \ --cidr 0.0.0.0/0 -
检查安全组放行规则:
aws ec2 describe-security-groups \ --group-names 'my-security-group' \ --query 'SecurityGroups[*].IpPermissions[*].{IpProtocol:IpProtocol,FromPort:FromPort,ToPort:ToPort,IpRanges:IpRanges}'
创建 RDS
-
创建数据库实例:
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 -
查询数据库实例:
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' -
连接数据库实例:
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
-
查询数据库实例:
aws rds describe-db-instances --query 'DBInstances[*].{DBInstanceIdentifier:DBInstanceIdentifier,DBInstanceStatus:DBInstanceStatus,Engine:Engine,EngineVersion:EngineVersion,MasterUsername:MasterUsername,Endpoint:Endpoint}' -
删除数据库实例:
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"
我暂时没想到解决办法。

浙公网安备 33010602011771号