LAMP是Linux+Apache(httpd)+MySQL+PHP的組合php
其中Apache指的是提供web服務的一個軟件httpdhtml
MySQL是數據存儲軟件java
php是腳本開發語言,主要用於開發網站,常見的php網站有Google、淘寶、百度、51cto博客mysql
Apache(httpd)+MySQL+PHP三個角色能夠在一臺機器,也能夠分開,可是httpd和PHP要在一塊兒linux
httpd、PHP、MySQL三者工做原理:web
PHP是以一個模塊的形式和apache結合在一塊兒的sql
Apache不能直接和MySQL打交道,必需要經過PHP模塊來通訊,這種行爲叫作動態請求,動態請求用於加載動態的數據數據庫
sun公司是作java的,JDK就是sun公司開發的apache
oracle公司有oracle數據庫,這種數據庫比較大型,像銀行、金融等大企業都須要用oracle,oracle一般會裝在一個小型機上(安裝的是收費的UNIX操做系統),這種小型機可能有幾百顆cup,幾個T的硬盤;oracle數據庫是收費的服務器
rpm包就是經過yum安裝,只能安裝在usr下
二進制免編譯包是將在其餘服務器上編譯配置好了的包拿過來用,相對rpm包優點是能夠任意選擇本身想要安裝的位置;咱們默認就使用這種包
# cd /usr/local/src
# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql/
# useradd mysql
# mkdir /data/
# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
運行上述命令時出現如下錯誤:
此時須要安裝帶有perl模塊且名字包含dumper的軟件,能夠用grep過濾安裝包名字來搜索
也能夠在搜索網站如百度、谷歌、必應搜索,可使用搜索鏡像網站提供的連接:
https://coderschool.cn/1853.html
安裝好後再來測試初始化是否正確,正確的標準是:出現了兩個OK,或者使用命令# echo $? 若是執行此命令返回的結果是0則說明執行正確
mysql配置文件模板是mysql/support-files/my-default.cnf,默認的配置文件路徑及名稱是/etc/my.cnf 若是使用其餘路徑或名稱須要在啓動時指定
# vi support-files/my-default.cnf
# cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
上圖中能夠看到系統中已有my.cnf文件,此時也能夠經過修改這個原來的文件實現,修改後的文件內容以下圖
將下圖中路徑中的# support-files/mysql.server腳本文件拷貝到mysql指定的啓動目錄下並更名/etc/init.d/mysqld
# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
拷貝後再來修改文件中的部份內容:
修改MySQL程序目錄爲basedir=/usr/local/mysql
數據目錄爲datadir=/data/mysql
修改mysqld文件權限爲755
a.開機啓動
增長到系統啓動服務列表中去,使mysqld開機啓動# chkconfig --add mysqld
b.手工啓動mysqld服務
# service mysqld start 或 # /etc/init.d/mysqld start
啓動成功會提示SUCCESS!
查看mysqld腳本啓動成功後的進程# ps aux |grep mysql 以下圖:
查看mysqld啓動成功後的端口狀態# netstat -lntp
從上圖能夠看到數據庫的端口3306已經成功開啓
c.命令行啓動--適用於沒有啓動腳本模板或者啓動腳本打不開的狀況
使用命令行的方式啓動mysqld服務
# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir= /data/mysql & //命令中的defaults-file是設置默認配置文件的啓動位置和名稱,datadir是能夠在my.cnf中定義的,&將進程調到後臺執行
關閉mysqld服務的方式也能夠是:# killall mysqld
注意:# kill pid號 //使用這種方式殺死進程時有可能形成數據丟失,因進程在不停地讀寫數據,當某些寫入的數據還停留在內存中,還沒有來得及保存到磁盤中時,這時候將這個進程殺死就意味着內存中的這些數據丟失了;使用killall的話會先中止進程的讀寫操做,而後將內存中的待寫入的數據寫入到磁盤中,最後才殺死進程,從這種狀況出發,若是未來遇到使用killall 殺死mysqld的進程始終殺不死,等了1分鐘仍是殺不死,ps還會有進程,那說明進程數據量很大,它正在慢慢地寫入到磁盤中,這時候不要強制地用kill -9去殺死進程,這樣的話很是有可能丟數據或者損害表,這種狀況就只能等待,尤爲是數據有幾百個G或者引擎用的是innodb的引擎(mysql有兩個經常使用的引擎innodb 和myisam,其中myisam比較小存儲量和存儲空間都比較小)
推薦連接:
mysql5.5源碼編譯安裝 http://www.aminglinux.com/bbs/thread-1059-1-1.html
mysql5.7二進制包安裝(變化較大) http://www.apelearn.com/bbs/thread-10105-1-1.html