day39:LAMP架構之mysql介紹

一、LAMP:顧名思義,包括linux(操做系統)+Apache(httpd)+mysql(數據庫軟件)+php(軟件代碼)的縮寫,php

     用來創建Web服務器,三個角色能夠能夠再同一臺服務器,也能夠分開來:以下兩種方式:css

(1):php能夠做爲httpd的一個模塊(php module)的存在,二者必須在同一臺機器上,纔能有效果:mysql

(2):php單獨做爲fastcgi的形式,單獨部署在一臺服務器上,httpd須要時則調用便可:linux

二、LAMP的工做原理:用戶訪問數據,httpd分別處理兩種請求,動態請求和靜態請求:sql

動態請求:動態的數據,httpd經過php  module和mysql數據庫打交道,好比當用戶須要登陸一個網頁時,會先發送登陸請求到httpd服務器,再由php  module去mysql處取登陸相關信息,用於和用戶提交數據作對比,成功後則返回給用戶一個信息:數據庫

靜態請求:靜態的數據,好比圖片、logo圖片、文字、js  css等,不須要和mysql打交道:httpd直接去服務器的某個目錄去取數據:vim

三、mysql介紹:mysql是一種關係型數據庫(將數據保存在不一樣的表中,這樣提升了速度和靈活性),mysql由mysql ab公司開發,後通過sun並於2009年被oracle收購:安全

  mariaDB是mysql的一個分支,由mysql原做者及其餘成員開發,現由maraDB公司維護,mariaDB5.5對應mysql5.5,均按照mysql的版本,而從2012.11.12開始則發佈10.0.0版本,以mysql爲基礎,自行開發新功能:bash

四、mysql的版本:共有七個版本:服務器

community 社區版:

enterprise 企業版:

GA(generally available) 通用版,在生產環境中使用:

DMR(development milestone release) 開發里程碑版本:

RC(release candidate) 發行候選版本:

Beta 開放測試版本;Alpha 內部測試版本

五、mysql的安裝

(1):下載mysql 5.6版本

[root@localhost_002 src]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

(2):解壓mysql:

[root@localhost_002 src]# tar  zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz

(3):修更名稱並挪到/usr/local/mysql下:

[root@localhost_002 src]# mv mysql-5.6.39-linux-glibc2.12-x86_64     /usr/local/mysql
(4):建立mysql用戶及數據庫目錄:

[root@localhost_002 src]# cd /usr/local/mysql/
[root@localhost_002 mysql]# useradd mysql                   #建立mysql用戶
[root@localhost_002 mysql]# mkdir /data/                      #建立mysql數據庫目錄

(5):初始化mysql:指定mysql用戶和指定mysql的數據庫路徑:     --user=mysql     --datadir=/data/mysql/

