本教程介绍如何使用Alibaba Cloud SDK for Java创建RDS MySQL数据库并添加管理员账号。

前提条件

在使用本教程之前,请确保已完成以下操作:

  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)
    <dependencies>     <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --&gt;     <dependency&gt;         <groupId>com.aliyun</groupId>         <artifactId>aliyun-java-sdk-core</artifactId>         <version>4.4.3</version>     </dependency>     <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-rds -->     <dependency>         <groupId>com.aliyun</groupId>         <artifactId>aliyun-java-sdk-rds</artifactId>         <version>2.3.9</version>     </dependency> </dependencies>

代码示例

import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.exceptions.ServerException; import com.aliyuncs.profile.DefaultProfile; import com.aliyuncs.rds.model.v20140815.*; import com.google.gson.Gson; import java.util.UUID;  /**  * CreateDBInstance     创建一个RDS实例。  * CreateDatabase    在某个实例下创建数据库。  * CreateAccount    创建管理数据库的账号。  */  public class TestCreateDatabase {      public static void main(String[] args) {         // 初始化请求参数         IAcsClient client = Initialization();         // 创建RDS实例         String DBInstanceId = CreateDBInstance(client);         // 在实例下创建数据库         CreateDatabase(client, DBInstanceId);         // 创建数据库账号         CreateAccount(client, DBInstanceId);     }     /**      * 初始化公共请求参数。      */     private static IAcsClient Initialization() {         // 初始化请求参数         DefaultProfile profile = DefaultProfile.getProfile(                 "<your-region-id>",// 地域ID                 "<your-access-key-id>",// 您的AccessKey ID                 "<your-access-key-secret>");// 您的AccessKey Secret         return new DefaultAcsClient(profile);     }     /**      * 创建RDS实例。      *      * @param client      * @return      */     private static String CreateDBInstance(IAcsClient client) {         CreateDBInstanceRequest request = new CreateDBInstanceRequest();         // 数据库类型取值:MySQL/SQLServer/PostgreSQL/PPAS/MariaDB。         request.setEngine("MySQL");         // 数据库版本,取值:         // MySQL:5.5/5.6/5.7/8.0;         // SQL Server:2008r2/2012/2012_ent_ha/2012_std_ha/2012_web/2016_ent_ha/2016_std_ha/2016_web/2017_ent;         // PostgreSQL:9.4/10.0;         // PPAS:9.3/10.0;         // MariaDB:10.3。         request.setEngineVersion("5.7");         // 实例规格,详见实例规格表。         request.setDBInstanceClass("mysql.n4.xlarge.1");         // 实例存储空间,单位:GB。每5GB进行递增,详见实例规格表。         request.setDBInstanceStorage(20);         // 实例的网络连接类型,取值:         // Internet:公网连接;         // Intranet:内网连接。         request.setDBInstanceNetType("Internet");         // 实例的付费类型,取值:         // Postpaid:后付费(按量付费);         // Prepaid:预付费(包年包月)。         request.setPayType("Postpaid");         // 该实例的IP白名单,多个IP地址请以英文逗号(,)隔开,不可重复,最多1000个。支持如下两种格式:         // IP地址形式,例如:10.23.12.24;         // CIDR形式,例如:10.23.12.24/24(无类域间路由,24表示了地址中前缀的长度,范围为1~32)。         request.setSecurityIPList("30.40.53.25");         // 字符集,取值:         // MySQL/MariaDB实例:utf8、gbk、latin1、utf8mb4;         // SQL Server实例:Chinese_PRC_CI_AS、Chinese_PRC_CS_AS、SQL_Latin1_General_CP1_CI_AS、SQL_Latin1_General_CP1_CS_AS、Chinese_PRC_BIN。         request.setSystemDBCharset("utf8");         // 实例名称,长度为2~256个字符。以中文、英文字母开头,可以包含数字、中文、英文、下划线(_)、短横线(-)。         request.setDBInstanceDescription("测试数据库");         // 用于保证请求的幂等性,防止重复提交请求。         // 由客户端生成该参数值,要保证在不同请求间唯一,最大值不超过64个ASCII字符,且该参数值中不能包含非ASCII字符。         request.setClientToken(UUID.randomUUID().toString());         // 可用区ID。多可用区用英文冒号(:)分隔。         // 指定了VPC和交换机时,为匹配交换机对应的可用区,该参数必填。         //request.setZoneId("cn-hangzhou-b:cn-hangzhou-a:cn-hangzhou-h");         request.setZoneId("cn-hangzhou-b");         // 实例的网络类型,取值:         // VPC:VPC网络;         // Classic:经典网络。         request.setInstanceNetworkType("Classic");         // 实例的访问模式,取值:         // Standard:标准访问模式;         // Safe:数据库代理模式。         request.setConnectionMode("Standard");         // 实例存储类型,取值:         // local_ssd/ephemeral_ssd:本地SSD盘(推荐);         // cloud_ssd:SSD云盘;         // cloud_essd:ESSD云盘。         request.setDBInstanceStorageType("cloud_ssd");         try {             // 发起请求并获取返回值             // 正确的response对象中包含实例ID、数据库连接地址和数据库连接端口。(请自行保存)。             CreateDBInstanceResponse response = client.getAcsResponse(request);             // 获取数据库连接地址和数据库连接端口。             response.getConnectionString();             response.getPort();             //  获取新创建的实例ID。             String dbInstanceId = response.getDBInstanceId();             // 因为创建数据库和账号需要实例ID,所以这里需要把实例ID返回             System.out.println("---------------------------RDS实例创建成功-----------------------------------");             return dbInstanceId;         } catch (ServerException e) {             e.printStackTrace();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());         }         return null;     }      /**      * 在实例下创建数据库。      *      * @param client      * @param DBInstanceId      */     private static void CreateDatabase(IAcsClient client, String DBInstanceId) {         // 创建APi请求并获取参数         CreateDatabaseRequest request = new CreateDatabaseRequest();         // 实例ID         request.setDBInstanceId(DBInstanceId);         // 数据库名称         request.setDBName("test11221");         // 字符集         request.setCharacterSetName("utf8");         // 数据库描述         request.setDBDescription("测试用数据库");         try {             CreateDatabaseResponse response = client.getAcsResponse(request);             // 处理业务逻辑             System.out.println("---------------------------数据库创建成功-----------------------------------");             // 在这里处理业务逻辑。             System.out.println(new Gson().toJson(response));         } catch (ServerException e) {             e.printStackTrace();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());         }     }      /**      * 创建数据库账号。      *      * @param client      * @param DBInstanceId      */     private static void CreateAccount(IAcsClient client, String DBInstanceId) {         // 创建APi请求并获取参数         CreateAccountRequest request = new CreateAccountRequest();         // 实例ID         request.setDBInstanceId(DBInstanceId);         // 数据库账号名称         request.setAccountName("test11221");         // 数据库账号的密码。         request.setAccountPassword("test123456");         // 账号描述         request.setAccountDescription("测试账号");         // 账号类型,取值:Normal:普通账号;Super:高权限账号。         request.setAccountType("Normal");         try {             CreateAccountResponse response = client.getAcsResponse(request);             System.out.println("---------------------------数据库账号创建成功-----------------------------------");             // 在这里处理业务逻辑。             System.out.println(new Gson().toJson(response));         } catch (ServerException e) {             e.printStackTrace();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());         }     } }

执行结果

正确的返回结果类似如下:

---------------------------RDS实例创建成功-----------------------------------  ---------------------------数据库创建成功------------------------------------ { "requestId":"5D32613E-8CFC-43D3-B3AB-3E0C26AC85D5" } ---------------------------数据库账号创建成功--------------------------------- { "requestId":"D814A0ED-B984-4F2B-88B2-2F7FF7C944DC" }