💜 想真正擅长编程? 从一门课程开始,100% 免费

1-4、MySQL安装与密码重置与远程连接

MySQL是后端开发的标配数据库,不会MySQL你连项目的数据都看不了。这节从安装到远程连接,一步到位。


一、版本选择

版本 说明
MySQL 5.7 老项目常用,已经停止维护
MySQL 8.0 主流,大多数新项目用这个
MySQL 8.4 最新LTS,用的公司还不多

入职第一件事:问清楚项目用的哪个版本。 8.0和5.7的SQL语法、配置参数有差异,别搞混了。


二、下载MySQL

官网下载

地址:https://dev.mysql.com/downloads/installer/

选mysql-installer-community-8.0.x.msi(大约400MB+的那个,小的那个是Web安装器)。

国内镜像(下载快)

清华镜像:https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/

华为镜像:https://mirrors.huaweicloud.com/mysql/


三、安装MySQL(以8.0为例)

1. 运行安装包

双击.msi文件,选择安装类型:

  • Developer Default:开发者模式,装MySQL Server + 客户端工具(推荐)
  • Server only:只装服务端
  • Custom:自定义选择

新人选Developer Default就行,省心。

2. 检查依赖

如果提示缺少Python或Visual C++,先装这些依赖:

  • Visual C++ Redistributable:https://aka.ms/vs/17/release/vc_redist.x64.exe
  • Python 3.x:https://www.python.org/downloads/

3. 配置MySQL Server

Type and Networking(网络配置):

  • 选 Standalone MySQL Server(单机模式)
  • 端口保持默认 3306
  • Networking保持默认,勾选TCP/IP

Authentication Method(认证方式):

  • 选 Use Strong Password Encryption(推荐,MySQL 8默认方式)
  • 如果要兼容老客户端,选 Use Legacy Authentication Method

Accounts and Roles(设置密码):

  • MySQL Root Password:设一个密码,记住!
  • 比如设为Root@123456
  • 别太简单,MySQL 8密码有复杂度要求

Windows Service(Windows服务):

  • 勾选 Configure MySQL Server as a Windows Service
  • Windows Service Name:MySQL80(默认就行)
  • 勾选 Start the MySQL Server at System Startup(开机自启)

Apply Configuration(应用配置):

  • 一路点Execute,等它全部打勾

4. 安装完成

打开cmd验证:

Shell
mysql -u root -p

输入密码,能看到mysql>提示符就说明装好了。


四、配置环境变量

安装时如果没自动配环境变量,手动配:

新建系统变量:

TEXT
变量名:MYSQL_HOME
变量值:C:\Program Files\MySQL\MySQL Server 8.0

Path里添加:

TEXT
%MYSQL_HOME%\bin

验证:

Shell
mysql --version

看到版本号就说明环境变量配好了。


五、密码重置(忘记密码时用)

MySQL 8.0 重置密码

步骤1:停止MySQL服务

以管理员身份打开cmd:

Shell
net stop MySQL80

步骤2:跳过权限验证启动

Shell
mysqld --console --skip-grant-tables --shared-memory

这个窗口不要关,保持运行。

步骤3:新开一个cmd窗口,直接登录

Shell
mysql -u root

不需要密码,直接进。

步骤4:修改密码

SQL
-- 刷新权限
FLUSH PRIVILEGES;

-- 修改root密码(MySQL 8.0)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
EXIT;

步骤5:关闭跳过权限的窗口,重启MySQL服务

在第一个cmd窗口按Ctrl+C停掉mysqld,然后:

Shell
net start MySQL80

用新密码登录验证:

Shell
mysql -u root -p

MySQL 5.7 重置密码

步骤差不多,修改密码的SQL不同:

SQL
-- MySQL 5.7
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root';
FLUSH PRIVILEGES;

六、配置远程连接

默认MySQL只允许localhost连接,如果你的MySQL要给团队其他人或者虚拟机用,需要开远程。

方法1:命令行配置

SQL
-- 1. 登录MySQL
mysql -u root -p

-- 2. 创建允许远程连接的root用户
-- 方式1:允许所有IP连接(方便但不太安全)
CREATE USER 'root'@'%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

-- 方式2:只允许特定IP连接(推荐)
CREATE USER 'root'@'192.168.1.%' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

