一、MySQL 安装与配置(Windows/Linux 通用流程)
1. 初始配置与登录
-
Linux 初始密码获取:安装后默认生成临时密码,通过
grep 'temporary password' /var/log/mysqld.log查看,复制临时密码登录 MySQL:mysql -u root -p,粘贴密码后回车。 -
密码修改:首次登录必须修改密码,执行
ALTER USER 'root'@'``localhost``' IDENTIFIED BY '新密码';(MySQL 8.0 要求密码长度≥8 位,包含大小写、数字和特殊符号)。 -
远程登录配置:默认 root 仅允许本地登录,若需远程连接,执行
update mysql.user set host='%' where user='root';,再刷新权限:flush privileges;。 -
防火墙开放端口:Linux 需开放 3306 端口,
firewall-cmd --add-port=3306/tcp --permanent,重启防火墙:firewall-cmd --reload。
二、MySQL 用户权限管理(实操指南)
1. 创建新用户
语法:CREATE USER '用户名'@'访问主机' IDENTIFIED BY '密码';
-
示例 1:创建仅本地访问的用户
test,密码Test@1234:CREATE USER 'test'@'``localhost``' IDENTIFIED BY 'Test@1234'; -
示例 2:创建允许任意主机访问的用户
dev,密码Dev@5678:CREATE USER 'dev'@'%' IDENTIFIED BY 'Dev@5678';(生产环境不建议用%,需指定具体 IP)
2. 授权用户权限
语法:GRANT 权限类型 ON 数据库.表名 TO '用户名'@'访问主机';
-
常用权限类型:
SELECT(查询)、INSERT(插入)、UPDATE(修改)、DELETE(删除)、CREATE(创建数据库 / 表)、DROP(删除数据库 / 表)、ALL PRIVILEGES(所有权限) -
示例 1:给
test用户授权test_db数据库所有表的查询和插入权限:GRANT SELECT,INSERT ON test_db.* TO 'test'@'``localhost``'; -
示例 2:给
dev用户授权所有数据库所有表的所有权限(谨慎使用):GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%'; -
授权后必须刷新权限:
flush privileges;
3. 查看用户权限
语法:SHOW GRANTS FOR '用户名'@'访问主机';
示例:SHOW GRANTS FOR 'test'@'localhost';
4. 回收用户权限
语法:REVOKE 权限类型 ON 数据库.表名 FROM '用户名'@'访问主机';
示例:回收 test 用户的插入权限:REVOKE INSERT ON test_db.* FROM 'test'@'localhost';,刷新权限:flush privileges;
5. 删除用户
语法:DROP USER '用户名'@'访问主机';
示例:DROP USER 'dev'@'%';
三、MySQL 备份与恢复(mysqldump 工具详解)
1. mysqldump 备份操作(命令行执行)
(1)备份单个数据库
语法:mysqldump -u 用户名 -p 数据库名 > 备份文件路径.sql
示例:备份 test_db 数据库到 /backup/test_db_2024.sql(Linux)或 D:\backup\test_db_2024.sql(Windows):
mysqldump -u root -p test_db > /backup/test_db_2024.sql
执行后输入 root 密码,等待备份完成(备份文件为 SQL 脚本,包含建表语句和数据)。
(2)备份多个数据库
语法:mysqldump -u 用户名 -p --databases 数据库1 数据库2 > 备份文件路径.sql
示例:同时备份 test_db 和 dev_db:mysqldump -u root -p --databases test_db dev_db > /backup/multi_db_2024.sql
(3)备份所有数据库
语法:mysqldump -u 用户名 -p --all-databases > 备份文件路径.sql
示例:备份 MySQL 中所有数据库:mysqldump -u root -p --all-databases > /backup/all_db_2024.sql
(4)备份时排除某些表
语法:mysqldump -u 用户名 -p 数据库名 --ignore-table=数据库名.表名1 --ignore-table=数据库名.表名2 > 备份文件路径.sql
示例:备份 test_db 但排除 log 表和 temp 表:mysqldump -u root -p test_db --ignore-table=test_db.log --ignore-table=test_db.temp > /backup/test_db_no_log.sql
2. MySQL 恢复操作
(1)通过 mysql 命令恢复(推荐)
语法:mysql -u 用户名 -p 数据库名 备份文件路径.sql
示例:恢复 test_db 数据库:mysql -u root -p test_db _2024.sql(需确保 test_db 已存在,若不存在先创建:CREATE DATABASE test_db;)
(2)登录 MySQL 后恢复
先登录 MySQL:mysql -u root -p,切换到目标数据库:USE test_db;,执行恢复命令:SOURCE 备份文件路径.sql;
示例:SOURCE /backup/test_db_2024.sql;(Windows 路径需用斜杠 D:/backup/test_db_2024.sql 或双反斜杠 D:\\backup\\test_db_2024.sql)
3. 备份恢复注意事项
-
备份时建议关闭写入操作(如暂停应用服务),避免数据不一致;
-
定期备份:生产环境建议每天自动备份,可通过 Linux 定时任务(crontab)或 Windows 任务计划程序实现;
-
备份文件验证:备份后可随机抽查 SQL 文件,或测试恢复到测试环境,确保备份有效;
-
MySQL 8.0 备份的文件恢复到 5.7 及以下版本可能存在兼容性问题,需注意版本匹配。