数据库
2019-04-28 05:06:27 0 举报
AI智能生成
MySQL
作者其他创作
大纲/内容
MySQL
事务
概念
一组数据库操作,要么全部成功(提交),要么全部失败(回滚)
操作
开启:start transaction
回滚:rollback
提交:commit
事务提交的两种方式
自动提交:MySQL 中一条DML 语句会自动提交一次事务
手动提交
Oracle 默认却是手动提交的
查看事务的默认提交方式
select @@autocommit; 1:表示自动提交;0:表示手动提交
修改默认提交方式
set @@autocommit=0
四大特性
原子性
事务要么全部成功,要么全部失败
持久性
事务提交或回滚后,数据不变
隔离性
多个事务之间相互独立
一致性
事务操作结束后,数据重量不变
事务的隔离级别
概念:多个事务操作同一组数据,则会出现一些问题,设置不同的隔离级别就能解决这些问题
存在问题
脏的
一个事务中读到另一个事务中没有提交的数据
不可重复读(虚读)
在同一个事务中,两次读取到的数据不一样
幻读
一个事务操作(DML)数据表中的所有记录,另一个事务添加了一条数据,则第一个事务查询不到自己的修改
隔离级别
1.读未提交
read uncommitted
产生的问题:脏读、虚读、幻读
2.读已提交(Oracle 默认)
read committed
产生的问题:虚读、幻读
3.可重复读(MySQL默认)
repeatable read
产生的问题:幻读
4.串行化
serializable
可以解决所有问题 ,原理相当是到事务操作表的时候给表加锁
隔离级别从小到大安全性越来越高,但是效率越来越低
操作
查询隔离级别
select @@tx_isolation;
设置隔离级别
set global transaction isolation level 级别字符串
权限管理 DCL
管理用户
添加用户
Create user '用户名'@'主机名' IDENTIFIED BY '密码'
% 通配符表示任何所有的意思
查询用户
use mysql
select * from USER
select * from USER
修改用户
Update user set password = PASSWORD('新密码') where user = '用户名'
set password for '用户名'@'主机名' = PASSWORD('新密码')
删除用户
drop user '用户名'@'主机名'
忘记密码:停服务(net stop mysql)->无验证启动服务(mysqld --skip-grant-tables)->修改密码操作
授权
查询权限
show grants for '用户名'@'主机名'
授予权限
grant 权限列表 on 数据库.表名 to '用户名'@'主机名'
给某个用户所有权限使用通配符:grant all on *.* to 'zhangsan'@'localhost'
撤销权限
revoke 权限列表 on 数据库.表名 from '用户名'@'主机名'
分支主题
0 条评论
下一页