编辑
2026-04-03
实验
00
请注意,本文编写于 62 天前,最后修改于 0 天前,其中某些信息可能已经过时。

目录

使用RDS进行MySQL数据库操作实例
实验目的
实验环境
准备工作:申请免费资源
实验1:RDS实例创建与远程连接
步骤1:进入RDS控制台
步骤2:查看实例列表
步骤3:设置白名单
步骤4:创建数据库账号
步骤5:创建数据库并授权
步骤6:开启数据库外网访问地址
步骤7:本地Navicat远程连接RDS
步骤8:数据库操作
实验2:数据库迁移(ECS自建MySQL → RDS)
步骤1:在ECS上安装MySQL
步骤2:启动MySQL并设置开机自启
步骤3:运行安全初始化脚本
步骤4:配置root用户支持密码登录
步骤5:验证密码登录
步骤6:创建迁移用数据库和表
步骤7:创建迁移专用账户
步骤8:开启Binlog(二进制日志)
步骤9:进入DTS数据迁移服务
步骤10:配置迁移任务
步骤11:测试连接(排错过程)
步骤12:选择迁移对象
步骤13:高级配置
步骤14:数据校验配置
步骤15:预检查
步骤16:购买并启动
步骤17:查看迁移结果
实验3:使用Python连接RDS数据库
步骤1:创建Python虚拟环境并安装依赖
步骤2:编写Python程序
步骤3:运行程序验证
实验总结

使用RDS进行MySQL数据库操作实例


实验目的

  1. 掌握阿里云 RDS(关系型数据库服务)实例的创建与基本配置方法
  2. 学会通过白名单、数据库账号等方式管理 RDS 的访问权限
  3. 能够使用本地客户端(Navicat)远程连接并操作 RDS 数据库
  4. 掌握通过阿里云 DTS(数据传输服务)将 ECS 自建 MySQL 数据库迁移至 RDS 的完整流程
  5. 能够编写 Python 程序通过 PyMySQL 连接并使用 RDS 数据库中的数据

实验环境

  • 云服务:阿里云 RDS MySQL 实例、阿里云 ECS 服务器(Ubuntu)
  • 本地工具:Navicat 数据库管理工具、Windows 命令行
  • 编程环境:Python 3 + PyMySQL

准备工作:申请免费资源

访问阿里云免费试用页面 https://free.aliyun.com,申请免费的 RDS 实例ECS 服务器

参考官方试用教程完成申请。

1-1.jpg

1-2.jpg


实验1:RDS实例创建与远程连接

步骤1:进入RDS控制台

登录阿里云控制台,在顶部搜索栏搜索 "云数据库 RDS",点击进入 RDS 管理页面。

2.jpg

步骤2:查看实例列表

在 RDS 控制台左侧导航栏点击 "实例列表",可以查看已创建的 RDS 实例信息,包括实例ID、地域、数据库类型及状态等。

3实例列表.jpg

步骤3:设置白名单

点击目标实例进入详情页,在左侧菜单中选择 "数据安全性" → "白名单设置"

在设置白名单前,需要先查看本地的公网 IP 地址:

bash
# 在本地 Windows 命令行中执行 C:\Users\Administrator> curl -4 ifconfig.me 183.69.158.166

将获取到的公网 IP 地址添加到 RDS 白名单中,以允许本地设备远程访问数据库。

4白名单.jpg

步骤4:创建数据库账号

