MySQL高級特性


MySQL管理

用戶管理

CREATE USER username IDENTIFIED BY 'password';  新建用戶
CREATE USER@’%’ IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO username@'%';  賦予對應的權限
FLUSH PRIVILEGES;

新建用戶之后可以使用如下命令來刪除用戶:

DROP USER username;  刪除用戶
DELETE FROM user where User='username';  刪除用戶,需要首先use mysql

grant語句賦予用戶相應的權限,通俗的講,grant相當於以下sql語句:

grant priv_set on dbname to username;

如何查看用戶的相應權限呢?

SHOW GRANTS FOR username;

如何撤銷用戶對應的權限?

REVOKE ALL PRIVILEGES ON dbname.table FROM username;
REVOKE INSERT ON dbname.table FROM username; 撤銷創建表權限

用戶管理更新過后請使用FLUSH PRIVILEGES,否則可能會出現ERROR 1396錯誤。

 

表數據復制

利用select可以實現表結構與數據的同步復制。

CREATE TABLE tablename SELECT * FROM oldtablename;
CREATE TABLE tablename SELECT * FROM oldtablename where id < 10;
CREATE TABLE tablename LIKE oldtablename; 利用linke語句也可以實現表的復制

 

數據庫備份與恢復

數據庫的導出:

mysqldump -h x.x.x.x -u root database > backup.sql -p;  輸入數據密碼后數據庫導出到backup.sql文件中
mysql -h x.x.x.x -u root database < backup.sql -p; 執行數據恢復操作

執行數據庫的恢復操作時database必須存在,否則恢復數據時找不到對應的數據庫。

利用source命令,也可以執行數據恢復操作:

mysql> use xxx;
mysql> source backup.sql

 

MySQL的存儲引擎

存儲引擎就是表的類型,MySQL有多種存儲引擎,不同的存儲引擎有不同的存儲機制、索引技術和鎖定水平。

MySQL存儲引擎分為事務安全表的引擎和非事務安全表的引擎,事務是數據庫中一個重要概念,事務具有原子性、一致性、隔離性和持久性4中特性。事務是為了保護數據的安全性,防止數據庫出現故障而導致數據庫中數據不一致。事務安全表可以使用COMMIT語句合並多條語句,適合需要經常更新的表;非事務安全表由於沒有事務支持,處理速度較快,存儲時占用內存較小,數據表執行更新占用內存少。

MyISAM引擎

MyISAM適合讀操作次數遠大於寫操作的數據庫,不支持事務操作,由於不需要處理事務記錄,其占用內存較小,查詢效率較高。每個MyISAM表對應兩個磁盤文件:一個是用於存儲數據的數據文件,其相對路徑為dbname/tablename.MYD;另一個是存儲索引的索引文件,其相對路徑為dbname/tablename.MYI。

InnoDB引擎

InnoDB是MySQL的默認存儲引擎,InnoDB引擎管理事務安全表,使用多版本並發控制和行級鎖來提供對事務的支持,除了提供事務支持外,InnoDB還支持外鍵約束,擁有故障恢復能力。InnoDB設計目標是以最大的效率處理海量數據,其CPU利用率是基於所有磁盤的關系數據庫引擎中最高的,因此,InnoDB引擎非常適合支持事務且並發讀寫頻率較高的數據庫。

InnoDB和MyISAM對比

InnoDB和MyISAM是MySQL中最常用的兩個存儲引擎,這兩個存儲引擎各有優劣,對存儲引擎的選擇應該根據具體應用來選擇,只有這樣才能最大限度發揮MySQL數據庫的性能優勢。

InnoDB和MyISAM區別總結如下:

  • MyISAM不支持事務處理和外鍵約束等高級處理,而InnoDB存儲引擎支持
  • MyISAM強調的是性能,其執行速度比InnoDB更快,而InnoDB存儲引擎則強調的是數據安全性。
  • MyISAM支持表級鎖定,而InnoDB支持行級鎖定。
  • MyISAM支持全文索引,而InnoDB不支持。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM