阿里云ESC服务器MySQL导入sql数据所采的坑
最近,需要将在“西部数码”的一台服务器上的MySQL数据导入到“阿里云”ESC服务器中的MySQL。遇到了以下问题,并已经解决,供需要到网友参考。
1、无法访问阿里云ESC服务器上的MySQL
(1)问题
在阿里云ESC服务器上安装MySQL服务器后,需要在阿里云控制台的ECS安全组中,添加入站规则允许访问3306端口。
测试服务器端口是否能够访问的方法:
telnet x.x.x.x 3306
tcping x.x.x.x 3306
但是,在阿里云ESC服务器放行3306端口后,程序仍然无法访问阿里云上的MySQL服务器。
(2)解决办法
经过检查,发现还需要在宝塔面板中放行端口3306才行。注意:root 用户不能远程访问,只能使用数据库用户远程访问.
在宝塔面板的"安全"页面,添加放行入站规则: 端口3306,协议TCP ,问题解决

2、为MySQL导入sql数据时报错 ERROR 1273 (HY000): 包含未知的编码格式!
(1)从“西部数码”服务器上的MySQL中导出sql数据“sky_take_out-结构和数据.sql”
(2)在“阿里云”ESC服务器MySQL添加数据库 sky_take_out
(3)添加数据库 sky_take_out 后,点击该数据库下面的“备份”>>“导入”>>“从本地上传”
“sky_take_out-结构和数据.sql”
点击“开始上传”,显示“导入成功”。
但是,这只是导入sql文件成功了,下面还需要从已经上传的sql文件中导入数据到MySQL服务器。
(4)当从已经上传的“sky_take_out-结构和数据.sql”文件中导入数据到MySQL服务器时,报错:ERROR 1273 (HY000): 包含未知的编码格式!


(5)在AI中提问后得知,这个错误的主要原因是:
A、导出的SQL文件来自MySQL 8.0或更高版本,而目标服务器运行的是MySQL 5.7或更低版本
B、MySQL 8.0引入了新的字符集排序规则(如utf8mb4_0900_ai_ci),这些在低版本MySQL中不存在
C、宝塔面板默认安装的MySQL版本可能较低,不支持高版本的字符集
(6)解决方案
修改SQL文件中的字符集(推荐)-测试OK。这是最常见的解决方法,适用于大多数情况:
A、使用文本编辑器(如VS Code、Notepad++等)打开SQL文件
B、全局替换以下内容:
* 将“utf8mb4_0900_ai_ci”替换为“utf8_general_ci”
* 将“utf8mb4”替换为“utf8”
* 另外还需将原来“西部数码”的服务器IP替换为“阿里云”服务器IP,否则图片等网站资源无法访问
C、保存修改后的SQL文件
D、重新导入下面修改后的文件:“sky_take_out-结构和数据-utf8_general_ci-OK.sql”,再从上传的该文件中导入数据到MySQL服务器成功。

浙公网安备 33010602011771号