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

MySQL 8.0 还是 5.7?看你的应用是否依赖 mysql_native_password
绝大多数新项目直接选 MySQL 8.0,但如果你用的是老版本 PHP(php 7.2 及更早)、旧版 Navicat、或某些 Python 的 mysql-connector-python(8.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 Workbench和Connector/ODBC的安装包组合 - 下载页看到的
MySQL Server+MySQL Shell+MySQL Router是同一套生态组件,不是多个版本 - Windows 下避免选
MSI全自动安装包——它默认把服务名设为MySQL80,改名麻烦;建议选ZIP Archive手动解压部署
配置文件 my.cnf 放哪?Windows 和 Linux 路径完全不同
MySQL 启动时按固定顺序查找配置文件,找不到就用内置默认值。路径不对,改了配置也无效。
ECSHOP时尚化妆品商城网站整站系统,基于ECSHOP2.7.3UTF-8版本制作,适合服装,首饰等商城网店使用。 安装方法:1. 下载程序后,删除data目录下的install.lock文件。2.访问:域名/install 按照提示进行安装.3.安装完成后,登陆网站后台---还原数据库4.还原后.模板管理---选择男装模板5.清空缓存6.修改管理员密码.还原数据后,后台信息:用户名:admin
关键路径:
- 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_MACHINE\SOFTWARE\MySQL AB\MySQL Server 8.0\Location指定路径,或默认找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_ci比utf8mb4_0900_ai_ci兼容性更好,尤其涉及多语言排序时 - 已存在的库/表不会自动变更,需手工执行:
ALTER DATABASE db_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; - 连接层也要统一,比如 JDBC URL 加上
?characterEncoding=utf8mb4&useUnicode=true









