在软件开发时,我们会搭配资料库来储存资料。以前的传统做法是下载安装程式,在电脑上安装。后来也可选择利用 Docker,下载 image 并运行 container。
但这两个方法,都必须準备一台电脑作为伺服器。若能放上云端服务,便能减少伺服器的管理工作。
本文介绍如何在 Azure 上建立 MySQL 资料库,并分别在 Workbench 这款 GUI 工具,以及 Spring Boot 后端程式来连线。
此篇亦转载到个人部落格。
一、建立资料库
首先在 Azure 上搜寻「适用于 MySQL 弹性伺服器的 Azure 资料库」。进入页面后,点击建立。azure-mysql-list.png
选择「弹性伺服器」的「进阶建立」,可看到比较多的设定选项。azure-mysql-choose-flexible-server.png
以下是笔者选择的设定,并提供 MySQL 的帐号与密码。其余则使用预设值,读者可视自己的情况调整。
- 伺服器名称:vincentdemomysql
- 区域:East Asia
- MySQL 版本:8.0
- 工作负载类型:适用于开发或嗜好专案
- 验证方法:只有 MySQL 验证
- 管理使用者名称:vincent
azure-mysql-basic-setting.png
接着切换到「网路」页籤,设定防火墙规则。设定的目的,是开放哪些 IP 可以连线到这台资料库。azure-mysql-firewall-rule-setting.png
本文为了测试用途,只简单地选择「新增 0.0.0.0 - 255.255.255.255」,代表网路上的所有 IP 都可以连进来。此时 Azure 会跳出安全性的警告,我们点击继续即可。
最后并按下「检阅 + 建立」。确认设定后,再按下「建立」,等待 Azure 部署完成。azure-mysql-review-and-create.png
虽然 Azure 会显示 MySQL 弹性伺服器的预估使用成本,但官方说明有提到,只要使用免费帐户,且使用量在每月限制内,就不需要支付费用。
二、基本管理
前往 MySQL 的资源画面,在「概观」能看见基本资讯,包含伺服器名称、管理员名称等。azure-mysql-overview.png
在「设定」→「资料库」的画面,可建立与删除资料库。此处笔者建立一个叫「demo」的资料库。azure-mysql-create-database.png
在「设定」→「备份与还原」的画面,可确认资料库的备份及其时间点。Azure 每天会自动备份一次,我们也可手动立即备份。azure-mysql-backup.png
在「设定」→「网路」的画面,可找到建立资料库时所设定的防火墙规则。若日后想更改,可在此进行设定。azure-mysql-firewall-rule-setting-2.png
在「设定」→「连线」的画面,可看见关于连线至资料库的相关说明。例如从本机的 command line 使用 MySQL 指令进行连线、汇入与汇出资料。另外也有使用 Workbench 进行连线的步骤。azure-mysql-connection.png
三、在 Workbench 连线
本节让我们使用 Workbench 这款 GUI 工具,连线到 Azure 上建立好的 MySQL 资料库。
在建立新连线的视窗中,请于 Hostname 填写第二节在「概观」中看到的伺服器名称。在 Username 填写伺服器系统管理员登入名称。而 Password 则点击「Store in Valut」后,再填写密码。azure-mysql-workbench-setup-new-connection.png
接着可点击「Test Connection」,进行测试。最后建立完成后,点击该连线便可进入。
进入后,读者就能在左方看见先前建立的「demo」资料库。mysql-workbench-schema-list.png
后续也能顺利进行 CRUD 操作。
四、在 Spring Boot 连线
本节让我们在 Spring Boot 后端程式中,针对 Azure 上的 MySQL 资料库进行配置。
首先在 pom.xml 档案中,添加依赖,包含 Spring Data JPA 框架和 MySQL 驱动程式。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
接着在 application.properties 档案中,提供 Spring Data JPA 的相关配置。
spring.datasource.url=jdbc:mysql://vincentdemomysql.mysql.database.azure.com:3306/demo
spring.datasource.username=vincent
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.properties.hibernate.dialect_version=8
spring.jpa.properties.hibernate.dialect.storage_engine=innodb
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.show_sql=true
spring.jpa.properties.hibernate.format_sql=true
由于本文是介绍连线到 Azure 上的资料库,因此请读者留意前三项配置,也就是连线字串中的伺服器名称、资料库名称,以及帐密。
完成后,启动 Spring Boot 程式。若 console 没有出现错误讯息,代表成功连线。
后续也能使用 Spring Data JPA 提供的注解(annotation),进行资料表设计。
@Entity
@Table(name = "student")
public class Student {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name", length = 30, unique = true, nullable = false)
private String name;
@Column(name = "grade")
private int grade;
// getter, setter ...
}
重新启动 Spring Boot 后,读者可回到 Workbench 确认产生后的资料表。
文章到此结束!最后宣传一下自己的部落格,我是「新手工程师的程式教室」的作者,主要发表后端相关文章,请多指教