[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql

報錯信息1:
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper

須要安裝:yum     install    perl-Data-Dumper

報錯信息2:

[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
須要安裝相關的庫文件: yum -y install libaio* libaio-dev*

[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[root@localhost_002 mysql]# echo $?
0

(6)、拷貝默認配置文件到/etc/my.cnf下:

[root@localhost_002 mysql]# cp support-files/my-default.cnf      /etc/my.cnf  

(7)、拷貝啓動腳本到/etc/init.d/mysqld

[root@localhost_002 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
(8)、修改配置文件內容:/etc/my.cnf

[root@adai003 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql             #修改mysql的配置目錄:
socket=/tmp/mysql.sock          #修改socket:
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
#log-error=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
# include all files from the config directory
#!includedir /etc/my.cnf.d

(9)、修改啓動腳本:/etc/init.d/mysqld

[root@localhost_002 mysql]# cat /etc/init.d/mysqld |grep -v  ^#|grep -v ^$|head -15
 
basedir=/usr/local/mysql             #設置mysql的程序目錄:
datadir=/data/mysql                  #設置數據庫的目錄:
service_startup_timeout=900
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql"
mysqld_pid_file_path=
if test -z "$basedir"
then
  basedir=/usr/local/mysql
  bindir=/usr/local/mysql/bin
  if test -z "$datadir"
  then
    datadir=/usr/local/mysql/data
  fi

(10)、添加開機自啓動:   chkonfig:

[root@localhost_002 mysql]# chkconfig --add mysqld
[root@localhost_002 mysql]# chkconfig --list mysqld
mysqld         	0:關	1:關	2:開	3:開	4:開	5:開	6:關

(11)、啓動mysql:service   mysqld  restart

[root@localhost_002 mysql]# service mysqld restart
Starting MySQL.Logging to '/data/mysql/localhost_002.err'.
. SUCCESS!

詳細安裝命令以下

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
100%[===========================================================================================>] 328,882,304 1.76MB/s 用時 3m 13s 
2018-08-21 20:53:43 (1.63 MB/s) - 已保存 「mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz」 [328882304/328882304])

[root@localhost_002 src]# tar  zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz     #解壓
[root@localhost_002 src]# mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql   #改變目錄名稱
[root@localhost_002 src]# cd /usr/local/mysql/
[root@localhost_002 mysql]# useradd mysql                   #建立mysql用戶:
[root@localhost_002 mysql]# mkdir /data/                    #建立mysql數據庫目錄:
[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
#初始化mysql:報錯信息以下:
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
#可知是缺乏這個包:搜索並安裝這個包: 
[root@localhost_002 mysql]# yum list |grep rerl |grep -i dumper
perl-Data-Dumper.x86_64                     2.145-3.el7                base     
perl-XML-Dumper.noarch                      0.81-17.el7                base     
[root@localhost_002 mysql]# yum install -y perl-Data-Dumper.x86_64
[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
Installing MySQL system tables..../bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
#安裝相關的庫文件:
[root@localhost_002 mysql]# yum -y install libaio* libaio-dev*   #安裝庫文件:
[root@localhost_002 mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
[root@localhost_002 mysql]# echo $?
0
#檢查mysql安裝是否有錯誤:  0則是沒有錯誤:   或者看看是否有兩個?號:
[root@localhost_002 mysql]# cp support-files/my-default.cnf /etc/my.cnf  
#拷貝默認配置文件/etc/my.cnf:
[root@localhost_002 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
#拷貝默認啓動腳本到/etc/init.d/mysqld:
修改配置文件內容/etc/my.cnf
[root@adai003 mysql]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql             #修改mysql的配置目錄:
socket=/tmp/mysql.sock          #修改socket:
修改啓動腳本內容/etc/init.d/mysqld:
[root@localhost_002 mysql]# cat /etc/init.d/mysqld |grep -v  ^#|grep -v ^$|head -15
 basedir=/usr/local/mysql             #設置mysql的程序目錄:
datadir=/data/mysql                  #設置數據庫的目錄:
[root@localhost_002 mysql]# chkconfig --add mysqld      #設置開機自啓動:
[root@localhost_002 mysql]# chkconfig --list mysqld
mysqld         	0:關	1:關	2:開	3:開	4:開	5:開	6:關
[root@localhost_002 mysql]# service mysqld restart      #啓動mysql服務:

六、有時候咱們沒有寫入到啓動腳本下,也沒有模板能夠拷貝,還能夠經過如下命令來啓動mysql服務:

[root@localhost_002 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &    #在後臺執行該命令:
[root@localhost_002 mysql]# 180821 22:07:27 mysqld_safe Logging to '/data/mysql/localhost_002.err'.
180821 22:07:27 mysqld_safe A mysqld process already exists
[root@localhost_002 mysql]# !ps
root       1616  0.0  0.1  11772  1588 pts/0    S    22:06   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost_002.pid
#mysql服務已經啓動:

那麼如何關閉呢:  killall
[root@localhost_002 mysql]# killall5 mysqld

擴展kill命令與killall的區別

安裝killall命令:[root@localhost_002 mysql]# yum install -y psmisc

kill命令和killall命令都是用來殺死系統中的進程,區別是:

kill用來殺死單個進程killall用來殺死進程樹

使用kill命令會馬上結束正在運行中的進程,若是該進程正在進行磁盤的讀寫,或者數據正在內存還未保存到磁盤裏,那麼數據會由於進程的結束而丟失,而killall命令會等待該數據讀寫完畢後再將相關進程結束,相對來講使用起來更加安全:

全部若是之後有mysqld的進程,一直殺不死,說明數據量很大,正在慢慢的寫入到磁盤裏去,不要用kill  -9 去殺,會丟數據和損失表,建議使用killall 服務,而後慢慢等待:

關於mysqld有兩個引擎

myisam:比較小,存儲空間比較下:

innodb:存儲空間比較大:

uname:查看系統相關信息(內核版本、硬件架構、主機名稱、操做系統類型):

-a:all,顯示所有信息:

-m:machine,顯示電腦類型:

-n:顯示在網絡上的主機名:

-r:release,顯示操做系統發現版本號:

-s:顯示系統名稱:

-v:version:顯示操做系統版本:

-p:顯示處理類型或者unknown:

-i:輸出硬件平臺:

-o:輸出操做系統名稱:

通常軟件包的安裝方式有以下三種:

rpm包:不能手動指定安裝的目錄:

源碼包:須要手動編譯安裝,比較繁瑣:

二進制免編譯包:方便快捷,把編譯好的文件作成二進制文件,放在一個目錄下打包壓縮:

相關文章
相關標籤/搜索