数据库的事务管理与安全管理详细介绍

356 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情

管理事务处理

事务处理可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。

🏭 几个专业术语:

  • 事务:指一组SQL语句
  • 回退:指撤销指定SQL语句的过程
  • 提交:指将未存储的SQL语句结果写入数据库表
  • 保留点:指事务处理中设置的临时占位符,你可以对他发布回退(与回退整个事务处理不同)

控制事务处理

MySQL使用下面的语句来标识事务的开始:

START TRANSACTION

使用ROLLBACK

MySQL的ROLLBACK命令用来回退MySQL语句语句,请看下面的语句。

SELECT * FROM ordertotals;
START TRANSACTION
DELETE FROM ordertotals;
SELECT * FROM ordertotals;
ROLLBACK;
SELECT * FROM ordertotal;

上面的语句就实现了一个删除的回退。

🎉需要注意的是,CREATE和DROP操作时无法回退的。

使用COMMIT

一般的mysql语句都是直接针对数据库表执行和编写的,这就是所谓的隐含提交,即提交操作时自动进行的。

但是在事务处理模块,提交不会隐含的进行,为进行明确的提交,使用commit语句。

START TRANSACTION;
DELETE ...
DELETE ...
COMMIT;

如果说DELETE失败了,无论是那一条失败了,最终都不会提交成功的。

使用保留点

对于更加复杂的事务处理可能需要部分提交或回退。

为了创建占位符,可使用SAVEPOINT语句:

SAVE POINT delete1;

每个保留点都都有唯一的名字。为了回退可以这样操作:

ROLLBACK TO delete1;

更改默认的提交行为

SET autocommit = 0;

就可以取消默认提交的行为。

安全管理

管理用户

🚕mysql的用户账号和信息都存储在名为mysql的MySQL数据库中。

查看mysql的用户账号和信息

USE mysql;
SELECT user FROM user;

image-20220905005903409

创建用户账号

CREATE USER ben IDENTIFIED BY 'tiangemima'

这种方式就可以创建用户了,当然你直接网user表里插入数据也能成功创建用户。

重命名一个用户账号:

RENAME USER ben TO bforta;

删除用户账号

DROP USER bforta;

设置访问权限

先查看用户所拥有的权限:

SHOW GRANTS FOR bforta;

授权:

GRANT SELECT ON crashcourse.* TO bforta;

撤销访问权限:

REVOKE SELECT ON crashcourse.* FROM bforta;

GRANT和REVOKE可在几个层次上控制访问权限:

  • 整个服务器:使用GRANT ALL和REVOKE ALL;
  • 整个数据库:使用ON database.*;
  • 特定的表,使用ON database.table;
  • 特定的列
  • 特定的存储过程。

更改口令

也就是改密码的口令:

SET PASSWD FOR bforta = Passwd('new mima')