方法2:修改配置文件

找到MySQL配置文件my.ini(Windows通常在C:\ProgramData\MySQL\MySQL Server 8.0\my.ini)。

找到bind-address,改成:

ini
[mysqld]
bind-address = 0.0.0.0

或者直接注释掉这一行。

重启MySQL服务:

Shell
net stop MySQL80
net start MySQL80

MySQL 8.0 远程连接认证问题

MySQL 8.0默认认证插件是caching_sha2_password,有些老客户端不支持。

报错信息:Client does not support authentication protocol

解决:

SQL
-- 改成mysql_native_password认证方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;

七、防火墙放行

如果开了远程但连不上,检查Windows防火墙:

  1. 控制面板 → Windows Defender 防火墙 → 高级设置
  2. 入站规则 → 新建规则
  3. 端口 → TCP → 特定端口输入3306
  4. 允许连接 → 下一步 → 起个名字

或者命令行放行:

Shell
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306

八、图形化管理工具

命令行操作太原始,装个图形化工具效率高很多。

推荐:Navicat

最流行的MySQL管理工具,功能强大。

  • 优点:界面好看,功能全,数据传输方便
  • 缺点:收费(有试用期),公司一般会给

免费:DBeaver

https://dbeaver.io/

  • 优点:免费,支持所有主流数据库(MySQL、PostgreSQL、Oracle等)
  • 缺点:界面稍丑,大查询有点卡
  • 新人推荐先用这个,不花钱

IDEA自带数据库工具

旗舰版IDEA自带Database工具,连接MySQL、写SQL、看表结构都很方便。

连接步骤:

  1. IDEA右侧栏点 Database
  2. 点 + → Data Source → MySQL
  3. 填 Host、Port、User、Password
  4. 点 Test Connection,显示绿色就成功
  5. 点OK

免费轻量:HeidiSQL

https://www.heidisql.com/

  • 优点:轻量,启动快,免费
  • 适合只需要简单看表改数据的场景

九、创建数据库和用户

实际开发中,一般不会直接用root账号连项目数据库,而是为每个项目创建独立用户。

SQL
-- 1. 创建数据库
CREATE DATABASE my_project DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

-- 2. 创建项目专用用户
CREATE USER 'myproject'@'%' IDENTIFIED BY 'Project@123456';

-- 3. 授权(只授权对应数据库,不给全局权限)
GRANT ALL PRIVILEGES ON my_project.* TO 'myproject'@'%';
FLUSH PRIVILEGES;

-- 4. 验证
SHOW GRANTS FOR 'myproject'@'%';

字符集说明:

  • utf8mb4 支持emoji和更多中文字符(推荐)
  • MySQL 5.7及以下默认latin1,一定要手动指定utf8mb4
  • 千万别用utf8,MySQL的utf8是阉割版,最多3字节,存不了emoji

十、常见问题

问题1:Access denied for user 'root'@'localhost'

密码错了。确认密码有没有输入正确,大小写敏感。

如果忘记密码,用上面第五节的方法重置。

问题2:Public Key Retrieval is not allowed

MySQL 8.0连接时报错。

解决:连接URL加参数allowPublicKeyRetrieval=true:

TEXT
jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

问题3:连接超时 Communications link failure

排查:

  1. MySQL服务是否启动:net start | findstr MySQL
  2. 端口是否被占用:netstat -ano | findstr 3306
  3. 防火墙是否放行3306端口
  4. bind-address是否限制了IP

问题4:中文乱码

数据库字符集不是UTF-8。

SQL
-- 查看数据库字符集
SHOW VARIABLES LIKE 'character%';

-- 查看某个数据库的字符集
SHOW CREATE DATABASE mydb;

如果不是utf8mb4,改配置文件my.ini:

ini
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

改完重启MySQL服务。

问题5:端口3306被占用

Shell
# 查看谁占用了3306
netstat -ano | findstr 3306

如果PID是其他MySQL实例,先停掉旧实例或者改新实例端口。


小结

步骤 关键点
版本 问项目用什么版本
安装 记住root密码
远程连接 创建'%'用户 + 防火墙放行
认证方式 老客户端改mysql_native_password
字符集 一律用utf8mb4
管理工具 Navicat(收费)或DBeaver(免费)

MySQL装好了,下一步搞Redis。