讲师中心 微信公众号
AI工具推荐 视频效率加速

从MariaDB迁回原生MySQL5.7需要改哪些配置

阿芳同学_4769

阿芳同学_4769

发布时间:2026-11-05 08:02:51

|

967人浏览过

|

来源于php中文网

原创

MySQL 5.7不能直接复用MariaDB的my.cnf,必须删除aria_*、query_cache_type=2、default_storage_engine=Aria等专属参数,并修正字符集、DEFAULT函数、认证插件等不兼容项,否则启动失败或运行异常。

从mariadb迁回原生mysql5.7需要改哪些配置

my.cnf里必须删掉MariaDB专属参数

直接复用MariaDB的my.cnf启动MySQL 5.7,大概率会卡在启动阶段或报错退出。MariaDB 10.x(尤其是10.2+)引入了大量MySQL原生不识别的配置项,比如:aria_page_checksum、innodb_flush_log_at_trx_commit=2(MySQL 5.7默认只认0/1)、skip_name_resolve=ON虽能兼容但建议显式写成skip_name_resolve=1避免解析歧义。

重点要清理的项包括:

  • aria_*开头的所有参数(Aria是MariaDB独有引擎,MySQL无对应实现)
  • query_cache_*系列——MySQL 5.7虽还支持,但MariaDB可能启用了query_cache_type=2(DEMAND模式),而MySQL 5.7只接受0/1,设为2会静默忽略或启动失败
  • default_storage_engine=Aria → 必须改为default_storage_engine=InnoDB
  • innodb_file_format=Barracuda等旧参数,在MySQL 5.7中已废弃,保留会导致mysqld --validate-config报错

表结构导入时遇到DEFAULT函数报错怎么办

MariaDB允许在CREATE TABLE的DEFAULT子句里直接写md5(uuid())这类函数表达式,MySQL 5.7严格要求DEFAULT只能是字面量(literal),不支持运行时计算。导入dump时会直接报ERROR 1064 (42000)。

解决方法不是改MySQL,而是预处理SQL文件:

  • 用sed -i 's/DEFAULT \(md5(uuid())\|uuid()\|now()\|current_timestamp()\)/DEFAULT NULL/g' dump.sql批量替换掉非法DEFAULT值(后续业务层补逻辑)
  • 对主键或唯一列含函数DEFAULT的情况,先建表不带DEFAULT,再用ALTER TABLE ... ADD COLUMN ... DEFAULT ...(MySQL 5.7支持ALTER加DEFAULT,但仅限字面量)
  • 若必须保留生成逻辑,改用触发器:BEFORE INSERT里赋值,绕过DDL限制

字符集和排序规则不能靠“看起来一样”就跳过

MariaDB 10.2+默认character_set_server=utf8mb4,但它的utf8mb4_unicode_ci实际行为和MySQL 5.7的utf8mb4_unicode_ci不完全一致——尤其在emoji、某些CJK扩展字符的排序权重上。更麻烦的是,MariaDB dump出来的CREATE TABLE语句里常省略COLLATE,导致MySQL按自身默认规则(utf8mb4_general_ci)建表,结果插入中文时ORDER BY乱序、GROUP BY分组异常。

MySQL8 CRM Schema Design Expert
MySQL8 CRM Schema Design Expert

面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。

下载

安全做法是:

  • 在[mysqld]段显式写死:character-set-server=utf8mb4和collation-server=utf8mb4_unicode_ci
  • 导入前用sed -i 's/ENGINE=InnoDB/ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci/g' dump.sql统一补全
  • 导入后执行SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='your_db';确认库级排序规则已生效

用户权限和认证插件容易被忽略的细节

MariaDB默认用mysql_native_password,但部分高版本MariaDB(如10.4+)在创建用户时可能悄悄用了unix_socket或ed25519插件。这类用户导入到MySQL 5.7后,mysql.user表里plugin字段值MySQL不认识,登录直接报Access denied,且错误日志里不提示插件问题。

迁移前必须检查并修正:

  • 导出用户时别只用mysqldump --all-databases,它不导用户;要用mysqldump -u root -p --no-data --skip-triggers mysql user单独导
  • 导入前手动把plugin列所有非mysql_native_password的值替换成它(unix_socket用户需改用密码登录,或重装auth_socket插件——但MySQL官方不提供)
  • 如果原MariaDB用了password_expired=1,MySQL 5.7不识别该字段,导入后得手动ALTER USER ... PASSWORD EXPIRE DEFAULT;

最保险的方式是:不导用户表,只导业务数据;用户和权限全部在MySQL 5.7里重新用CREATE USER/GRANT重建——毕竟权限模型本就存在细微差异,硬搬反而埋雷。

热门AI工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

Flowith
Flowith Hot

Flowith是一款基于画布和智能体工作流的 AI 协作工作空间。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

2473

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

1499

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

875

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

3532

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

6068

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

1299

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

6351

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

5462

2023.08.14

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

0

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL vs MySQL
PostgreSQL vs MySQL

共1课时 | 194人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn