适用环境:Windows 10/11 + MySQL 8.0 + Navicat Premium 16
本文涵盖:MySQL 常用命令、数据导入导出、Navicat 图形化操作
一、MySQL 服务管理
1.1 检查服务状态
bash
# 查看 MySQL80 服务状态
sc query MySQL80
输出解读:
bash
STATE: 4 RUNNING → 服务正在运行
STATE: 1 STOPPED → 服务已停止
1.2 启动与停止服务
bash
# 启动服务
net start MySQL80
# 停止服务
net stop MySQL80
# 重启服务
net stop MySQL80 && net start MySQL80
说明 :
sc用于查询/配置服务,net用于启动/停止服务。
1.3 设置开机自启
-
Win + R→services.msc -
找到 MySQL80 → 右键 属性
-
启动类型 改为 自动
二、命令行登录与基本操作
2.1 登录 MySQL
bash
# 方式1:输入密码(推荐,密码不显示)
mysql -u root -p
# 方式2:直接带密码(不安全,密码会暴露在命令历史中)
mysql -u root -p你的密码
# 方式3:指定主机和端口
mysql -h localhost -P 3306 -u root -p
如果提示
mysql 不是内部命令,需配置环境变量:将C:\Program Files\MySQL\MySQL Server 8.0\bin添加到系统Path。
2.2 数据库操作
bash
-- 查看所有数据库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 使用/切换数据库
USE mydb;
-- 删除数据库(谨慎!)
DROP DATABASE mydb;
-- 查看当前使用的数据库
SELECT DATABASE();
2.3 表操作
bash
-- 查看所有表
SHOW TABLES;
-- 查看表结构
DESC 表名;
-- 或
SHOW CREATE TABLE 表名;
-- 创建表
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
email VARCHAR(100),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 删除表
DROP TABLE 表名;
-- 清空表数据(保留表结构)
TRUNCATE TABLE 表名;
2.4 用户与权限
bash
-- 创建用户
CREATE USER 'dev_user'@'localhost' IDENTIFIED BY '密码';
-- 授权(所有权限)
GRANT ALL PRIVILEGES ON mydb.* TO 'dev_user'@'localhost';
-- 授权(仅查询)
GRANT SELECT ON mydb.* TO 'dev_user'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'dev_user'@'localhost';
-- 删除用户
DROP USER 'dev_user'@'localhost';
2.5 数据操作(CRUD)
bash
-- 插入数据
INSERT INTO users (username, email) VALUES ('张三', 'zhangsan@qq.com');
-- 查询数据
SELECT * FROM users;
SELECT username, email FROM users WHERE id = 1;
-- 更新数据
UPDATE users SET email = 'new@qq.com' WHERE id = 1;
-- 删除数据
DELETE FROM users WHERE id = 1;
三、数据导入导出
3.1 命令行导出(mysqldump)
bash
# 导出整个数据库(结构和数据)
mysqldump -u root -p mydb > D:\backup\mydb_backup.sql
# 只导出表结构(不含数据)
mysqldump -u root -p -d mydb > D:\backup\mydb_structure.sql
# 只导出数据(不含结构)
mysqldump -u root -p -t mydb > D:\backup\mydb_data.sql
# 导出指定表
mysqldump -u root -p mydb users orders > D:\backup\mydb_tables.sql
# 导出时包含创建数据库语句
mysqldump -u root -p --databases mydb > D:\backup\mydb_full.sql
3.2 命令行导入
bash
# 方式1:登录后选择数据库导入
mysql -u root -p
USE mydb;
SOURCE D:\backup\mydb_backup.sql;
# 方式2:直接命令行导入(推荐)
mysql -u root -p mydb < D:\backup\mydb_backup.sql
3.3 Navicat 图形化导出
表格
| 操作 | 步骤 |
|---|---|
| 导出整个数据库 | 右键数据库 → 转储 SQL 文件 → 结构和数据 |
| 导出单张表 | 右键表 → 转储 SQL 文件 → 结构和数据 |
| 导出仅结构 | 右键数据库 → 转储 SQL 文件 → 仅结构 |
| 导出仅数据 | 右键数据库 → 转储 SQL 文件 → 仅数据 |
导出选项说明:
-
结构和数据:建表语句 + INSERT 数据(最常用)
-
仅结构:只导出 CREATE TABLE
-
仅数据:只导出 INSERT 语句
3.4 Navicat 图形化导入
表格
| 操作 | 步骤 |
|---|---|
| 导入 SQL 文件 | 右键数据库 → 运行 SQL 文件 → 选择 .sql 文件 |
| 从备份恢复 | 右键数据库 → 还原 → 选择备份文件 |
四、Navicat 连接 MySQL
4.1 新建连接
-
打开 Navicat → 点击 连接 → 选择 MySQL
-
填写连接信息:
表格
| 配置项 | 说明 |
|---|---|
| 连接名 | 自定义,如 本地MySQL、192服务器 |
| 主机 | localhost 或服务器 IP,如 192.168.2.190 |
| 端口 | 3306(默认) |
| 用户名 | root 或自定义用户 |
| 密码 | 对应用户的密码 |
- 点击 测试连接 → 显示"连接成功" → 点击 确定
4.2 MySQL 8.0 认证问题
如果连接报错:
bash
Authentication plugin 'caching_sha2_password' cannot be loaded
解决方法------修改用户认证方式:
sql
-- 登录 MySQL 后执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;
或使用 Navicat 16+ 版本,原生支持
caching_sha2_password。
4.3 新建数据库
-
右键连接名 → 新建数据库
-
填写:
表格
| 配置项 | 建议值 |
|---|---|
| 数据库名 | 项目名,如 erp_system |
| 字符集 | utf8mb4 |
| 排序规则 | utf8mb4_unicode_ci |
4.4 常用图形化操作
表格
| 功能 | 操作路径 |
|---|---|
| 查看表数据 | 双击表名 |
| 编辑数据 | 双击表 → 直接修改单元格 → 点击 ✓ 保存 |
| 设计表结构 | 右键表 → 设计表 |
| 新建查询 | 点击 查询 → 新建查询 → 写 SQL |
| 查看 ER 图 | 右键数据库 → 逆向数据库到模型 |
| 数据同步 | 工具 → 数据同步 / 结构同步 |
五、常见问题
Q1: 忘记 root 密码怎么办?
bash
# 1. 停止 MySQL 服务
net stop MySQL80
# 2. 以跳过权限方式启动
mysqld --skip-grant-tables
# 3. 新开 CMD,无密码登录
mysql -u root
# 4. 修改密码
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
EXIT;
# 5. 重启正常服务
net start MySQL80
Q2: 连接报错 "Can't connect to MySQL server"
-
检查服务是否运行:
sc query MySQL80 -
检查端口是否被占用:
netstat -ano | findstr 3306 -
检查防火墙是否放行 3306 端口
Q3: 导入 SQL 文件报错 "Unknown character set"
-
确保 SQL 文件编码为 UTF-8
-
导入时指定编码:
SET NAMES utf8mb4;
Q4: 中文乱码
sql
-- 查看当前编码
SHOW VARIABLES LIKE 'character_set_%';
-- 临时修改会话编码
SET NAMES utf8mb4;
六、快速参考表
表格
| 需求 | 命令/操作 |
|---|---|
| 查看版本 | mysql --version |
| 登录 | mysql -u root -p |
| 退出 | EXIT; 或 QUIT; |
| 查看所有库 | SHOW DATABASES; |
| 查看所有表 | SHOW TABLES; |
| 查看表结构 | DESC 表名; |
| 备份数据库 | mysqldump -u root -p dbname > file.sql |
| 恢复数据库 | mysql -u root -p dbname < file.sql |
| 启动服务 | net start MySQL80 |
| 停止服务 | net stop MySQL80 |
提示:生产环境操作前务必先备份数据!