在 Ubuntu 里用 Docker 启动 MySQL,导入阿里云 RDS 数据

项目需要低功耗运转,暂时没有太大访问量,不太需要购买阿里云 RDS MySQL,计划把数据迁移到一个 ECS 里。

导出 RDS 数据

登录阿里云,从 DMS 页面右上角找到「导出」,勾选所有表,导出一个 SQL 文件。在本地打开确认文字没有乱码,正常可用。

为什么用 Docker

尝试在 Ubuntu 系统里直接安装 MySQL 8,但修改 lower_case_table_names=1 时 MySQL 无法启动。改用 Docker 后发现真的很方便——操作失误可以立刻删掉容器重来。

安装 Docker CE

添加 Docker 官方 GPG 密钥:

1
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

提示 OK 后,增加官方安装源:

1
2
3
4
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

更新并安装:

1
2
sudo apt update
sudo apt install docker-ce

拉取镜像

从镜像加速站点拉取 MySQL 最新镜像:

1
2
3
4
5
docker pull dockerproxy.cn/mysql:latest

# docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# dockerproxy.cn/mysql latest be960704dfac 9 days ago 602MB

启动容器

先创建挂载目录,然后启动:

1
2
3
4
5
6
7
8
9
10
11
12
mkdir -p /mydata/mysql/log /mydata/mysql/data /mydata/mysql/conf

docker run --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql \
--lower_case_table_names=1 \
--init-connect="SET collation_connection=utf8mb4_0900_ai_ci" \
--init-connect="SET NAMES utf8mb4"

创建用户

1
2
3
4
5
6
7
docker exec -it mysql /bin/bash
mysql -u root -p
# 密码 123456(在 docker 启动命令里设置的)

CREATE USER 'a_new_user'@'%' IDENTIFIED BY 'password_need_to_change';
GRANT ALL PRIVILEGES ON *.* TO 'a_new_user'@'%';
FLUSH PRIVILEGES;

到这里就可以远程连接数据库了。

不推荐在这里直接 CREATE DATABASE,会有编码问题,困扰了我好几次。

导入数据

用 Navicat 以 a_new_user / password_need_to_change 连接数据库,新建一个数据库(编码保持默认),然后执行从阿里云导出的 SQL(编码也保持默认),数据就导入进去了。

Notice: 正常情况下,这里会有一个基于utteranc.es的留言系统,如果看不到,可能要想想办法才能看到。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2012 - 2026 tiaobug.com All Rights Reserved.

鲁ICP备2024124237号-1