• 阿里云有奖体验:如何使用 PolarDB-X


    体验简介

    场景将提供一台配置了CentOS 8.5操作系统的ECS实例(云服务器)。通过本教程的操作,以Spring和WordPress官方教程为例,带你体验Spring Boot+PolarDB-X和WordPress+PolarDB-X的应用开发之旅。点击前往

    实验准备

    1. 创建实验资源

    开始实验之前,您需要先创建ECS实例资源。

    1. 在实验室页面,单击 创建资源

    2. (可选)在实验室页面左侧导航栏中,单击 云产品资源 列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。

    说明:资源创建过程需要1~3分钟。

    2. 安装PolarDB-X

    本步骤将指导您如何安装PolarDB-X。

    1. 安装并启动Docekr。
    1. 执行如下命令,安装Docker。
    curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    
    • 1
    1. 执行如下命令,启动Docker。
    systemctl start docker
    
    • 1
    1. 执行如下命令,安装PolarDB-X。
    docker run -d --name some-polardb-x -p 8527:8527 polardbx/polardb-x:2.1.0
    
    • 1

    3. 登录PolarDB-X数据库

    本步骤将指导您如何登录PolarDB-X数据库。

    PolarDB-X支持通过MySQL Client命令行、第三方客户端以及符合MySQL交互协议的第三方程序代码进行连接。本实验场景主要介绍如何通过MySQL Client命令行连接到PolarDB-X数据库。

    1. 执行如下命令,安装MySQL。
    yum install mysql -y
    
    • 1
    1. 执行如下命令,查看MySQL版本号。
    mysql -V
    
    • 1

    返回结果如下,表示您已成功安装MySQL。

    1. 执行如下命令,登录PolarDB-X数据库。

    说明

    • 本实验场景中的PolarDB-X数据库用户名和密码已预设,请您使用下方命令登录即可。

    • 如遇到 mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2013 (HY000): Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0 报错,请您稍等一分钟,重新执行登录命令即可。

    mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
    
    • 1

    返回结果如下,表示您已成功登录PolarDB-X数据库。

    4.输入exit退出数据库。

    4. 安装JDK

    本步骤将指导您如何在云服务器ECS上安装JDK。

    1. 执行如下命令,使用yum安装JDK 1.8。
    yum -y install java-1.8.0-openjdk*
    
    • 1
    1. 执行如下命令,查看是否安装成功。
    java -version
    
    • 1

    返回结果如下,表示您已成功安装JDK 1.8。

    5. 体验Spring Boot+PolarDB-X应用开发

    本步骤将指导您如何下载并编辑Spring Boot样例工程,并连接PolarDB-X数据库。详情请参见Spring Boot官方教程

    1. 安装Git。

    执行如下命令,安装Git。

    yum -y install git
    
    • 1
    1. 下载Spring Boot样例工程。

    2.1 执行如下命令,下载Spring Boot样例工程。

    git clone https://github.com/spring-guides/gs-accessing-data-mysql.git
    
    • 1

    2.2 执行如下命令,进入initial目录。

    cd gs-accessing-data-mysql/initial
    git checkout b8408e3a1e05008811d542b706107d45160556ac
    
    • 1
    • 2

    2.3 执行如下命令,查看样例工程代码。

    ls
    
    • 1
    1. 创建数据库。

    3.1 执行如下命令,登录PolarDB-X数据库。

    mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
    
    • 1

    3.2 执行如下SQL语句,创建数据库db_example。

    create database db_example;
    
    • 1

    3.3 执行如下SQL语句,创建用户springuser。

    create user 'springuser'@'%' identified by 'ThePassword';
    
    • 1

    3.4 执行如下SQL语句,给用户springuser授权。

    grant all on db_example.* to 'springuser'@'%';
    
    • 1

    3.5 输入exit退出数据库。

    1. 配置application.properties文件,将数据库连接到Spring Boot样例工程。

    4.1 执行如下命令,打开application.properties配置文件。

    vim src/main/resources/application.properties
    
    • 1

    4.2 按i键进入编辑模式,找到参数spring.datasource.url,并将参数值中的端口号修改为8527。

    spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:8527/db_example
    
    • 1

    4.3 修改完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。

    1. 创建Entity Model。

    5.1 执行如下命令,创建一个User类。

    vim src/main/java/com/example/accessingdatamysql/User.java
    
    • 1

    5.2 将如下代码复制粘贴到User类中。

    package com.example.accessingdatamysql;
    
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    
    @Entity // This tells Hibernate to make a table out of this class
    public class User {
      @Id
      @GeneratedValue(strategy=GenerationType.AUTO)
      private Integer id;
    
      private String name;
    
      private String email;
    
      public Integer getId() {
        return id;
      }
    
      public void setId(Integer id) {
        this.id = id;
      }
    
      public String getName() {
        return name;
      }
    
      public void setName(String name) {
        this.name = name;
      }
    
      public String getEmail() {
        return email;
      }
    
      public void setEmail(String email) {
        this.email = email;
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    5.3 修改完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。

    1. 创建Repository,保存用户记录。

    6.1 执行如下命令,创建一个UserRepository类。

    vim src/main/java/com/example/accessingdatamysql/UserRepository.java
    
    • 1

    6.2 将如下代码复制粘贴到UserRepository类中。

    package com.example.accessingdatamysql;
    
    import org.springframework.data.repository.CrudRepository;
    
    import com.example.accessingdatamysql.User;
    
    // This will be AUTO IMPLEMENTED by Spring into a Bean called userRepository
    // CRUD refers Create, Read, Update, Delete
    
    public interface UserRepository extends CrudRepository<User, Integer> {
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    6.3 修改完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。

    1. 创建一个Controller类,处理对应用程序的HTTP请求。

    7.1 执行如下命令,创建一个MainController类。

    vim src/main/java/com/example/accessingdatamysql/MainController.java
    
    • 1

    7.2 将如下代码复制粘贴到MainController类中。

    package com.example.accessingdatamysql;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PostMapping;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller // This means that this class is a Controller
    @RequestMapping(path="/demo") // This means URL's start with /demo (after Application path)
    public class MainController {
      @Autowired // This means to get the bean called userRepository
             // Which is auto-generated by Spring, we will use it to handle the data
      private UserRepository userRepository;
    
      @PostMapping(path="/add") // Map ONLY POST Requests
      public @ResponseBody String addNewUser (@RequestParam String name
          , @RequestParam String email) {
        // @ResponseBody means the returned String is the response, not a view name
        // @RequestParam means it is a parameter from the GET or POST request
    
        User n = new User();
        n.setName(name);
        n.setEmail(email);
        userRepository.save(n);
        return "Saved";
      }
    
      @GetMapping(path="/all")
      public @ResponseBody Iterable<User> getAllUsers() {
        // This returns a JSON or XML with the users
        return userRepository.findAll();
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    7.3 修改完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。

    1. 创建一个Application。

    **说明 :**Spring Boot样例工程中已为您创建好AccessingDataMysqlApplication类,您可跳过此步骤。

    8.1 执行如下命令,创建一个AccessingDataMysqlApplication类。

    vim src/main/java/com/example/accessingdatamysql/AccessingDataMysqlApplication.java
    
    • 1

    8.2 按i键进入编辑模式,将如下代码复制粘贴到User类中。

    package com.example.accessingdatamysql;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class AccessingDataMysqlApplication {
    
      public static void main(String[] args) {
        SpringApplication.run(AccessingDataMysqlApplication.class, args);
      }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    8.3 修改完成后的文件内容如下所示。按下Esc键后,输入:wq后按下Enter键保存并退出。

    1. 运行Spring Boot样例工程。

    执行如下命令,运行Spring Boot样例工程。

    ./gradlew bootRun
    
    • 1

    请您耐心等待大约两分钟,返回结果如下,表示您成功运行。

    1. 测试。

    10.1 在实验页面,单击右上角的图标,创建新的终端窗口。

    10.2 在新的终端窗口中,执行如下命令,增加一条记录。

    curl localhost:8080/demo/add -d name=First -d email=username@example.com
    
    • 1

    返回结果如下,表示您成功增加一条记录。

    10.3 执行如下命令,查询记录。

    curl 'localhost:8080/demo/all' 
    
    • 1

    返回结果如下,您可以查询到刚刚增加的记录信息。

    10.4 执行如下命令,登录PolarDB-X数据库。

    mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
    
    • 1

    10.5 执行如下SQL语句,使用数据库。

    use db_example;
    
    • 1

    10.6 执行如下SQL语句,查询user表。

    select * from user;
    
    • 1

    返回如下结果,您可以在user表查询到刚刚增加的记录。

    10.7 输入exit退出数据库。

    6. (选做)体验WordPress+PolarDB-X部

    署博客站点

    本步骤将指导您如何使用Wordpress的Docker镜像和PolarDB-X搭建一个博客站点。Wordpress提供了Docker镜像,方便其快速安装,详情请参见WordPress的Docker Hub主页

    1. 安装WordPress。

    1.1 在实验页面,切换至第一个终端窗口。按Ctrl+C键,停止运行Spring Boot样例工程。

    1.2 执行如下命令,安装WordPress。

    docker run --name some-wordpress -p 9090:80 -d wordpress
    
    • 1
    1. 创建WordPress的数据库。

    2.1 执行如下命令,登录PolarDB-X数据库。

    mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
    
    • 1

    2.2 执行如下SQL语句,创建数据库wordpress。

    create database wordpress MODE='AUTO';
    
    • 1

    2.3 输入exit退出数据库。

    1. 配置WordPress。

    3.1 在您的本机浏览器中,打开新页签,访问http://<ECS的弹性IP>:9090。

    说明:您需要将<ECS的弹性IP>替换为云产品资源列表中的ECS的弹性IP。

    3.2 在初始化页面,选择简体中文,单击继续

    3.3 在准备页面,单击现在就开始

    3.4 在数据库配置页面,参考说明配置数据库信息,单击提交

    参数说明:

    • 数据库名 :默认为 wordpress 。

      • 用户名 :输入 polardbx_root 。

      • 密码 :输入 123456 。

      • 数据库主机 :输入 <ECS的弹性IP>:8527 。您需要将 <ECS的弹性IP> 替换为云产品资源列表中的ECS的弹性IP。

      • 表前缀 :默认为 wp_ 。

    3.5 在数据库配置完成页面,单击运行安装程序

    3.6 在信息配置页面,参考说明配置相关信息,单击安装WordPress。

    参数说明:

    • 站点标题 :输入站点标题,例如 myblog 。

      • 用户名 :输入用户名,例如 admin 。

      • 密码 :输入密码。

      • 您的电子邮箱地址 :输入邮箱地址。建议使用真实有效的邮箱地址,若没有,可以填写虚拟邮箱地址,但将无法接收信息,例如 username@example.com 。

    3.7 在成功页面,单击登录

    3.8 在登录页面,依次输入您的用户名密码,单击登录

    7. 了解更多

    恭喜完成

  • 相关阅读:
    MySQL 中的索引
    FFmpeg+javacpp+javacv使用
    (个人记录)Ensight后处理EDEM学习笔记
    linux学习(3)—— linux系统的常用命令
    C语言真题卷(1)
    期货交易需要多大的本钱?仓位怎么分配?
    uniapp安卓 华为商店 vivo商店 oppo 小米 上架问题 Android中怎么才能不提前申请权限
    疫情之下,纺织人如何应对“倒春寒”?
    目标检测场景SSD-Mobilenetv1-FPN
    SQLite 简介
  • 原文地址:https://blog.csdn.net/gangyikeji/article/details/125563463