MySQL——安全性语言及多用户事务管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL——安全性语言及多用户事务管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3831字,纯文字阅读大概需要6分钟。
内容图文
![MySQL——安全性语言及多用户事务管理](/upload/InfoBanner/zyjiaocheng/870/ba721a07cc4c4a89aa5c533a170b813f.jpg)
一、MySQL的用户管理
1.用户介绍
在MySQL中,会涉及到用户的连接登录的内容,这些内容都存在在MySQL的mysql数据库user表中,在这个表中,涉及到这个用户的权限问题,包括以下内容。
1.是否可读数据库 2.是否可以读写数据库 3.有哪些数据库的操作权限
通常会在数据库中,有一个超级权限用户默认为root
2.用户操作
2.1增加用户
SQL语法
CREATE USER 用户 [IDENTIFIED BY ‘password’]; 其中用户=’用户名’@’主机名’
例子
CREATE USER 'ALEX'@'LOCALHOST' IDENTIFIED BY '123456';
2.2增加权限
SQL语法
GRANT privi_type ON table_name TO 用户; # Privi_type: select ,delete, update ,insert, create, drop,usage all….. # with grant option 表示允许该用户将权限授予其他用户 # 注:若指定密码,则原密码将会被覆盖,如果权限授予一个不存在的用户,则MySQL会自动创建这个用户,但必须为该用户指定密码。 # 用户='用户名'@'主机名'
2.3删除用户
SQL语句
DROP USER 用户; 其中用户:用户=’用户名’@’主机名’
2.4回收权限
使用REVOKE命令可以回收授予的权限,语法格式如下: REVOKE priv_type ON {表名|数据库名} FROM 用户; 或REVOKE ALL PRIVILEDGES, GRANT OPTION FROM 用户; 注:只有拥有当前数据库全局CREATE或者UPDATE权限的用户才能使用REVOKE命令。 例如: revoke update on dbst.student from ALEX@localhost; revoke ALL ON DBST.* from ALEX@LOCALHOST
2.5修改用户
UPDATE MYSQL.USER SET PASSWORD= PASSWORD(‘新密码’) WHERE USER=‘用户’; 例如: UPDATE MYSQL.USER SET PASSWORD=PASSWORD(‘123’) WHERE USER=‘ALEX’ AND HOST=‘LOCALHOST’; flush privileges; //刷新权限(必须步骤) update mysql.user set authentication_string='123' where user=‘alex' and host='loacalhost';
2.6查找用户
# 从mysql中选取数据 select * from user
2.7查看权限
# 使用下面的指令查看用户权限 show grants for ‘alex’@’localhost’;
二、MySQL的事务管理
1.事务概念
事务是由作为一个单独单元的一个或多个SQL语句组成。事务具有以下的几个特性(ACID)
ACID原则(事物具有的特性) A:原子性(Atomicity):事务是一个或多个行为捆绑在一起组成一个单独的工作单元,事务中的动作要么都发生,要么都不发生. C:一致性(Consistent):即在事务开始之前和结束之后,数据库的完整性约束没有被破坏. I:隔离性(Isolation):指的是在并发环境中,事务之间互相影响的程度(即并发事务间数据的可见程度).由并发事务所做的修改必须与任何其他并发事务所做的修改隔离. D:持久性(Durability):一旦事务完成,事务的结果应该持久化,用来保证即使系统崩溃也不会破坏事务的结果.
2.并发控制
1.丢失修改:两个不同的事务同时获得了相同的数据,又都对这个数据进行了修改,那么先提交的事务的更新就会被后提交事务的更新覆盖掉。 2.脏读(未提交读) :一个事务正在访问数据,而其他事务正在更新该数据,但尚未提交,此时会发生脏读问题,即第一个事务所读取的数据是“脏”的。 3.不可重复读:在一个事务内多次读同一数据,在该事务还没有结束时,另外的事务也访问该数据并对其做修改,从而导致第一个事务两次读取的数据不一样 4.幻读:有两种情况 (1):事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按照相同条件读取数据时,发现某些记录神秘的消失了. (2):事务T1按一定条件从数据库中读取了某些数据记录后,事务T2插入了一些记录,当T1再次按照相同条件读取数据时,发现多了一些记录.
3.四种隔离级别
四级隔离级别:定义用户之间隔离和交互的程度 1.读未提交(read uncommitted):可以读到其他事务还没有提交的数据,但不允许丢失修改,会导致大量数据变化。一级封锁协议 2.读已提交(read committed):可以看到其他事务添加的新纪录,而且其他事务对现存记录做出的修改一旦被提交,也可以看到,避免丢失修改和脏读。二级封锁协议 3.可重复读(repeatable read):当前在执行的事务的变化无法被看到,同一事务中执行select数次结果都相同,避免丢失修改、脏读和不可重复读。增强的二级封锁协议 4.可串行化(serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,不能并发执行,避免所有并发控制问题。三级封锁协议 注:MySQL默认为repeatable read隔离级别
三、事务控制
1.控制语句
MYSQL事物控制语句 begin //开始一个事物 commit //提交一个事物 rollback //回滚一个事物 Set autocommit ={0|1} //为0是不自动提交, 为1是自动提交
2.事务安全
在pymysql中,如果不使用commit提交添加的事务,数据库中会出现这个数据,但是在此使用就会出现bug,因此pymysql在一定的情况下,属于线程不安全。
内容总结
以上是互联网集市为您收集整理的MySQL——安全性语言及多用户事务管理全部内容,希望文章能够帮你解决MySQL——安全性语言及多用户事务管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。