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不支持。