MYSQL 事务和用户权限

Posted 野生大魔王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL 事务和用户权限相关的知识,希望对你有一定的参考价值。

一、 什么是事务:简单说,所谓事务就是一组操作,要么操作都成功要么都不成功。

二、事务的使用流程

  1. 第一步:开启一个事务,start transaction;

  2. 第二步:正常的SQL语句操作,但是这些SQL语句并没有真正的更改数据库信息

  3.第三步:提交事务,commit,当提交事务后,SQL语句才会被真正的执行,数据库中的信息会被改变如果,如果要取消第二步的操作可以用 rollback(回滚)语句;

 

三、事务的特性:原子性(Atomicity)一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

  1.原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间的某个环节。如果事务执行的过程中发生错误会 回滚到事务开始之前的状态,就像这个事务从来没有被执行过一样。

  2.一致性:数据在事务前后保持一致

  3.隔离线:某个事务的操作对其他事务不可见

  4.持久性:当事务完成后,其影响会被保留下来,不能撤销。

四、事务使用的注意事项:存储引擎必须是innodb,因为myisam不支持事务。

五、视图

  1.定义:视图是由查询结果形成的一张虚拟表

  2.格式:create view 视图名称 as select 语句

  3.什么时候用视图:如果某个查询结果频繁的出现并需要使用这个做子查询,则创建这个视图。

  4.视图的作用:

    1)简化操作不用进行多表查询

    2)可以进行权限控制把表的权限封闭,但是开放相对应的视图权限,视图里只开放部分数据,比如goods商品表,如果我们不想让别人看到我们的销售价格,这时候我们就可以把查看商品的权限封闭,创建一张视图 create view showGoods as select goods_id,goods_name from goods;不出现销售价格列表就可以了。

  5.视图的修改:alter view 视图名 as select 语句;

  6.删除视图:drop view 视图1,视图2;

  7.视图与基本表的关系

    1)视图是表的查询结果,基本表变了,会影响视图表的结果

    2)从单表中获取的视图增改山会影响基本表

    3)多表视图时,可以通过 视图给某个表插入数据

    4)多表视图时不可以通过视图删除数据

    5)多表视图时,可以通过视图更改数据,注意:在更改时,被更改的数据必须是在视图中有所体现的,如果在视图中没有体现出来,语法没有错误,那么真实的表也不会被改变

    6)注意:包含distinct,group by ,having, union,union all , 聚合函数等 视图是不可更新的。

 

一、mysql常见操作

  1. 创建用户:Create user ‘用户名’@’允许登录的地址/服务器’ identified by ‘密码’
  2. 删除用户:drop user  ‘用户名’@’服务器地址’;注意:需要管理员才可以删除
  3. 更改密码

1)     用户更改自己的密码:Set password=password(‘密码’);

2)     管理员更改用户密码:Set password for ‘用户名’@’允许登录的地址’=password(‘密码’);

  1. 为用户授予权限

1)     格式:grant   权限1,权限2..    on  某库.某个对象  to  ‘用户名’@’允许登录的位置’  【identified  by  ‘密码’】;

2)     说明:

l  权限列表,就是,多个权限的名词,相互之间用逗号分开,比如:  select,  insert,  update

l  也可以写:all

l  某库.某个对象,表示,给指定的某个数据库中的某个“下级单位”赋权;

l  下级单位有:表名,视图名等

l  其中,有2个特殊的语法:

l  *.*:       代表所有数据库中的所有下级单位;

l  某库.*  :代表指定的该库中的所有下级单位;

l  3,【identified  by  ‘密码’】是可省略部分,如果不省略,就表示赋权的同时,也去修改它的密码;

l  但:如果该用户不存储,此时其实就是创建一个新用户;并此时就必须设置其密码了

  1. 剥夺权限:revoke  权限列表  on  某库.某个对象  from  ‘用户名’@’允许登录的位置’

二、忘记登录密码的解决方法

  1. 进入命令行界面,输入net stop mysql
  2. mysqld --skip-grant-tables
  3. 此时可以免密码登录:mysql -u root –p
  4. 登录后设置新密码:update mysql.user set authentication_string=password(‘msh8888‘) where user=‘root‘ and Host = ‘localhost‘;
  5. 刷新权限表flush privileges;

三、SQL语句的分类

  1. 数据定义语言(DDL):用于创建、修改、和删除数据库内的数据结构,如:

1)     创建和删除数据库(CREATE DATABASE || DROP  DATABASE);

2)     创建、修改、重命名、删除表(CREATE  TABLE || ALTER TABLE|| RENAME TABLE||DROP  TABLE);

3)     创建和删除索引(CREATEINDEX  || DROP INDEX)

  1. 数据查询语言(DQL):从数据库中的一个或多个表中查询数据(SELECT)
  2. 数据操作语言(DML):修改数据库中的数据,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)
  3. 数据控制语言(DCL):用于对数据库的访问,如:

1)     给用户授予访问权限(GRANT);

2)     取消用户访问权限(REMOKE)

  

 

以上是关于MYSQL 事务和用户权限的主要内容,如果未能解决你的问题,请参考以下文章

mysql 5.7中的用户权限分配相关解读!

mysql添加用户执行函数的权限,通用流行框架大全

如何给mysql用户分配权限

mysql中怎样设置用户和管理员的权限?

如何给mysql用户分配权限

JavaLearn#(17)MySQL基础知识DML及DDL语句外键及非外键约束外键策略DQL语句(单表多表)连接查询子查询索引事务视图存储过程用户权限及角色管理