持续创作,加速成长!这是我参与「掘金日新计划 · 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;
创建用户账号
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')