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验证:
mysql -u root -p
输入密码,能看到mysql>提示符就说明装好了。
四、配置环境变量
安装时如果没自动配环境变量,手动配:
新建系统变量:
变量名:MYSQL_HOME
变量值:C:\Program Files\MySQL\MySQL Server 8.0
Path里添加:
%MYSQL_HOME%\bin
验证:
mysql --version
看到版本号就说明环境变量配好了。
五、密码重置(忘记密码时用)
MySQL 8.0 重置密码
步骤1:停止MySQL服务
以管理员身份打开cmd:
net stop MySQL80
步骤2:跳过权限验证启动
mysqld --console --skip-grant-tables --shared-memory
这个窗口不要关,保持运行。
步骤3:新开一个cmd窗口,直接登录
mysql -u root
不需要密码,直接进。
步骤4:修改密码
-- 刷新权限
FLUSH PRIVILEGES;
-- 修改root密码(MySQL 8.0)
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出
EXIT;
步骤5:关闭跳过权限的窗口,重启MySQL服务
在第一个cmd窗口按Ctrl+C停掉mysqld,然后:
net start MySQL80
用新密码登录验证:
mysql -u root -p
MySQL 5.7 重置密码
步骤差不多,修改密码的SQL不同:
-- MySQL 5.7
UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root';
FLUSH PRIVILEGES;
六、配置远程连接
默认MySQL只允许localhost连接,如果你的MySQL要给团队其他人或者虚拟机用,需要开远程。
方法1:命令行配置
-- 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,改成:
[mysqld]
bind-address = 0.0.0.0
或者直接注释掉这一行。
重启MySQL服务:
net stop MySQL80
net start MySQL80
MySQL 8.0 远程连接认证问题
MySQL 8.0默认认证插件是caching_sha2_password,有些老客户端不支持。
报错信息:Client does not support authentication protocol
解决:
-- 改成mysql_native_password认证方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
七、防火墙放行
如果开了远程但连不上,检查Windows防火墙:
- 控制面板 → Windows Defender 防火墙 → 高级设置
- 入站规则 → 新建规则
- 端口 → TCP → 特定端口输入
3306 - 允许连接 → 下一步 → 起个名字
或者命令行放行:
netsh advfirewall firewall add rule name="MySQL 3306" dir=in action=allow protocol=TCP localport=3306
八、图形化管理工具
命令行操作太原始,装个图形化工具效率高很多。
推荐:Navicat
最流行的MySQL管理工具,功能强大。
- 优点:界面好看,功能全,数据传输方便
- 缺点:收费(有试用期),公司一般会给
免费:DBeaver
- 优点:免费,支持所有主流数据库(MySQL、PostgreSQL、Oracle等)
- 缺点:界面稍丑,大查询有点卡
- 新人推荐先用这个,不花钱
IDEA自带数据库工具
旗舰版IDEA自带Database工具,连接MySQL、写SQL、看表结构都很方便。
连接步骤:
- IDEA右侧栏点
Database - 点
+→ Data Source → MySQL - 填 Host、Port、User、Password
- 点
Test Connection,显示绿色就成功 - 点OK
免费轻量:HeidiSQL
- 优点:轻量,启动快,免费
- 适合只需要简单看表改数据的场景
九、创建数据库和用户
实际开发中,一般不会直接用root账号连项目数据库,而是为每个项目创建独立用户。
-- 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:
jdbc:mysql://localhost:3306/mydb?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
问题3:连接超时 Communications link failure
排查:
- MySQL服务是否启动:
net start | findstr MySQL - 端口是否被占用:
netstat -ano | findstr 3306 - 防火墙是否放行3306端口
- bind-address是否限制了IP
问题4:中文乱码
数据库字符集不是UTF-8。
-- 查看数据库字符集
SHOW VARIABLES LIKE 'character%';
-- 查看某个数据库的字符集
SHOW CREATE DATABASE mydb;
如果不是utf8mb4,改配置文件my.ini:
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
改完重启MySQL服务。
问题5:端口3306被占用
# 查看谁占用了3306
netstat -ano | findstr 3306
如果PID是其他MySQL实例,先停掉旧实例或者改新实例端口。
小结
| 步骤 | 关键点 |
|---|---|
| 版本 | 问项目用什么版本 |
| 安装 | 记住root密码 |
| 远程连接 | 创建'%'用户 + 防火墙放行 |
| 认证方式 | 老客户端改mysql_native_password |
| 字符集 | 一律用utf8mb4 |
| 管理工具 | Navicat(收费)或DBeaver(免费) |
MySQL装好了,下一步搞Redis。