1. 程式人生 > >MySQL密碼管理、存儲引擎及事務

MySQL密碼管理、存儲引擎及事務

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密碼管理、存儲引擎及事務