在 RDS 实例详情页,点击左侧菜单 "账号管理" → "创建账号",创建一个普通数据库用户:

  • 账号名user01
  • 账号类型:普通账号
  • 密码:自定义密码(如 User01pass

5创建数据库用户.jpg

步骤5:创建数据库并授权

在 RDS 实例详情页,点击左侧菜单 "数据库管理" → "创建数据库"

  • 数据库名mysql_test
  • 授权账号:选择 user01
  • 权限:读写(Read/Write)

创建完成后,user01 即拥有 mysql_test 数据库的读写权限。

6创建数据库-授权user01.jpg

步骤6:开启数据库外网访问地址

在 RDS 实例详情页的 "数据库连接" 区域,点击 "申请外网地址",系统会分配一个外网访问域名(如 rm-xxxxx.mysql.rds.aliyuncs.com),记录该地址用于后续远程连接。

7本地远程连接.jpg

步骤7:本地Navicat远程连接RDS

打开本地 Navicat,新建 MySQL 连接,填写以下信息:

配置项
连接名自定义(如 RDS_MySQL
主机RDS 外网地址
端口3306
用户名user01
密码对应密码

点击 "测试连接",提示成功后点击 "确定" 保存连接。

7-2Navicat创建连接.jpg

步骤8:数据库操作

在 Navicat 中双击打开 mysql_test 数据库,点击 "查询" → "新建查询",依次执行以下 SQL 语句:

(1)建表操作

sql
CREATE TABLE user( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20) NOT NULL, age TINYINT(100) NOT NULL, sex CHAR(1) NOT NULL );

(2)插入数据

sql
ALTER TABLE user AUTO_INCREMENT = 1; INSERT INTO user(name, age, sex) VALUES ('Lucas', 20, 'F'); INSERT INTO user(name, age, sex) VALUES ('Buryce', 20, 'F'); INSERT INTO user(name, age, sex) VALUES ('Lucas', 20, 'M');

(3)删除数据

sql
DELETE FROM user WHERE name LIKE 'Buryce';

(4)修改数据

sql
UPDATE user SET age = 21 WHERE name LIKE 'Lucas';

(5)查询数据

sql
SELECT * FROM user;

8数据库操作.jpg


实验2:数据库迁移(ECS自建MySQL → RDS)

步骤1:在ECS上安装MySQL

通过 SSH 登录阿里云 ECS 服务器(Ubuntu),执行以下命令安装 MySQL:

bash
sudo apt update sudo apt install mysql-server -y

步骤2:启动MySQL并设置开机自启

bash
sudo systemctl start mysql sudo systemctl enable mysql

验证 MySQL 运行状态:

bash
root@Ubuntu:/home/user01# systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Fri 2026-04-03 20:41:19 CST; 1min 53s ago Process: 15883 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 15895 (mysqld) Status: "Server is operational" Tasks: 37 (limit: 1860) Memory: 363.6M (peak: 383.5M) CPU: 1.527s CGroup: /system.slice/mysql.service └─15895 /usr/sbin/mysqld Apr 03 20:41:18 Ubuntu systemd[1]: Starting mysql.service - MySQL Community Server... Apr 03 20:41:19 Ubuntu systemd[1]: Started mysql.service - MySQL Community Server.

输出显示 Active: active (running) 表示 MySQL 服务正常运行。

步骤3:运行安全初始化脚本

bash
sudo mysql_secure_installation

按提示依次配置,默认全部选择 Y 即可(设置 root 密码、移除匿名用户、禁止远程 root 登录等)。

步骤4:配置root用户支持密码登录

bash
root@Ubuntu:/home/user01# mysql mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye

步骤5:验证密码登录

bash
root@Ubuntu:/home/user01# mysql -u root -p Enter password: (输入密码,屏幕不显示) # 成功进入 mysql> 提示符即表示配置正确

步骤6:创建迁移用数据库和表

登录 MySQL 后,创建目标迁移数据库 migrate 及测试表 staff

sql
mysql> CREATE DATABASE migrate; Query OK, 1 row affected (0.01 sec) mysql> USE migrate; Database changed mysql> CREATE TABLE staff( -> id INT PRIMARY KEY, -> name VARCHAR(10), -> age VARCHAR(10), -> sex VARCHAR(10) -> ); Query OK, 0 rows affected (0.08 sec) mysql> INSERT INTO staff VALUES(1, 'joe', '28', 'male'); Query OK, 1 row affected (0.01 sec) mysql> INSERT INTO staff VALUES(2, 'Anny', '23', 'female'); Query OK, 1 row affected (0.00 sec) mysql> INSERT INTO staff VALUES(3, 'Bob', '18', 'male'); Query OK, 1 row affected (0.01 sec)

步骤7:创建迁移专用账户

为 DTS 数据迁移服务创建一个专用账号并授权:

sql
CREATE USER 'migration'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'migration'@'%'; FLUSH PRIVILEGES;

步骤8:开启Binlog(二进制日志)

编辑 MySQL 配置文件:

bash
vim /etc/mysql/mysql.conf.d/mysql.cnf

在文件中添加以下内容:

ini
[mysqld] server_id = 2 log_bin = mysql_bin binlog_format = row binlog_row_image = full

保存后重启 MySQL 服务,并验证 binlog 已正确开启:

bash
sudo systemctl restart mysql
sql
mysql> SHOW VARIABLES LIKE '%binlog_format%'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.01 sec)

确认 binlog_format 的值为 ROW 即表示配置成功。

步骤9:进入DTS数据迁移服务

登录阿里云控制台 https://home.console.aliyun.com/,在顶部搜索框搜索 "数据传输服务 DTS",点击进入。

9数据迁移界面.jpg

在左侧导航栏点击 "数据迁移",选择实例所属地域,即可创建和管理迁移任务。

9-1.jpg

步骤10:配置迁移任务

点击 "创建迁移任务",填写基本信息并配置 源库目标库 的连接信息:

配置项源库(ECS自建MySQL)目标库(RDS实例)
接入方式公网IPRDS实例
数据库类型MySQLMySQL
地址ECS公网IPRDS内网地址(自动填入)
端口33063306
账号migrationuser01
密码123456对应密码

10.jpg

步骤11:测试连接(排错过程)

填写完连接信息后,点击 "测试连接"。如果出现连接失败,需要逐一排查以下问题:

(1)测试连接报错

11-0测试连接报错.jpg

(2)检查ECS安全组规则

进入 ECS 控制台,找到实例的安全组,确保 3306 端口 已放通(入方向规则)。

