互联网应用开发实践:MySQL数据库部署与操作(Docker、SpringBoot)

基础环境

本次的实验环境是CentOS 7.9 已经安装了宝塔面板,并安装了Docker管理器3.9.1


MySQL的安装与部署

1. 在Docker中安装MySQL

【将Docker中MySQL数据库挂载到服务器】
将Docker中的数据以及配置文件映射到服务器的文件系统上,这样当删除了Docker容器后,之前的数据记录依然存在。

docker run --restart=always --privileged=true -d \
-v /dockerImageFile/mysql/data:/var/lib/mysql \
-v /dockerImageFile/mysql/conf:/etc/mysql/conf.d \
-v /dockerImageFile/mysql/my.cnf:/etc/mysql/my.cnf 
-p 3306:3306 \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7
  • -v:文件挂载(宿主机文件路径:Docker容器文件路径);
  • -p:端口映射(对外暴露端口:Docker容器内部端口);
  • --name:容器名称;
  • MYSQL_ROOT_PASSWORD=123456:设置MySQL数据库的初始root密码为123456
  • mysql:5.7:指定MySQL版本为5.7。

【若不需要挂载的话可以正常运行下面的命令】

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

【注意】:上述指令只适用于Linux、Windows系统等x86架构芯片的机器,若为M1芯片,需要使用如下命令安装较新的MySQL版本。

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server

可能会遇到的错误

※ 数据库管理工具连接错误

错误提示Host '172.17.0.1' is not allowed to connect to this MySQL server

说明所连接的用户帐号没有远程连接的权限,只能在本机(localhost)登录,需更改 MySQL 数据库里的 user 表里的 host 项。

  • 进入容器:
docker exec -it mysql /bin/bash
  • 登录MySQL:
mysql -uroot -p123456
  • 修改权限表格
use mysql;
update user set host = '%' where user = "root";
flush privileges;
※ 无修改权限

错误提示Access denied for user 'dorm'@'%to database 'xxx'

grant all privileges on *.* to 'dorm'@'%';

2. 在Docker中安装phpMyAdmin

phpMyAdmin 是一种 MySQL图形化 管理工具,该工具是基于 Web 跨平台的管理程序,并且支持简体中文。在宿主机的命令行运行下面的代码即可安装。

docker run --name phpmyadmin -p 8080:80 --link mysql:db -d phpmyadmin/phpmyadmin:latest
  • phpmyadmin:容器名称;
  • 8080:80:开放端口 8080 来映射宿主机的 80 端口;
  • mysql:刚才设置的MySQL的容器名称,如果刚才修改容器名称的话,一定记得要在这里修改。

安装完成后,通过 公网IP:8080 即可访问如下页面,初始账号为 root,密码为刚才设置的MYSQL_ROOT_PASSWORD=后面的内容(123456

PHPMyAdmin

可能会遇到的问题

※ 无法访问phpMyAdmin

这种情况大多数是因为防火墙(或服务器的安全组规则)导致的。因为刚才自定义的 8080 端口在服务器中是默认不开放的,所以要配置服务器的安全组,将其开放。

腾讯云开放安全组

3. 创建账户与数据库

新建一个项目账户(dorm),如下图所示。
新增项目用户

【注意】:在项目中尽量不要使用root用户管理项目,而是单独创建以该项目名称为命名的数据库账户,并建立同名的数据库进行管理。

4. 本地MySQL的安装与操作

本人使用的是M1的Mac环境,因此对应安装了M1版本的Docker和MySQL,具体步骤和①两步类似,所以这里就不再赘述。
本地是数据库管理软件我使用的的是免费开源的数据库管理软件“Sequel Ace”,它具有数据库管理软件的基本功能,在AppStore中就可以搜索到,而且是完全免费的。
Sequel Ace

设计数据库


SpringBoot 连接 MySQL

1. porm.xml 文件

在 porm.xml 文件中的<dependencies>中添加 JDBC 的依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

更新 Maven 依赖。

2. application.yml 文件

修改SpringBoot配置文件,application.yml 文件,增加数据库相关信息。

server:  
  port: 8090
spring:
  datasource:
	# url: jdbc:mysql://127.0.0.1:3306/DORM  # 本地测试环境
    url: jdbc:mysql://42.194.xxx.xx:3306/dorm	# 服务器环境
    username: dorm
    password: dorm
    driver-class-name: com.mysql.cj.jdbc.Driver

3. Java类文件

添加Java类文件,DormInfo.java。

package com.songxj.dormitory_system.api;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;
import java.util.Map;


@Controller
public class DormInfo {
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @RequestMapping(value = "/dormInfo", method = RequestMethod.GET)
    @ResponseBody
    public List<Map<String, Object>> getDormInfo() {
        String sql = "select * from dorm"; // SQL查询语句
        return jdbcTemplate.queryForList(sql);
    }
}

4. 本地测试

本地测试结果如下:

本地测试

5. 打包 jar 包

打jar包

6. 本地开发环境连接服务器Docker

连接Docker宿主机,修改Docker服务文件

vi  /lib/systemd/system/docker.service

将原来的ExecStart前面加上#号注释掉,然后在下面追加一行

ExecStart=/usr/bin/dockerd    -H tcp://0.0.0.0:2375    -H unix:///var/run/docker.sock

重新加载配置

systemctl daemon-reload

重启Docker服务

systemctl restart docker.service

开放宿主机安全组中的 2375 端口
开放宿主机安全组中的2375端口

在IDEA中安装Docker插件。
Docker插件

在Docker插件中连接宿主机服务器
配置Docker

7. Docker 在本地创建(build)并运行(run)镜像

  • 创建镜像
docker build -t dorm_sys:1.0.0 . 
  • 运行镜像
docker run -d -p 10110:8090 --name dorm_sys dorm_sys:1.0.0

【M1芯片打包的jar包在Linux环境无法运行】

  • M1芯片(arm64)构建Linux(amd64)可运行的镜像
docker build --platform linux/amd64 -t dorm_sys:1.0.0 . 

8. 上传本地镜像到阿里云

首先在阿里云免费申请容器镜像服务(https://cr.console.aliyun.com/repository/

  • 登录阿里云容器镜像服务
docker login --username=songxj01 registry.cn-hangzhou.aliyuncs.com
  • 上传镜像
docker tag dorm_sys:1.0.0 registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0
docker push registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0

9. 在服务器拉取镜像并运行

docker pull registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0
docker run -d -p 10110:8090 --name dorm_sys registry.cn-hangzhou.aliyuncs.com/songxj01/dorm_sys:1.0.0

在线测试:
在线测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值