第七篇:MySQL 管理与运维实战

数据库用户管理(权限控制)

添加用户

1
2
3
4
5
6
<code>-- 创建只能本地登录的用户(localhost)
CREATE USER &#039;test_user&#039;@&#039;localhost&#039; IDENTIFIED BY &#039;123456&#039;;

-- 创建允许任意主机登录的用户(%表示所有主机)
CREATE USER &#039;test_user&#039;@&#039;%&#039; IDENTIFIED BY &#039;123456&#039;;
</code>

授权用户

1
2
3
4
5
6
7
8
9
<code>-- 授予对test_db所有表的所有权限
GRANT ALL PRIVILEGES ON test_db.* TO &#039;test_user&#039;@&#039;localhost&#039;;

-- 仅授予查询和插入权限(更安全)
GRANT SELECT, INSERT ON test_db.students TO &#039;test_user&#039;@&#039;localhost&#039;;

-- 刷新权限,使设置立即生效
FLUSH PRIVILEGES;
</code>

修改用户密码

1
2
3
4
5
6
7
8
9
10
<code>-- 方式1:SET PASSWORD(通用)
SET PASSWORD FOR &#039;test_user&#039;@&#039;localhost&#039; = PASSWORD(&#039;new_password&#039;);

-- 方式2:ALTER USER(MySQL 5.7+推荐)
ALTER USER &#039;test_user&#039;@&#039;localhost&#039;
IDENTIFIED WITH mysql_native_password BY &#039;new_password&#039;;

-- 刷新权限
FLUSH PRIVILEGES;
</code>

删除用户

1
2
<code>DROP USER &#039;test_user&#039;@&#039;localhost&#039;;
</code>

数据库备份与恢复(防数据丢失)

备份工具:mysqldump

  • 备份单个数据库
1
2
3
4
<code>mysqldump -u 用户名 -p 数据库名 &gt; 备份文件路径
# 示例:备份test_db到D盘
mysqldump -u root -p test_db &gt; D:/backups/test_db_backup.sql
</code>
  • 备份多个数据库
1
2
<code>mysqldump -u root -p --databases 库1 库2 &gt; 备份路径
</code>
  • 备份所有数据库
1
2
3
4
<code>mysqldump -u root -p --all-databases &gt; 备份路径
# 等价于(-A是--all-databases的缩写)
mysqldump -u root -p -A &gt; 备份路径
</code>
  • 仅备份表结构(不含数据)
1
2
<code>mysqldump -u root -p --no-data test_db &gt; D:/backups/test_db_struct.sql
</code>

恢复数据库

  • 命令行直接导入
1
2
3
4
5
6
<code># 1. 先创建空数据库(若不存在)
mysql -u root -p -e &quot;CREATE DATABASE IF NOT EXISTS test_db;&quot;

# 2. 导入备份文件
mysql -u root -p test_db &lt; D:/backups/test_db_backup.sql
</code>
  • MySQL 会话中导入
1
2
3
4
<code>mysql -u root -p  # 登录MySQL
USE test_db; # 切换到目标数据库
source D:/backups/test_db_backup.sql; # 执行导入
</code>

Windows 系统路径需用\\\或单引号包裹(如'D:/backups/...')。

事务管理(保证操作原子性)

事务是一组不可分割的操作,要么全部成功,要么全部失败(例如转账:扣款和收款必须同时成功或同时失败)。

核心命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<code>-- 开始事务
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; -- 释放保存点</code>
上一篇
下一篇