11-1源防火墙规则.jpg

(3)将ECS公网IP加入RDS白名单

在 RDS 实例的白名单设置中,添加 ECS 服务器的公网 IP(推荐临时设置为 0.0.0.0/0 全部放开,迁移完成后收回)。

11-2目标白名单.jpg

(4)修改ECS MySQL监听地址

编辑 ECS 上的 MySQL 配置文件,允许外部访问:

bash
vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到并修改以下两行:

ini
bind-address = 0.0.0.0 mysqlx-bind-address = 0.0.0.0

修改后重启 MySQL,并验证监听状态:

bash
sudo systemctl restart mysql netstat -tulpn | grep 3306 # 输出应显示:0.0.0.0:3306,表示已对所有地址开放监听

步骤12:选择迁移对象

测试连接全部通过后,进入 "迁移对象" 步骤。在左侧勾选需要迁移的数据库 migrate(含表 staff),点击 > 按钮将其添加到右侧已选列表中。

12选择迁移对象.jpg

步骤13:高级配置

进入 "高级配置" 页面,保持默认设置即可,无需额外修改。

13高级配置默认.jpg

步骤14:数据校验配置

进入 "数据校验" 页面,选择 "结构校验"(免费选项),用于迁移完成后自动校验源库和目标库的表结构一致性。

14数据校验.jpg

步骤15:预检查

进入 "预检查" 步骤,系统会自动检查迁移任务的前置条件(数据库连通性、账号权限、binlog 配置等)。等待所有检查项通过。

15预检查.jpg

预检查全部通过后,才能进入下一步购买并启动。

步骤16:购买并启动

预检查通过后,确认配置信息并点击 "购买并启动",完成 DTS 迁移任务的创建。

16购买并启动.jpg

步骤17:查看迁移结果

返回数据迁移任务列表,可以看到任务状态,等待迁移完成后状态显示为 "已完成"

17数据迁移任务创建成功.jpg

在本地 Navicat 中刷新远程连接的 RDS 数据库,可以成功看到从 ECS 迁移过来的数据库 migrate 及表 staff

17_1完成.jpg


实验3:使用Python连接RDS数据库

步骤1:创建Python虚拟环境并安装依赖

在 ECS 服务器上执行以下命令:

bash
root@Ubuntu:~# python3 -m venv myenv root@Ubuntu:~# source myenv/bin/activate (myenv) root@Ubuntu:~# pip install pymysql

安装输出:

Looking in indexes: http://mirrors.cloud.aliyuncs.com/pypi/simple/ Collecting pymysql Downloading http://mirrors.cloud.aliyuncs.com/pypi/packages/7c/4c/ad33b92b9864cbde84f259d5df035a6447f91891f5be77788e2a3892bce3/pymysql-1.1.2-py3-none-any.whl (45 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 45.3/45.3 kB 4.0 MB/s eta 0:00:00 Installing collected packages: pymysql Successfully installed pymysql-1.1.2

步骤2:编写Python程序

创建 rds.py 文件:

bash
(myenv) root@Ubuntu:~# vim rds.py

rds.py 内容如下:

python
import pymysql RDS_HOST = "rm-bp1w07s3m821014ic5o.mysql.rds.aliyuncs.com" # RDS公网地址 RDS_PORT = 3306 RDS_USER = "user01" RDS_PASSWORD = "User01pass" RDS_DB = "migrate" try: conn = pymysql.connect( host=RDS_HOST, port=RDS_PORT, user=RDS_USER, password=RDS_PASSWORD, database=RDS_DB ) print("连接成功!") cursor = conn.cursor() cursor.execute("SELECT * FROM staff;") for row in cursor.fetchall(): print(row) except Exception as e: print("错误:", e)

步骤3:运行程序验证

bash
(myenv) root@Ubuntu:/home/user01# python rds.py

输出结果:

连接成功! (1, 'joe', '28', 'male') (2, 'Anny', '23', 'female') (3, 'Bob', '18', 'male')

程序成功连接到 RDS 数据库,并读取到从 ECS 迁移过来的 staff 表数据,验证数据迁移完整且可正常使用。


实验总结

本实验完成了以下内容:

  1. RDS实例创建与配置:在阿里云控制台创建 RDS MySQL 实例,配置白名单、创建数据库账号和数据库,并通过本地 Navicat 远程连接成功执行 SQL 操作。

  2. ECS自建MySQL环境搭建:在阿里云 ECS(Ubuntu)上安装 MySQL,完成安全初始化、创建数据库与测试数据、开启 binlog 等准备工作。

  3. DTS数据迁移:通过阿里云数据传输服务 DTS,将 ECS 自建 MySQL 中的 migrate 数据库完整迁移至 RDS 实例,过程中排查了安全组、白名单、监听地址等常见连通性问题。

  4. 应用程序对接:编写 Python 程序通过 PyMySQL 连接 RDS 数据库,成功读取迁移后的数据,验证了整个链路的可用性。

本文作者:Linxiong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!