mysql是一個輕量級關系型資料庫管理系統,由瑞典mysql ab公司開發,目前屬于oracle公司。目前mysql被廣泛地應用在internet上的中小型網站中,由于體積小、速度快、總體擁有成本低,開放源碼、免費,一般中小型網站的開發都選擇linux + mysql作為網站資料庫。
mysql是一個關系型資料庫管理系統,mysql是一種關聯資料庫管理系統,關聯資料庫将資料儲存在不同的表中,而不是将所有資料放在一個大倉庫内,就增加了速度并提高了靈活性。
mysql的官方網站的網址是:www.mysql.com
mysql是一種使用廣泛的資料庫,特性如下:
a、使用c和c++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性
b、支援aix、freebsd、hp-ux、linux、mac os、novell netware、openbsd、os/2 wrap、solaris、windows等多種作業系統。
c、為多種程式設計語言提供了api。程式設計語言包括c、c++、python、java、perl、php、eiffel、ruby和tcl等。
d、支援多線程,充分利用cpu資源
e、優化的sql查詢算法,有效地提高查詢速度
f、既能夠作為一個單獨的應用程式應用在用戶端伺服器網絡環境中,也能夠作為一個庫而嵌入到其他的軟體中提供多語言支援,常見的編碼如中文的gb 2312、big5,日文的shift_jis等都可以用作資料表名和資料列名
g、提供tcp/ip、odbc和jdbc等多種資料庫連接配接途徑
h、提供用于管理、檢查、優化資料庫操作的管理工具
i、可以處理擁有上千萬條記錄的大型資料庫
與大型資料庫例如oracle、db2、sql server等相比,mysql自有它的不足之處,如規模小、功能有限(mysql cluster的功能和效率都相對比較差)等,但是這絲毫也沒有減少它受歡迎的程度。對于一般的個人使用者和中小型企業來說,mysql提供的功能已經綽綽有餘,而且由于mysql是開放源碼軟體,是以可以大大降低總體擁有成本。 目前internet上流行的網站構架方式是lamp(linux+apache+mysql+php),即使用linux作為作業系統,apache作為web伺服器,mysql作為資料庫,php作為伺服器端腳本解釋器。由于linux+apache+mysql+php都是自由或開放源碼軟體(floss),是以使用lamp不用花一分錢就可以建立起一個穩定、免費的網站系統。
可以使用指令行工具管理mysql資料庫(指令mysql 和 mysqladmin),也可以從mysql的網站下載下傳圖形管理工具mysql administrator和mysql query browser。
phpmyadmin是由php寫成的mysql資料庫系統管理程式,讓管理者可用web界面管理mysql資料庫。
phpmybackuppro也是由php寫成的,可以透過web介面建立和管理資料庫。它可以建立僞cronjobs,可以用來自動在某個時間或周期備份mysql 資料庫。
另外,還有其他的gui管理工具,例如早先的mysql-front以及ems mysql manager,navicat 等等。
插件式存儲引擎是mysql資料庫最重要的特性之一,使用者可以根據應用的需要選擇如何存儲和索引資料庫,是否使用事務等。mysql預設支援多種存儲引擎,以适應不同領域的資料庫應用需要。使用者可以通過選擇使用不同的存儲引擎提高應用的效率,提供靈活的存儲,使用者設定可以按照自己的需要定制和使用自己的存儲引擎,以實作最大程度的可定制性。
mysql常用的存儲引擎為myisam、innodb、memory、merge,其中innodb提供事務安全表,其他存儲引擎都是非事務安全表。
myisam是mysql的預設存儲引擎。myisam不支援事務、也不支援外鍵,但其通路速度快,對事務完整性沒有要求。
innodb存儲引擎提供了具有送出、復原和崩潰恢複能力的事務安全。但是比起myisam存儲引擎,innodb寫的處理效率差一些并且會占用更多的磁盤空間以保留資料和索引。mysql支援外鍵存儲引擎隻有innodb,在建立外鍵的時候,要求附表必須有對應的索引,子表在建立外鍵的時候也會自動建立對應的索引。
主要展現在性能、事務、并發控制、參照完整性、緩存、故障恢複,備份及回存等幾個方面
目前比較普及的存儲引擎是myisam和innodb,而myisam又是絕大部分web應用的首選。myisam與innodb的主要的不同點在于性能和事務控制上。
myisam是早期isam(indexed sequential access method)的擴充實作,isam被設計為适合處理讀頻率遠大于寫頻率的情況,是以isam以及後來的myisam都沒有考慮對事物的支援,不需要事務記錄,isam的查詢效率相當可觀,而且記憶體占用很少。myisam在繼承了isam優點的同時,與時俱進的提供了大量實用的新特性和相關工具。例如考慮到并發控制,提供了表級鎖。而且由于myisam是每張表使用各自獨立的存儲檔案(myd資料檔案和myi索引檔案),使得備份及恢複十分友善(拷貝覆寫即可),而且還支援線上恢複。
是以如果應用不需要事務,不支援外鍵,處理的隻是基本的crud(增删改查)操作,那麼myisam是不二選擇。
mysql版本的選擇
mysql community server 社群版本,開源免費,但不提供官方技術支援。
mysql enterprise edition 企業版本,需付費,可以試用30天。
mysql cluster 叢集版,開源免費。可将幾個mysql server封裝成一個server。
mysql cluster cge 進階叢集版,需付費。
mysql workbench(guitool)一款專為mysql設計的er/資料庫模組化工具,是著名的資料庫設計工具dbdesigner4的繼任者。mysqlworkbench又分為兩個版本,分别是社群版(mysql workbench oss)、商用版(mysql workbenchse)。
本文選擇mysql community server 5.6.35
下載下傳網址:
https://dev.mysql.com/downloads/mysql/5.6.html#downloads
作業系統選擇:
red hat enterprise linux/ oracle linux
作業系統版本選擇:
red hat enterprise linux 6 / oracle linux 6 (x86, 64-bit)
下載下傳mysql捆綁包:
mysql-5.6.35-1.el6.x86_64.rpm-bundle.tar
mysql捆綁包包含七個部分:
rhel相容包:mysql-shared-compat-5.6.35-1.el6.x86_64.rpm
mysql服務端程式:mysql-server-5.6.35-1.el6.x86_64.rpm
mysql用戶端程式:mysql-client-5.6.35-1.el6.x86_64.rpm
mysql開發庫:mysql-devel-5.6.35-1.el6.x86_64.rpm
mysql共享庫:mysql-shared-5.6.35-1.el6.x86_64.rpm
嵌入式版本:mysql-embedded-5.6.35-1.el6.x86_64.rpm
測試元件:mysql-test-5.6.35-1.el6.x86_64.rpm
檢視rhel 6.8安裝的mysql版本:
rpm -qa|grep mysql
解除安裝低版本mysql:
rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps
解包mysql捆綁包:
tar -xvf mysql-5.6.35-1.el6.x86_64.rpm-bundle.tar
a、安裝rhel相容包
rpm -ivh mysql-shared-compat-5.6.35-1.el6.x86_64.rpm
b、安裝mysql共享庫
rpm -ivh mysql-shared-5.6.35-1.el6.x86_64.rpm
c、安裝mysql服務端程式
rpm -ivh mysql-server-5.6.35-1.el6.x86_64.rpm
d、安裝mysql用戶端程式
rpm -ivh mysql-client-5.6.35-1.el6.x86_64.rpm
e、安裝mysql開發庫
rpm -ivh mysql-devel-5.6.35-1.el6.x86_64.rpm
拷貝mysql配置檔案到/etc目錄
cp /usr/share/mysql/my-default.cnf /etc/mysql.conf
修改/etc/mysql.conf如下:
[client]
password = 123456
port = 3306
default-character-set=utf8
[mysqld]
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
##設定最大連接配接數,預設為 151,mysql伺服器允許的最大連接配接數16384
max_connections=1000
[mysql]
default-character-set = utf8
初始化mysql資料庫:
/usr/bin/mysql_install_db
擷取安裝時随機管理密碼
cat /root/.mysql_secret
<code># the random password set for the root user at sun apr 2 00:52:59 2017 (local time): mwgpucep8gmz0e20</code>
重設root密碼
mysql -u root -p
提示輸入密碼後輸入随機管理密碼,進入mysql。
執行sql語句設定管理密碼
set password for 'root'@'localhost'=password('123456');
退出mysql
chkconfig mysql on
檢視
chkconfig --list | grep mysql
/var/lib/mysql/ #資料庫目錄
/usr/share/mysql #配置檔案目錄
/usr/bin #相關指令目錄
/etc/init.d/mysql #啟動腳本
開啟mysql服務端口3306并儲存
/sbin/iptables -i input -p tcp --dport 3306 -j accept
/etc/rc.d/init.d/iptables save
允許root使用者在任何地方進行遠端登入,并具有所有庫任何操作權限
先root登入:mysql -u root -p"root"
在mysql中執行sql語句:
mysql -u root -p //登入mysql連接配接
create database test; //sql語句建立導入的資料庫
use test; //選中激活資料庫
source test.sql; //導入sql腳本
telnet連接配接測試 mysql伺服器
使用telnet xx.xx.xx.xx 3306指令測試windows用戶端是否能連接配接mysql伺服器。
如果不能連接配接可能是linux伺服器的防火牆或是雲主機的安全組限制。
通常mysql服務會對連接配接的用戶端進行域名解析,影響通路mysql的速度。是以需要關閉mysql域名解析功能。在/etc/my.cnf配置檔案中設定。
在[mysqld]服務欄以下位置設定skip-name-resolve,如下:
重新開機mysql服務。