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

时间: 2024-10-01 13:30:16

MySQL密码管理、存储引擎及事务的相关文章

mysql数据库之 存储引擎、事务、视图、触发器、存储过程、函数、流程控制

目录 一.存储引擎 1.什么是存储引擎? 2.mysql支持的存储引擎 3. 使用存储引擎 二.事务 三.视图 1.什么是视图 2.为什么要用视图 3.如何用视图 四.触发器 为何要用触发器 创建触发器语法 五.存储过程 六.函数 七.流程控制 八.数据库备份(运维方向) 一.存储引擎 1.什么是存储引擎? mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制:比如处理文本用txt类型,处理表格用exce

什么是数据库的事务?MySql中哪些存储引擎支持事务?

什么是事务? 事务由一个或多个sql语句组成一个整体,如果所有的语句执行成功那么修改将会全部生效,如一条sql语句将销量+1,下一条再+1,倘若第二条失败,那么销量将撤销第一条sql语句的+1操作,只有在该事务中所有的语句都执行成功才会将修改加入到数据库中. 事务的特性 事务具体四大特性,也就是经常说的ACID 1. 原子性(Atomicity)  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. 

mysql中InnoDB存储引擎的行锁和表锁

Mysql的InnoDB存储引擎支持事务,默认是行锁.因为这个特性,所以数据库支持高并发,但是如果InnoDB更新数据的时候不是行锁,而是表锁的话,那么其并发性会大打折扣,而且也可能导致你的程序出错. 而导致行锁变为表锁的情况之一就是: SQL的更新(update)或者删除(delete)语句中未使用到索引,导致在InnoDB在对数据进行相应操作的时候必须把整个表锁起来进行检索(表锁).而如果使用了索引的话,InnoDB只会通过索引条件检索数据,而只锁住索引对应的行(行锁). 下面记录一下我遇到

mysql常识以及存储引擎,锁和事务

常见的数据库系统: 1.甲骨文的Oracle 2.IBM的DB2 3.微软的Access和 SQL Server 4.开源PostgreSQL 5.开源MySQL mysql数据库三阶段: 初期开源数据库阶段 sun mysql阶段 oracle mysql阶段 OLTP:联机事务处理,面向基本的.日常的事务处理. OLAP:联机分析处理,数据仓库的主要应用. mysql分支版本(一些): MariaDB : Maria引擎室myisam存储引擎的升级版本,增加了对Hash join的支持和Se

MySQL的多存储引擎架构

支持多种存储引擎是众所周知的MySQL特性,也是MySQL架构的关键优势之一.如果能够理解MySQL Server与存储引擎之间是怎样通过API交互的,将大大有利于理解MySQL的核心基础架构.本文将首先介绍MySQL的整体逻辑架构,然后分析MySQL的存储引擎API并介绍如何编写自己的MySQL存储引擎. MySQL逻辑架构 MySQL作为一个大型的网络程序.数据管理系统,架构非常复杂.下图大致画出了其逻辑架构. Connectors MySQL首先是一个网络程序,其在TCP之上定义了自己的应

mysql三:存储引擎

一 什么是存储引擎 mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎. 存储引擎说白了就是如何存储数据.如何为存储的数据建立索引和如何更新.查询数据等技术的实现方法.因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型) 在O

MySQL 温故而知新--Innodb存储引擎中的锁

近期碰到非常多锁问题.所以攻克了后,细致再去阅读了关于锁的书籍,整理例如以下:1,锁的种类 Innodb存储引擎实现了例如以下2种标准的行级锁: ? 共享锁(S lock),同意事务读取一行数据. ?  排它锁(X lock).同意事务删除或者更新一行数据. 当一个事务获取了行r的共享锁.那么另外一个事务也能够马上获取行r的共享锁,由于读取并未改变行r的数据.这样的情况就是锁兼容. 可是假设有事务想获得行r的排它锁,则它必须等待事务释放行r上的共享锁-这样的情况就是锁不兼容.二者兼容性例如以下表

mysql几种存储引擎介绍

在数据库中存的就是一张张有着千丝万缕关系的表,所以表设计的好坏,将直接影响着整个数据库.而在设计表的时候,我们都会关注一个问题,使用什么存储引擎.等一下,存储引擎?什么是存储引擎? 什么是存储引擎? 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式.有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差:而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,

MySQL Study案例之--MySQL体系和存储引擎

MySql Study案例之--MySql体系和存储引擎 1.数据库和实例     数据库:物理操作系统文件或其他形式文件类型的集合.在MySQL中,数据库文件可以是frm.myd.myi.ibd结尾的文件.当使用NDB引擎时,数据库文件可能不是操作系统上的文件,而是存放与内存之中的文件,但是定义仍然不变.      数据库实例:由数据库后台进程/线程以及一个共享内存区组成.共享内存可以被运行的后台进程/线程所共享.需要牢记的是,数据库实例才是真正用来操作数据库文件的. 在MySQL中,实例和数