MySQL密码管理存储引擎及事务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL密码管理存储引擎及事务相关的知识,希望对你有一定的参考价值。

mysql密码管理:



修改用户密码:

(1) SET PASSWORD [FOR ‘user‘@‘host‘] = PASSWORD(‘cleartext password‘);
(2) UPDATE mysql.user SET Password=PASSWORD(‘cleartext password‘)  WHERE User=‘USERNAME‘ AND Host=‘HOST‘;
(3) mysqladmin -uUSERNAME -hHOST -p  password ‘NEW_PASS‘
生效:FLUSH PRIVILEGES

忘记管理员密码的解决办法:

(1) 启动mysqld进程时,使用--skip-grant-tables(忽略用户名密码验证)和--skip-networking(禁止远程登录)选项;

关闭mysql服务

CentOS 7:/usr/lib/systemd/system/mariadb.service  Execstart后添加

CentOS 6:/etc/init.d/mysqld

        systemctl daemon-reload

systemctl start mariadb

mysql直接登录

(2) 通过UPDATE命令修改管理员密码;

(3) 移除第一步添加的两个选项,以正常方式启动mysqld进程;


MySQL常用存储引擎:



innodb:处理大量的短期事务,数据存储于表空间(table space)中

1. 所有innodb表的数据和索引放置于同一个表空间中

      表空间文件:datadir定义的目录下

      数据文件:ibdata1,ibdata2.。。。

2.每个表单独使用一个表空间存储表的数据和索引

     innodb_file_per_table=ON

     数据文件(存储数据和索引):tbl_name.ibd,tbl_name.frm(表格式定义文件)

     基于MVCC来支持高并发,支持所有的四个隔离级别,默认级别为REPEATABLE READ;间隙锁防止幻读。

     使用聚集索引

     支持自适应hash索引


MariaDB (默认使用XtraDB (innodb增强版,percona组织研发))

       数据存储:表空间

       并发:MVCC(多版本并发控制),间隙锁

       索引:聚集索引,辅助索引

       性能:预计操作、自适应hash、插入缓存区

       备份:支持热备(XtraBackup备份工具)

myisam:支持全文索引(FULLTEXT index)、压缩、空间函数(GIS);但不支持事务,不支持行级锁

崩溃后无法安全恢复(Aria myisam的增强版支持崩溃安全恢复)

适用场景:只读(或者写较少)、表较小(可接受长时间进行修复操作)

文件:

    tab1_name.frm:表格式定义

    tab1_name.MYD:数据文件

    tab1_name.MYI:索引文件

特性:

    加锁和并发:表级锁

    修复:手工或自动修复、但可能丢失数据

    索引:非聚集索引

    延迟更新索引键:

    压缩表

MySQL事务:


事务:一组原子性的sql查询,或者说一个独立的工作单元。

ACID测试

     A:原子性,最小不能分割的单元,要么全部都成功执行,要么全部失败后回滚。

     C:一致性,数据总是从一个一致性状态转到另一个一致性状态

     I:隔离性,一个事务所做出的操作在提交之间,是不能为其他所见的;隔离有多种隔离级别,隔离性越高安全性越高,同时支持并发的能力越差。

     D:持久性,一旦事务提交,其所作的修改会永久保存于数据库中

事务处理过程

    启动事务:start  transaction;

    存档点:savepoint  pointname

           rollback  to  pointname  回到存档点

           release  pointname  删除存档点

    结束事务:1.commit 提交 2. rollback 回滚

建议:显示请求和提交事务,不要使用自动提交功能,自动提交会产生大量磁盘IO影响性能。

方法:set SESSION autocommit=0;           show variables like ‘%auto%‘;确认


事务的隔离级别

查看级别:show global variables  like ‘%tx_isolation%‘;

                              

    READ-UNCOMMITTED (读未提交)

    READ-COMMITTED (读提交)

    REPEATBLE-READ (可重读)默认

    SERIALIZABILE (可串行化)


可能存在的问题:

      脏读:即读别人未提交的数据

      不可重复读:同一事务中改动之前读一次,改之后读一次,两次读到的信息不一致

      幻读:别人已经修改提交了,自己在以打开的事务中看到是修改之前的信息。提交事务后会发现信息已改变。

      加锁读:一个事务做出数据的修改未提交时,其他事务无法提交


死锁:两个或多个事务在同一资源相互占用,并请求锁定对方占用的资源的状态。

事务日志:

事务日志的写入类型为“追加”,因此其操作为顺序IO,此日志也被称为预写式日志(write ahead logging)ib_logfile


本文出自 “linux运维” 博客,请务必保留此出处http://arm2012.blog.51cto.com/2418467/1980770

以上是关于MySQL密码管理存储引擎及事务的主要内容,如果未能解决你的问题,请参考以下文章

数据库事务管理及存储引擎

2MySQL常见数据库引擎及比较?

MySQL索引事务及存储引擎

MySQL索引事务及存储引擎

MyISAM 存储引擎的特点及优化方法

MySQL之数据库存储引擎及事务ACID特性