数据库用户管理(权限控制)
添加用户
-- 创建只能本地登录的用户(localhost)
CREATE USER 'test_user'@'localhost' IDENTIFIED BY '123456';
-- 创建允许任意主机登录的用户(%表示所有主机)
CREATE USER 'test_user'@'%' IDENTIFIED BY '123456';
授权用户
-- 授予对test_db所有表的所有权限
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';
-- 仅授予查询和插入权限(更安全)
GRANT SELECT, INSERT ON test_db.students TO 'test_user'@'localhost';
-- 刷新权限,使设置立即生效
FLUSH PRIVILEGES;
修改用户密码
-- 方式1:SET PASSWORD(通用)
SET PASSWORD FOR 'test_user'@'localhost' = PASSWORD('new_password');
-- 方式2:ALTER USER(MySQL 5.7+推荐)
ALTER USER 'test_user'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'new_password';
-- 刷新权限
FLUSH PRIVILEGES;
删除用户
DROP USER 'test_user'@'localhost';
数据库备份与恢复(防数据丢失)
备份工具:mysqldump
- 备份单个数据库:
mysqldump -u 用户名 -p 数据库名 > 备份文件路径
# 示例:备份test_db到D盘
mysqldump -u root -p test_db > D:/backups/test_db_backup.sql
- 备份多个数据库:
mysqldump -u root -p --databases 库1 库2 > 备份路径
- 备份所有数据库:
mysqldump -u root -p --all-databases > 备份路径
# 等价于(-A是--all-databases的缩写)
mysqldump -u root -p -A > 备份路径
- 仅备份表结构(不含数据):
mysqldump -u root -p --no-data test_db > D:/backups/test_db_struct.sql
恢复数据库
- 命令行直接导入:
# 1. 先创建空数据库(若不存在)
mysql -u root -p -e "CREATE DATABASE IF NOT EXISTS test_db;"
# 2. 导入备份文件
mysql -u root -p test_db < D:/backups/test_db_backup.sql
- MySQL 会话中导入:
mysql -u root -p # 登录MySQL
USE test_db; # 切换到目标数据库
source D:/backups/test_db_backup.sql; # 执行导入
Windows 系统路径需用\
、\\
或单引号包裹(如'D:/backups/...'
)。
事务管理(保证操作原子性)
事务是一组不可分割的操作,要么全部成功,要么全部失败(例如转账:扣款和收款必须同时成功或同时失败)。
核心命令
-- 开始事务
START TRANSACTION; -- 或 BEGIN;
-- 执行操作(如INSERT、UPDATE、DELETE)
UPDATE accounts SET balance = balance - 100 WHERE id = 1; -- A账户扣款
UPDATE accounts SET balance = balance + 100 WHERE id = 2; -- B账户收款
-- 提交事务(所有操作生效)
COMMIT;
-- 若出错,回滚事务(所有操作撤销)
ROLLBACK;
-- 设置保存点(可回滚到指定步骤)
SAVEPOINT sp1; -- 创建保存点sp1
ROLLBACK TO SAVEPOINT sp1; -- 回滚到sp1
RELEASE SAVEPOINT sp1; -- 释放保存点