mysql安装时如何选择合适的版本_mysql版本选择与配置

14次阅读

mysql 8.0 是首选,但若应用依赖 mysql_native_password(如旧版 php、navicat 或 mysql-connector-python

mysql 安装时如何选择合适的版本_mysql 版本选择与配置

MySQL 8.0 还是 5.7?看你的应用是否依赖 mysql_native_password

绝大多数新项目直接选 MySQL 8.0,但如果你用的是老版本 PHP(php 7.2 及更早)、旧版 Navicat、或某些 Python 的 mysql-connector-python8.0.11 之前),连接会失败,报错:Authentication plugin 'caching_sha2_password' cannot be loaded。这不是配置问题,是认证插件不兼容。

解决办法有两个:

  • 安装时勾选「Use Legacy Authentication Method」(推荐给开发测试环境)
  • 装完后手动执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
  • 或者升级客户端驱动(如把 mysql-connector-python 升到 8.0.12+

社区版(Community)够用吗?别被「企业版」名字吓住

MySQL Community Server 是官方免费、开源、更新最及时的版本,包含全部核心功能:InnoDB、JSON、窗口函数、CTE、角色管理、并行查询优化等。所谓「企业版」只是多了备份加密、审计日志、线程池监控等运维增强模块,普通业务完全不需要。

注意两个常见误判点:

  • MySQL Installer 页面里标「Web Community」不是单独版本,只是带了 MySQL WorkbenchConnector/ODBC 的安装包组合
  • 下载页看到的 MySQL Server + MySQL Shell + MySQL Router 是同一套生态组件,不是多个版本
  • Windows 下避免选 MSI 全自动安装包——它默认把服务名设为 MySQL80,改名麻烦;建议选 ZIP Archive 手动解压部署

配置文件 my.cnf 放哪?Windows 和 Linux 路径完全不同

MySQL 启动时按固定顺序查找配置文件,找不到就用内置默认值。路径不对,改了配置也无效。

关键路径:

  • Linux:优先读 /etc/my.cnf,然后是 /etc/mysql/my.cnf,再是 $MYSQL_HOME/my.cnf,最后是 ~/.my.cnf
  • macOS(Homebrew 安装):通常是 /opt/homebrew/etc/my.cnf/usr/local/etc/my.cnf
  • Windows:注册表中 HKEY_LOCAL_MACHINESOFTWAREMySQL ABMySQL Server 8.0Location 指定路径,或默认找 C:my.ini(不是 my.cnf!)

验证是否生效:启动后执行 SELECT @@global.config_file;(8.0.21+ 支持),或运行 mysqld --verbose --help | grep "Default options" 看加载顺序。

字符集别只改 utf8mb4,还要同步设好排序规则

只在 my.cnf 里加 character-set-server = utf8mb4 不够,collation-server 必须匹配,否则建库建表时仍可能用 utf8mb4_0900_ai_ci(8.0 默认)或 utf8mb4_general_ci(5.7 默认),导致大小写敏感行为不一致、索引失效等问题。

稳妥写法:

[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

注意:

  • utf8mb4_unicode_ciutf8mb4_0900_ai_ci 兼容性更好,尤其涉及多语言排序时
  • 已存在的库 / 表不会自动变更,需手工执行:ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
  • 连接层也要统一,比如 JDBC URL 加上 ?characterEncoding=utf8mb4&useUnicode=true
配置真正起效的关键,往往卡在路径没对上、插件不兼容、或字符集和排序规则没配对——这些地方不报错,但行为异常,查起来特别费时间。

text=ZqhQzanResources