一台全新电脑上装好MySQL,其实只需要搞清楚这几件事
很多人觉得MySQL安装配置是件特别简单的事,不就是下载、下一步、下一步、完成吗?但我在带新人的时候发现,真正从零开始折腾MySQL的人,卡在第一关的比例高得吓人:装到一半报错、服务起不来、密码进不去、远程连不上、中文变成问号……每一个坑都能让人卡上小半天。
说实话,MySQL安装配置教程在网上多到翻不完,但大多数要么只讲了图形化一键安装,要么直接甩一堆命令行参数让新手照抄,抄完也不知道为什么。这篇文章我会从最基础的原理讲起,真正“从头到尾”带你走一遍:版本和安装包怎么选、Windows和Linux两种环境下分别怎么装、初始化是怎么一回事、密码和安全配置怎么做、最常见的几个报错怎么排查,最后还有日常使用最常用的几条管理命令。
这篇内容适合三类人:完全没接触过数据库的零基础新手、刚转行后端开发或数据分析岗位的新人、以及换了新电脑或新服务器后需要重新搭建MySQL环境的老手。不管你是哪个角色,只要跟着这篇文章的节奏走,基本可以做到一次装通、不用反复百度报错信息。
1. 安装之前必须想明白的几件事:版本、分支、安装包类型
很多人打开MySQL官网就懵了,页面上一堆下载选项,到底点哪个?这里先把装之前的决策讲清楚,这比安装本身更重要。选错了,后面全是坑。
1.1 MySQL 5.7还是8.0,别拍脑袋选
目前市面上面向新手的教程里,5.7和8.0几乎各占一半。这两个版本的安装步骤大方向相同,但细节有差异,所以第一步就要定下来。
MySQL 8.0是2018年发布的正式版,到现在已经非常成熟,默认字符集是utf8mb4(意味着对中文和emoji支持更好),支持窗口函数、公共表表达式(CTE)等新特性,性能上也有明显提升。MySQL 5.7则是上一个时代的经典版本,因为生命周期长、网上资料多、很多早期系统都在用,所以在企业存量项目里还是很常见。
我的建议很直接:新项目、新学习环境,直接用8.0。如果你是为了接手公司里某个老项目、明确知道生产环境用的是5.7,那才需要装5.7。别因为“网上教程都是5.7”就选5.7,学习阶段完全没必要为一个老版本浪费精力。
在8.0系列里,又会看到8.0.30、8.0.34、8.0.36这样的小版本号。这些是小版本迭代,主要是修bug和安全补丁,选择最新稳定版即可,不用纠结具体小版本。
1.2 官方版、MariaDB、Percona:日常学习和开发只用官方版
MySQL这个词在不同语境下可能指代不同东西:有Oracle维护的官方MySQL,有MySQL创始人另起炉灶做的MariaDB,还有Percona这个性能优化分支。三者在命令和操作上有很多兼容性,MySQL的教程对MariaDB多半也能用,但细节上会有差异。
如果你不是有特殊原因,比如公司规定必须用MariaDB或者Percona架构,那么直接选官方MySQL就行。官方社区版(Community Server)是免费的,功能对学习和绝大多数业务场景完全够用,不需要碰商业版。
1.3 Windows用户:ZIP压缩包和MSI安装包选哪个
Windows下官方提供两种安装方式:MSI安装包和ZIP压缩包。
MSI是图形化向导,一路点击下一步,适合追求省事、不想碰命令行的新手。但它的缺点也很明显:安装过程被封装了,很多关键步骤(比如数据目录初始化)被隐藏在向导里,一旦出问题,你不清楚系统到底帮你做了什么,排查起来反而麻烦。
ZIP压缩包是绿色版思路,解压后自己完成初始化、配置、注册服务。它看起来麻烦,但每一步都清清楚楚:数据目录在哪、配置文件在哪、服务怎么注册的,你全都能掌控。企业批量部署和很多开发者的选择都是这种方式。
我在这篇文章的Windows部分,会用ZIP方式展开讲。原因很简单:用ZIP包走一遍完整流程,你能把MySQL的目录结构、初始化数据、配置文件加载逻辑全部搞清楚,以后遇到任何问题都有排查方向。MSI装完你可能连my.ini文件在哪都找不到。
对了,不管用什么方式,安装路径务必避免中文和空格,比如不要装在D:\软件\MySQL这种带中文的路径下。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Windows下手工安装MySQL:从解压到命令行能用的全过程
这一部分我以MySQL 8.0.x为例,手把手走一遍ZIP包的完整安装流程。全程大约10分钟,但每一步我都会说明为什么这么做。
2.1 下载官方ZIP包并解压
去MySQL官网的下载页面,选择MySQL Community Server,然后在Windows (x86, 64-bit), ZIP Archive这一行点下载。这里注意:页面可能会先让你登录Oracle账号,不需要,直接点页面下方的“No thanks, just start my download”跳过登录即可。
下载完把压缩包解压到一个固定位置,比如C:\mysql-8.0.36-winx64。解压后的目录结构是这样的:
bin/:存放所有可执行文件,包括mysqld(服务端)、mysql(客户端)、mysqldump(备份工具)等docs/:文档include/:头文件,一般开发用不到lib/:库文件share/:错误消息、字符集等辅助文件
注意,这个目录里还没有data文件夹,data是数据目录,需要通过初始化命令生成。很多新手在这里就会尝试启动服务,结果当然失败——因为MySQL需要一个已经初始化的数据目录来存放系统数据库(比如mysql库)和后续的业务数据。
2.2 初始化数据目录:mysqld --initialize与--initialize-insecure的区别
这是整个安装过程中最关键、也最容易被忽略的一步。
初始化数据目录的含义是:在指定目录下生成MySQL运行所需的系统表、权限表、默认数据库等基础数据。就好比新买的房子要先装修好水电、通电通水,人才能住进去;MySQL的数据目录就是那个“装修”动作。
打开CMD,进入MySQL的bin目录:
bash复制cd C:\mysql-8.0.36-winx64\bin
然后执行:
bash复制mysqld --initialize-insecure
这条命令的含义是“初始化数据目录,root用户初始密码为空”。执行完之后,你会看到C:\mysql-8.0.36-winx64下面多了一个data文件夹,里面有大量文件,其中mysql子目录就是系统库。
那为什么不用更加常用的mysqld --initialize?区别在于:--initialize会为root生成一个随机临时密码,并且临时密码只会在初始化过程中生成的错误日志里出现一次。第一次登录你还得去日志里翻密码,操作门槛高一点。--initialize-insecure则是root空密码,登录进去再设置密码,更适合新手一步步来。
初始化完成后,建议顺手验证一下data目录确实生成了。如果这一步报错,十有八九是系统缺少Visual C++ Redistributable运行库,去微软官网装一下运行库再重试。
2.3 注册Windows服务并启动
初始化完成,还不能直接用mysqld命令启动服务就完事,更好的做法是把MySQL注册成Windows系统服务,让它能像普通服务一样随系统启动、自动运行、统一管理。
在bin目录下执行:
bash复制mysqld --install MySQL8
MySQL8是服务名称,可以自己定义。出现Service successfully installed后,接着启动服务:
bash复制net start MySQL8
看到MySQL8 服务已经启动成功,说明服务端已经跑起来了。
这里两个常见问题:如果提示服务已存在,先执行mysqld --remove MySQL8删除旧服务再重新安装;如果提示权限不足,那么刚才所有命令都需要在“以管理员身份运行”的CMD中执行,这一点我建议直接从第一步就用管理员CMD。
启动完之后,可以顺手测一下服务端是否真的在监听端口。另开一个CMD窗口执行:
bash复制netstat -ano | findstr 3306
能看到状态为LISTENING的记录,说明MySQL默认端口3306已经被正常监听了。
2.4 配置环境变量:让mysql命令随处可用
默认情况下,你只能在bin目录下执行mysql命令,换个目录就不认了。配置环境变量,是为了让系统在任何路径下都能找到mysql相关的可执行文件。
右键“此电脑” → 属性 → 高级系统设置 → 环境变量,在“系统变量”里找到Path,编辑,新增一行:
code复制C:\mysql-8.0.36-winx64\bin
保存后,重新打开一个CMD窗口,执行:
bash复制mysql --version
如果输出了mysql Ver 8.0.36 for Win64 on x86_64类似的版本信息,就代表环境变量配置成功。这一步很多教程会放到最后,但我建议路径配置完马上验证,避免后面用的时候才发现命令不存在。
3. 初始密码、字符集和安全设置:安装后的第一道门槛
服务启动成功不等于你可以安心用了,第一次登录、设置密码、创建业务账号、调整字符集,这些是安装之后马上要做的事情。
3.1 第一次登录MySQL:两种入口对应两种密码状态
在上一章的初始化方式用--initialize-insecure的情况下,数据目录里root用户现在是空密码。所以登录命令是:
bash复制mysql -u root
不需要-p参数,直接回车就能进入MySQL命令行提示符mysql>。这时你就已经以root身份登入系统了。
如果你当初用的是mysqld --initialize,那么root密码是随机的。需要打开C:\mysql-8.0.36-winx64\data目录下的*.err错误日志文件,搜索temporary password,找到类似这行:
bash复制[Note] A temporary password is generated for root@localhost: xxxxxxxx
然后用这个临时密码登录:
bash复制mysql -u root -p
密码就是日志里的那个。登录成功后系统会强制要求你修改密码,否则任何其他SQL都执行不了。
3.2 修改root密码的正确姿势
进入MySQL命令行后,执行:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
MySQL 8.0默认安装了密码校验插件,密码强度太低(比如纯数字、太短)会直接报错。你看报错信息里会提示至少包含大写字母、小写字母、数字和特殊字符。如果实在想降低校验强度,可以执行:
sql复制SET GLOBAL validate_password.policy = LOW;
但我建议你在自己电脑上学习时保留默认强度,养成设置强密码的习惯。
修改完密码后,下次登录就是:
bash复制mysql -u root -p
按要求输入密码进入。如果你的密码里有特殊字符,在命令行里需要用单引号包住,比如mysql -u root -p'P@ssw0rd',但我不推荐这种方式,因为密码会留在命令历史里。更好的做法是只加-p,回车后手动输入。
3.3 创建业务账号并授权:日常开发别用root
用root跑业务账号,就像用管理员身份登录电脑去上普通网站,风险极高。日常开发我建议创建一个专用账号。
在MySQL命令行里执行:
sql复制CREATE USER 'dev'@'localhost' IDENTIFIED BY 'Dev@123456';
GRANT ALL PRIVILEGES ON *.* TO 'dev'@'localhost';
FLUSH PRIVILEGES;
这里解释一下:'dev'@'localhost'表示只允许本机登录;*.*表示所有数据库的所有表。如果你只想让这个账号管理某个数据库,可以写test_db.*,更精细化。
如果你以后需要通过远程连接这个MySQL,需要把host部分改成'dev'@'%',但默认情况下建议保持localhost,远程访问属于安全边界问题,后面我会专门提。
3.4 字符集与时区配置:避免中文乱码的根源
MySQL 8.0默认字符集已经是utf8mb4,比5.7默认的latin1对中文友好得多,但有些场景下你仍然需要显式确认。比如你的业务库要支持表情符号,或者客户端连接时指定了其他字符集导致混乱。
查看当前字符集:
sql复制SHOW VARIABLES LIKE 'character_set_%';
如果character_set_server不是utf8mb4,或者想统一所有字符集相关设置,可以修改配置文件。Windows下在MySQL解压目录里新建my.ini(如果已经有就编辑它),写入:
ini复制[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-time-zone=+8:00
[client]
default-character-set=utf8mb4
然后重启MySQL服务:
bash复制net stop MySQL8
net start MySQL8
这里的collation-server是排序规则,utf8mb4_unicode_ci是一种通用选择。default-time-zone=+8:00则是把数据库时区设置为东八区,避免时间字段差值问题。
关于配置文件的核心逻辑,我多说一句:my.ini是整个MySQL服务端最核心的配置入口。MySQL启动时会按顺序读取多个位置的配置文件(Windows下优先级从高到低依次是C:\Windows\my.ini、C:\my.ini、MySQL安装目录下的my.ini),所以如果你的配置“改了没生效”,先检查你编辑的文件是不是被系统读取的那个。这里最简单有效的办法是,把my.ini放在MySQL安装目录下,不要分散到多个位置。
4. Linux服务器上的MySQL安装:CentOS与Ubuntu两种场景对照
Windows装好只是第一步,真实业务和服务器场景里,MySQL往往跑在Linux上。不同发行版的包管理方式不同,我分开说。
4.1 CentOS系统:先装官方yum源再安装
CentOS 7自带的软件源里不包含MySQL(默认是MariaDB),所以直接yum install mysql-server装到的是MariaDB。想装官方MySQL,需要先安装MySQL官方提供的yum仓库。
bash复制wget https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
rpm -ivh mysql80-community-release-el7-7.noarch.rpm
安装完仓库后,就可以正常安装了:
bash复制yum install mysql-community-server
安装完成之后,启动服务:
bash复制systemctl start mysqld
systemctl enable mysqld
enable是设置开机自启。在Linux环境用mysqld --initialize初始化后,root临时密码也会写在日志里:
bash复制grep 'temporary password' /var/log/mysqld.log
拿到日志里的临时密码后再登录修改,过程与Windows相同。
顺便说一句,CentOS 8及以上版本官方已转向Stream模式,命令体系差异不大,但推荐用Rocky Linux或AlmaLinux替代传统CentOS。
4.2 Ubuntu系统:apt安装更简单
Ubuntu用apt安装就简单很多:
bash复制apt update
apt install mysql-server
安装完成后:
bash复制systemctl start mysql
systemctl enable mysql
Ubuntu的MySQL安装包已经帮你初始化好了,登录方式有点特别:因为默认用了auth_socket认证插件,所以需要用系统root用户才能免密登录:
bash复制sudo mysql
进入后如果你需要改用密码认证,可以执行:
sql复制ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
Ubuntu和CentOS在服务名上也有区别:CentOS的服务名是mysqld,Ubuntu的是mysql。这类细节在排查问题时不注意就会绕弯路。
4.3 Linux下远程连接的三要素:授权、监听地址、防火墙
如果你需要在本地电脑上用Navicat或命令行的mysql -h 服务器IP去连接Linux服务器上的MySQL,需要同时满足三件事,缺一不可。
第一,授权远程用户。在MySQL命令行里执行:
sql复制CREATE USER 'remote'@'%' IDENTIFIED BY 'Remote@123456';
GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%';
FLUSH PRIVILEGES;
'%'表示来自任意主机的连接都能用这个账号登录。
第二,确认监听地址。默认情况下MySQL只绑定127.0.0.1(本机),外部访问不到。需要修改配置文件/etc/my.cnf或/etc/mysql/mysql.conf.d/mysqld.cnf,找到:
ini复制bind-address = 127.0.0.1
改成:
ini复制bind-address = 0.0.0.0
0.0.0.0表示监听所有网卡。然后重启服务。
第三,放行防火墙端口:
bash复制firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
Ubuntu如果没有防火墙或用的ufw,则是:
bash复制ufw allow 3306/tcp
这里必须强调一个安全理念:远程访问权限一定要遵循最小化原则。生产环境的3306端口不要对全世界开放,只对你的办公网IP或跳板机IP开放,这是底线。
5. 排错专题:安装过程中最容易踩的五个坑
我见过太多人在安装和配置MySQL时反复碰壁,而且每次报错信息都不同。这些坑如果不讲,新手可能要折腾好几天。这里把五个高频问题集中拆一下。
5.1 服务无法启动,数据目录没初始化是最常见原因
现象:执行net start MySQL8或systemctl start mysqld后,服务启动失败,报错信息类似“服务没有响应控制功能”或“MySQL服务启动后停止”。
排查链路:优先去数据目录看是否存在。Windows下检查MySQL解压目录里有没有data文件夹,Linux下检查/var/lib/mysql目录。如果数据目录不存在或者内容不完整,MySQL根本不知道怎么启动。
解决办法:把残缺的data目录备份后删除,重新执行初始化命令:
bash复制mysqld --initialize-insecure
然后再次启动服务。
这个坑的根因是很多人跳过了初始化直接启动,或者初始化过程中掉电导致数据目录损坏。我的建议是,任何报错都先看错误日志,Windows在data目录下的*.err文件,Linux在/var/log/mysqld.log,里面的信息往往比你在网上搜到的更准确。
5.2 ERROR 1045 Access denied:不一定是密码错
现象:
text复制ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
根因分析:这个问题最容易让人误判为“密码记错了”,但其实有几种可能:密码确实错了;host匹配不一致——比如用户表里只有root@localhost,你用root@127.0.0.1或root@%去连;认证插件不兼容,比如8.0默认的caching_sha2_password和某些客户端不匹配。
解决办法:如果确定密码没问题,检查用户和host信息:
sql复制SELECT user, host, plugin FROM mysql.user;
看到root对应哪些host,就用哪个host去连。如果host不匹配,可以添加一个root@'%'账号,或者修改现有账号的host。如果忘记密码,可以在配置文件的[mysqld]段下加一行skip-grant-tables跳过权限验证,重启服务后免密登录、改密码、注释掉这行再重启。这个方法很实用,但生产环境慎用,因为跳过了权限检查你就能无限制访问数据库。
5.3 本机能连、远程连不上:bind-address、授权表、防火墙三个层面顺序排查
现象:在服务器本机执行mysql -u root -p没问题,但在自己电脑上用mysql -h 服务器IP -u root -p就是连接超时或拒绝。
排查链路:第一层看MySQL监听地址,执行:
bash复制netstat -tlnp | grep 3306
如果看到监听的是127.0.0.1:3306,那就是没改bind-address。第二层看用户表里有没有对应host为%的用户。第三层看防火墙有没有放行3306。
我的排查经验经常是:一层层往下查,90%的问题都出在没改bind-address或用户表host不匹配,防火墙反而很少拦(因为很多云服务器默认安全组规则没放行,这个也别忘了看一眼云控制台的安全组)。
5.4 插入中文变成问号或乱码:字符集不一致是根源
现象:插入你好,查出来是???。
根因分析:数据库字符集、表字符集、连接字符集三者不一致,尤其是客户端连接时用的字符集和服务端不匹配。MySQL在数据传输时,会经过多层字符集转换,任何一层不匹配都可能导致乱码。
解决办法:先执行SHOW VARIABLES LIKE 'character_set_%';看全链路字符集。正常情况下character_set_client、character_set_connection、character_set_results都应该是utf8mb4。如果不一致,在连接时指定:
bash复制mysql --default-character-set=utf8mb4 -u root -p
同时确保表本身的字符集是utf8mb4,建表时可以用:
sql复制CREATE TABLE test_table (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50)
) DEFAULT CHARSET=utf8mb4;
5.5 8.0的caching_sha2_password让旧客户端连不上
现象:用一些老的客户端工具或旧版本驱动连接MySQL 8.0时,报错:
text复制Authentication plugin 'caching_sha2_password' cannot be loaded
根因分析:MySQL 8.0把默认认证插件从mysql_native_password改成了更安全的caching_sha2_password,但很多2018年之前的客户端工具和旧版本驱动不支持新插件。
解决办法:优先升级你的客户端工具或驱动到新版本,这是最推荐的做法。如果因为某些原因没法升级,可以把用户的认证插件改回旧模式:
sql复制ALTER USER 'dev'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Dev@123456';
但8.0.34之后的版本对这种旧认证插件的支持在逐步收紧,长远来看还是升级客户端最靠谱。
6. 装好了怎么用:日常管理和最常用的几条命令
配置好、能登录之后,你还需要掌握一些日常使用频率极高的命令,它们能帮你判断数据库状态、排查性能问题、做基础备份。
6.1 三种客户端连接方式,各适用什么场景
第一种是命令行客户端,mysql -u 用户名 -p输入密码进去,适合服务器上快速操作、脚本自动化,是运维场景的标配。
第二种是MySQL官方推出的Workbench图形化工具,免费,自带服务器状态监控、ER图设计、SQL执行等功能。适合刚学SQL、直观观察数据结构的时候。
第三种是Navicat等第三方图形化工具,界面更友好,功能更全,比如数据同步、导入导出、结构对比。它是很多人日常开发的主力工具。
从我的角度,建议每个人都把命令行用熟练,再考虑图形化工具。因为网上大部分教程、面试题、生产事故排查分享,用的都是命令行,你不会命令行,连和同行交流都有障碍。
6.2 查看状态、进程、端口:先学会“望闻问切”
登录数据库后,执行:
sql复制SHOW VARIABLES LIKE 'version%';
查看版本号。执行:
sql复制SHOW PROCESSLIST;
查看当前所有连接和正在执行的SQL,这是排查“数据库怎么变慢了”的第一动作。如果你发现某个线程的Command列是Query且Time值很大,说明有慢查询正在跑,可以根据Info列看是哪条SQL。
在操作系统层面,用:
bash复制mysqladmin -u root -p status
可以快速看到Uptime(运行时长)、Threads(当前连接数)、Queries(累计查询数)等核心指标。
6.3 备份和恢复:用mysqldump做最简单的数据保护
作为开发者,备份是最基本的数据安全感。MySQL自带mysqldump工具,用法很直白:
bash复制mysqldump -u root -p mydatabase > mydatabase_backup.sql
恢复时:
bash复制mysql -u root -p mydatabase < mydatabase_backup.sql
恢复前需要确保mydatabase这个库已经创建了。
这里提几个备份时容易踩的坑:导出会锁表,所以在生产环境导出时建议加--single-transaction参数,对InnoDB表可以在不锁表的情况下做一致性备份;备份文件默认包含CREATE TABLE和INSERT语句,中文数据在导出导入时要保持字符集一致,最好显式加--default-character-set=utf8mb4。完整写法:
bash复制mysqldump --single-transaction --default-character-set=utf8mb4 -u root -p mydatabase > backup_$(date +%Y%m%d).sql
7. 安装之后的下一步:建议你接着做这几件事
MySQL装通只是万里长征第一步,从“装好”到“能用好”之间还有很长距离。根据我带新人的经验,接下来这几件事的优先级最高。
7.1 花半小时梳理配置文件的加载逻辑
不管Windows还是Linux,MySQL的配置文件加载顺序都值得花时间搞明白。Windows下是C:\Windows\my.ini、C:\my.ini、安装目录下my.ini等按照固定优先级读取;Linux下是/etc/my.cnf、/etc/mysql/my.cnf、~/.my.cnf等。规则是:后读到的配置会覆盖先读到的同项配置。
平时改配置,记住一个原则:改配置前先备份,改完必须重启服务,重启后查询对应变量确认生效。比如改了max_connections,就用SHOW VARIABLES LIKE 'max_connections';验证。我见过太多人改了配置不重启,然后怀疑配置没用。
7.2 从“能连上”到“会用”:SQL、索引、事务这个顺序走
安装配置完成后,建议按这个顺序往下学:先练熟增删改查(INSERT、SELECT、UPDATE、DELETE)和WHERE条件、JOIN联表、GROUP BY分组、ORDER BY排序;然后学索引原理——为什么建了索引查询快、为什么有时候建了索引也没用,这是面试和实际性能优化中最常考的内容;最后理解事务的ACID特性和隔离级别,这决定了你对数据一致性的理解深度。
这些内容每一块都能单独写很长的文章,但起点就在这里:有一个能跑起来的MySQL环境,然后往里面造数据、写SQL、做实验。
7.3 进阶方向:主从复制、备份策略、监控告警
当你用MySQL做业务系统一段时间后,自然会遇到这些问题:数据库挂了怎么办、读压力大怎么办、误删数据怎么恢复。这背后涉及主从复制(Master-Slave Replication)、定期备份和恢复演练、慢查询日志与性能监控。
这些方向不适合在安装阶段一股脑学,但你要知道它们的存在。我见过太多人装好MySQL后,就开始一头扎进各种框架代码里,直到线上出问题才发现自己对数据库底层的理解远远不够。数据库是后端系统的地基,前期打好基础,后期省的时间远超你想象。
还有一件小事提醒一下:如果你用Navicat这类工具连接MySQL 8.0,遇到连接失败先别急着重装数据库,很大概率是认证插件不兼容,用一个支持caching_sha2_password的新版本客户端就能解决。我踩过这个坑,当时反复重装了三次MySQL,后来才发现是工具版本太老。
关于MySQL的安装配置,我最后再分享一个经验:别追求一次完美配置,先把默认配置跑起来、把基础操作练熟,再逐步按需调整参数。每次调整只动一个变量,重启一次,验证一次,记录一次。这样看起来慢,实际上是最快也最稳的学习路径。
