在上文菜鳥崛起 DB Chapter 1 數據庫概述咱們初步認識了數據庫,也知道市面上常見的幾種數據庫,下面咱們就針對常見的MySQL數據庫展開對DataBase的探討。html
MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下產品。MySQL 是最流行的關係型數據庫管理系統之一,在 WEB 應用方面,MySQL是最好的 RDBMS (Relational Database Management System,關係數據庫管理系統) 應用軟件。mysql
MySQL是一種關係數據庫管理系統,關係數據庫將數據保存在不一樣的表中,而不是將全部數據放在一個大倉庫內,這樣就增長了速度並提升了靈活性。程序員
MySQL所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。MySQL 軟件採用了雙受權政策,分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。sql
MySQL的命名機制由3個數字和一個後綴組成:如mysql-5.6.10數據庫
第一個數字5是主版本號,描述了文件格式,全部版本5的發行版都有相同的文件格式。windows
第二個數字6是發行級別,主版本號和發行級別組合在一塊兒就構成了發行序列號安全
第三個數字10是此發行系列的版本號服務器
1.它使用的核心線程是徹底多線程,支持多處理器。
2.有多種列類型:1、2、3、4、和8字節長度自有符號/無符號整數、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM類型。
3.它經過一個高度優化的類庫實現SQL函數庫並像他們能達到的同樣快速,一般在查詢初始化後不應有任何內存分配。沒有內存漏洞。
4.全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你能夠在同一查詢中混來自不一樣數據庫的表。
5.支持ANSI SQL的LEFT 0UTER JOIN和ODBC。
6.全部列都有缺省值。你能夠用INSERT插入一個表列的子集,那些沒用明確給定值的列設置爲他們的缺省值。
7.MySQL能夠工做在不一樣的平臺上。支持C、C++、Java、Perl、PHP、Python和TCL API。多線程
1、 MySQL最大的缺點是其安全系統,主要是複雜而非標準,另外只有到調用mysqladmin來重讀用戶權限時才發生改變。
2、 MySQL的另外一個主要的缺陷之一是缺少標準的RI(Referential Integrity-RI)機制;Rl限制的缺少(在給定字段域上的一種固定的範圍限制)能夠經過大量的數據類型來補償。
3、 MySQL沒有一種存儲過程(Stored Procedure)語言,這是對習慣於企業級數據庫的程序員的最大限制。
4、 MySQL不支持熱備份。 數據庫設計
l 熱備份是在數據庫運行的狀況下,採用archivelog mode方式備份數據庫的方法。即熱備份是系統處於正常運轉狀態下的備份。因此,若是你有昨天夜裏的一個冷備份並且又有今天的熱備份文件,在發生問題時,就能夠利用這些資料恢復更多的信息。熱備份要求數據庫在Archivelog()方式下操做,並須要大量的檔案空間。一旦數據庫運行在archivelog狀態下,就能夠作備份了。
l 冷備份(cold backup),也被稱爲離線備份,是指在關閉數據庫而且數據庫不能更新的情況下進行的數據庫完整備份。
五、 MySQL的價格隨平臺和安裝方式變化。Linux的MySQL若是由用戶本身或系統管理員而不是第三方安裝則是免費的,第三方案則必須付許可費。Unix或Linux 自行安裝 免費 、Unix或Linux 第三方安裝 200美圓,
咱們用慣了MySQL5.5,那麼陡然更換到高版本的MySQL上,是否是應該瞭解一下MySQL高版本的新功能呢?MySQL5.6在原有5.5的基礎上新增長了以下幾個功能:
l 子查詢最佳化:經過優化子查詢,能夠提升執行效率,主要表如今查詢的結果集合、分類和返回的執行次數上。
l 強化Optimizer Diagnostics功能:運用EXPLAIN執行INSERT、UPDATE和DELETE,EXPLAIN以JSON格式輸出,提供更精確的最佳化指標和絕佳的可讀性,Optimizer Traces功能更可追蹤最佳化決策過程。
l 經過強化InnoDB儲存引擎,提高效能處理量和應用軟件的可用性:提高處理和只讀量高達230%,InnoDB重構得以儘可能減小傳統執行緒、沖洗和淨化互斥的衝突和瓶頸,在高負載的OLTP系統展示更優異的數據同步性,顯著提高只讀和交易工做負載的處理量。
l 大幅度提高可用性:數據庫管理員運用在線數據定義語言做業,可執行新增索引和窗體變動功能。並同時更新應用程序。
l 新增Index Condition Pushdown(ICP)和Batch Key Access(BKA)功能,提高特定查詢量高達280倍。
l InnoDB全文檢索功能:開發人員能夠在InnoDB窗體上就創建全文索引功能,以呈現文字搜尋結果,加快搜尋單字和語句。
l 自我修復複製叢集:新增的Global Transatction Identifiers and Utilities簡化自動偵測和復原功能。當數據庫發生損毀時,數據庫管理員無需介入,便可運用Crash-Safe Replication功能,自動將二進制記錄和備份數據恢復至正確位置。Checksums可透過自動偵測和警示錯誤的功能,跨叢集保持數據的完整性。
l 高效能複製叢集:經過Multi-Threaded Slaves,Binlog Group and Optimized Row-Based Replication提升複製能力高達5倍之多,用戶向外擴充其跨商品系統的工做負載時,得以大幅提高複製的效能和效率。
l 時間延長複製:防止主計算機的做業失誤,例如意外刪除窗體。
l 強化的PERFORMANCE_SCHEMA:協助用戶得以監控使用最多資源的密集查詢指令、對象、用戶和應用程序,並可總集查詢、執行緒、用戶、主機和對象的統計數據彙整成新的摘要頁面,新增功能能讓預設配置更加簡易,並且耗費不到5%的成本。
l MySQL5.6歸入的新功能包括精確空間操做的地理信息系統(Geographic Information System)、強化的IPv6設備以及最佳化的服務器默認值。
https://wenku.baidu.com/view/5c0cb65ddf80d4d8d15abe23482fb4daa58d1dea.html
咱們從官網下載最新的MySQL5.6進行安裝:
根據計算機版本下載MySQL,這裏下載是免安裝版:
解壓下載的MySQL:解壓後以下圖
將解壓目錄下默認文件my-default.ini 拷貝一份,更名my.ini 複製下面的配置信息到my.ini 保存,若是沒有my-default.ini,可本身新建my.ini或者從其餘地方中獲取
[client] port=3306 default-character-set=utf8 [mysqld] port=3306 character_set_server=utf8 basedir=D:\Database\mysql-5.6.38-winx64 #解壓目錄
datadir=D:\Database\mysql-5.6.38-winx64\data #解壓目錄下data目錄
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [WinMySQLAdmin] D:\Database\mysql-5.6.38-winx64\bin\mysqld.exe |
1)右鍵單擊個人電腦->屬性->高級系統設置(高級)->環境變量點擊系統變量下的新建按鈕
輸入變量名:MYSQL_HOME
輸入變量值:D:\Database\mysql-5.6.38-winx64 即爲mysql的自定義解壓目錄。
2)選擇系統變量中的Path 點擊編輯按鈕在變量值中添加變量值:%MYSQL_HOME%\bin
注意是在原有變量值後面加上這個變量,;隔開,不能刪除原來的變量值,
1)從控制檯進入到MySQL解壓目錄下的bin 目錄下:
2)輸入服務安裝命令:
mysqld install MySQL --defaults-file="D:\Database\mysql-5.6.38-winx64\my.ini"
#解壓目錄下修改的my.ini文件
安裝成功後會提示服務安裝成功。
#注:my.ini文件放在MySQL解壓後的根目錄下
此處配置服務命令:配置服務mysqld --install
#移除服務命令爲:mysqld remove
方法一:啓動服務命令爲:net start mysql
方法二:打開管理工具服務,找到MySQL服務。
經過右鍵選擇啓動或者直接點擊左邊的啓動來啓動服務。
有問題的修改:
咱們在上面修改完密碼後,咱們進行登陸發現提示以下錯誤:
咱們姑且不論爲什麼出現這個錯誤,先來介紹該如何解決:
解決方案:
1、 中止服務:中止MySQL服務;
2、 跳過驗證:修改MySQL安裝目錄下的my.ini配置文件,使登陸時跳過權限檢查;
3、 修改密碼:啓動MySQL服務,登陸MySQL,此時提示輸入密碼,輸入任意密碼回車便可進入MySQL。而後經過SQL語句修改root用戶的密碼;
4、 重啓服務:將my.ini文件中加入的跳過權限語句刪除或加#號註釋。重啓服務,使用修改後的密碼登陸便可。
Windows系統具體操做:
1、 中止服務:
方法1:使用dos命令net stop mysql便可;使用這種方式MySQL服務必須爲安裝的服務,不然會出現服務名無效,這時可使用第二種方法。
方法2:進入【控制面板】-->【管理工具】 -->【服務】,找到MySQL服務,點擊左邊的中止。
2、 跳過驗證:進入MySQL的安裝路徑(以默認安裝路徑爲例)C:\Program Files\MySQL\MySQL Server 5.1\,找到my.ini配置文件(些文件記錄MySQL的常規參數,每次啓動服務都會先加載此文件),在my.ini配置文件的最後一行加入skip_grant_tables,此語句能夠忽略登陸檢查。
3、 修改密碼:啓動MySQL服務,進入dos環境,輸入mysql -u root -p登陸MySQL(若是安裝時沒有勾選添加環境變量,須要先使用cd命令進入MySQL安裝目錄),此時提示輸入密碼,輸入任意密碼回車便可進入MySQL,出現mysql>控制符,此時表示已經成功登陸MySQL;mysql> USEmysql (將數據庫切換至mysql庫中)
mysql> UPDATE user SET password=PASSWORD(‘newpswd’)WHERE user=’root’ (修改密碼)
password函數爲MySQL內部函數,其中newpswd爲修改後的新密碼。
4、 重啓服務:
將my.ini文件中加入的跳過權限語句刪除或加#號註釋。重啓服務,使用修改後的密碼登陸便可。
通過上面的解決咱們能夠經過用戶名密碼來進行登陸了,實際上咱們問題的出現就在於咱們初始設置密碼的操做錯誤了,因此使用咱們認識正確的密碼登陸,卻一直不能獲取權限;正確的設置方法是:
UPDATE user SET password=PASSWORD(‘123’)WHERE user=’root’
其中123是咱們的新密碼,PASSWORD是一個關鍵字不用搭理;