最稳妥方式是直接安装MySQL官方社区版,Windows/macOS/Linux均应从官网下载Community Server,避免第三方打包版;安装时需勾选添加PATH或手动配置,初始化必须运行mysqld --initialize并记录临时密码,首次登录后须修改密码、切换认证插件为mysql_native_password、设置字符集为utf8mb4,并在my.cnf中配置skip-host-cache和bind-address=127.0.0.1。

直接装 MySQL 官方社区版最稳妥
Windows/macOS/Linux 都推荐从 MySQL 官网下载 Community Server,别用第三方打包版或 Homebrew 默认源(macOS 上 brew install mysql 有时会拉低版本或缺组件)。官方包自带 mysqld、mysql 客户端、配置模板和初始化逻辑,避免后续权限、socket 路径、字符集等隐性问题。
安装时注意勾选「Add MySQL to PATH」(Windows)或确认 /usr/local/mysql/bin 已加入 shell 的 $PATH(macOS/Linux)。装完立刻验证:
mysql --version输出应为
mysql Ver 8.0.x 或更高,低于 8.0.23 的版本默认认证插件是 mysql_native_password,而新版是 caching_sha2_password——这点直接影响 Navicat、DBeaver 等工具连不连得上。
初始化必须手动运行 mysqld --initialize
尤其 macOS/Linux 下解压即用的 tar.gz 包,或 Windows ZIP 版,不会自动初始化数据目录。跳过这步就启动不了服务,报错典型如:Can't start server: Bind on TCP/IP port: Address already in use(其实是 datadir 不存在导致后续失败被误报)。
执行前确保目标目录为空且有写权限,例如:
- macOS/Linux:
sudo /usr/local/mysql/bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data
- Windows(管理员 CMD):
"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --initialize --console
(加--console才能看到临时 root 密码)
初始化成功后,控制台会打印类似:A temporary password is generated for root@localhost: aB3#xQ9!mKpL——这个密码必须立刻记下,后续首次登录要用,且 8.0+ 版本强制要求首次登录后改密,否则任何操作都报错 Your password does not satisfy the current policy requirements。
启动服务后立即改密并调字符集
启动服务后(macOS/Linux 用 sudo /usr/local/mysql/support-files/mysql.server start,Windows 用服务管理器或 net start mysql80),用临时密码登录:
mysql -u root -p然后执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass123!'; SET GLOBAL character_set_server = 'utf8mb4'; SET GLOBAL collation_server = 'utf8mb4_0900_ai_ci';
为什么非得换认证插件?因为很多老客户端(比如 Python 的 mysql-connector-python 、某些 PHP 版本)不支持 caching_sha2_password,连上去直接报 Authentication plugin 'caching_sha2_password' cannot be loaded。至于字符集,utf8mb4 是唯一能存 emoji 和四字节 UTF-8 字符的选项,MySQL 的 utf8 实际只支持三字节,硬设会丢数据。
my.cnf 必须配 skip-host-cache 和 bind-address
本地开发最常卡在「能连 localhost 但连不了 127.0.0.1」或「Navicat 显示连接超时」,根源往往是 DNS 解析阻塞或绑定地址不对。在 /etc/my.cnf(macOS/Linux)或 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini(Windows)里,确保有:
[mysqld] skip-host-cache bind-address = 127.0.0.1 port = 3306
skip-host-cache 关闭 DNS 反查,避免 mysql -h 127.0.0.1 时卡住;bind-address = 127.0.0.1 明确只监听本地回环,既安全又避免 Docker 或其他服务抢端口。如果真要局域网访问,改成 0.0.0.0 后务必配防火墙规则,别裸奔。
改完配置必须重启服务,且注意:MySQL 8.0+ 不再读取 /etc/mysql/my.cnf,只认 /etc/my.cnf 或编译指定路径,路径错了等于没配。










