11.1 LAMP架构介绍
11.2 MySQL、MariaDB介绍
11.3/11.4/11.5 MySQL安装
11.6 MariaDB安装
11.7/11.8/11.9 Apache安装
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
11.14/11.15 Apache和PHP结合
11.16扩展
11.17课堂笔记
11.1 LAMP架构介绍
LAMP实际上是 Linux+Apache(httpd)+MySQL+PHP
三个服务能够安装在同一台机器或者也能够分开安装(可是httpd和PHP要在一块儿)
httpd、PHP、MySQL三者之间的工做
注:Apache和PHP是一个总体,由于PHP以模块的形式跟Apache结合在一块儿;
可是Apache不能直接跟MySQL打交道,只能经过PHP模块去MySQL里面拿数据,而后将结果交给Apache,最后Apache将结果交给用户(这是动态请求)
例如:进入一个PHP网站进行网站登陆,登陆请求先交给Apache,Apache判断请求是动态仍是静态,
如果
动态请求,Apache拿着用户的登陆帐号和密码经过PHP模块对比MySQL保存的用户密码是否正确,而后Apache返回给用户一个登陆的状态;
如果
静态请求,登陆网站时有图片须要加载,也是向Apache发送请求,Apache经过某个目录拿到这个图片
,而后返回给用户
11.2 MySQL、MariaDB介绍
MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)
MySQL5.6变化比较大,5.7性能上有很大提高
MariaDB主要由SkySQL公司(现改名为MariaDB公司)维护,SkySQL公司由MySQL原做者带领大部分原班人马创立.
Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6
Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本
11.3/11.4/11.5 MySQL安装
MySQL的几个经常使用安装包:rpm、源码、二进制免编译
二进制免编译(没特殊要求时可用这种方法)
一、下载mysql包
cd /usr/local/src
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
二、解压包,并将包移动到/usr/local/mysql目录
tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
三、新增长mysql用户,并在根目录下建立/data/目录
cd /usr/local/mysql
useradd mysql
mkdir /data/ #存放MySQL数据目录(在根目录下)
四、初始化mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql #初始化(生成MySQL数据库)
#--user指定用户, --datadir指定MySQL数据库目录
ps:检查是否初始化成功两种方法
1、查看是否有两个ok
2、echo $? 为0
五、拷贝配置文件参考模板到默认的/etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
#my-default.cnf 是mysql配置文件
##默认将my-default.cnf 放在/etc/目录下
六、定义配置文件
vim /etc/my.cnf
#datadir放在/data/mysql;socket放在/tmp/mysql.sock;pid-file和includedir注释掉:
七、拷贝启动脚本到/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
八、定
义启动脚本
vi /etc/init.d/mysqld #启动脚本,定义basedir和datadir,
内容以下:
basedir=/usr/local/mysql
datadir=/data/mysql
#要确保/etc/init.d/mysqld的文件权限是755
开启MySQL的三种方法
1、设置mysql开机自启
chkconfig --add mysqld
2、服务命令启动
/etc/init.d/mysqld start 或者 service mysqld start
3、命令行启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
#--defaults-file=配置文件所在路径
##适用于你的配置文件所在路径不在etc目录或者启动脚本不在/etc/init.d/目录,让mysql正常启动
关闭MySQL
1、服务方式
/etc/init.d/mysqld stop
2、命令行方式
killall mysqld
使用kill关闭mysqld时,必定要使用killall mysqld,不能用kill -9 [pid]
#由于mysqld会实时的读写数据,写数据的速度很快,可能会把写的数据保存在内存中(缓存中),或许这部分缓存并未同步到磁盘中去,如果直接使用kill -9 pid ,会形成数据丢失;如果使用killall,会先中止当前的写读操做,让还没写入磁盘的数据继续写入磁盘,直到全部数据写完才哦会把进程杀死
##若是遇到mysqld进程始终杀不死,等了一分钟还没杀死,ps还会有进程,说明数据量很大,还在慢慢写入磁盘,这时要等待数据写入完后再killall进程,不要强制用kill -9,这极可能会形成数据丢失或者损坏数据表
错误:
1、
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决:
yum list |grep perl |grep -i dumper #查找含有perl和dumper的包
yum install -y perl-Data-Dumper
2、
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 install -y libaio-devel
11.6 MariaDB安装
二进制免编译安装
1、下载包
cd /usr/local/src
wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
2、解压包并移动到/usr/local/目录下
tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
3、初始化
cd /usr/local/mariadb
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
4、拷贝配置文件到/usr/local/mariadb目录(由于/etc/目录下有mysql了)
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
注意:mariadb有多个类型配置文件模板,不一样之处在于缓存或缓冲的数值大小不同,因此要根据自身内存大小选择合适的缓存,能让mysql性能更高效
5、定义配置文件
vi /usr/local/mariadb/my.cnf #定义basedir和datadir 改[mysqld]这部分,添加datadir=/data/mariadb
6、拷贝启动脚本到/etc/init.d/目录下
cp support-files/mysql.server /etc/init.d/mariadb
#拷贝启动脚本到/etc/init.d/mariadb目录
7、定义启动脚本
vim /etc/init.d/mariadb #定义basedir、datadir、conf以及启动参数
##若是启动脚本是放在/etc/目录下的话,就不用定义conf这个变量
修改内容以下:
basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=/usr/local/mariadb/my.conf
还要找到启动命令那行,将conf添加进去
中间插入添加一句 --default file="$conf"
#开启前要检查mysql是否中止,由于mysql和mariadb监听的端口是同样的
/etc/init.d/mariadb start
11.7/11.8/11.9 Apache安装
Apache是一个基金会的名字,httpd才是咱们要安装的软件包,早期它的名字就叫apache
Apache官网www.apache.org
源码包安装Apache
一、先下载Apache所需的包
wget
http://mirrors.cnnic.cn/apache/httpd/httpd-2.4.34.tar.gz
wget
http://mirrors.cnnic.cn/apache/apr/apr-1.6.3.tar.gz
wget
http://mirrors.cnnic.cn/apache/apr/apr-util-1.6.1.tar.gz
apr和apr-util是一个通用的函数库,它让httpd能够不关心底层的操做系统平台,能够很方便地移植(从linux移植到windows)
二、解压包
tar -zxvf httpd-2.4.34.tar.gz
tar -zxvf apr-util-1.6.1.tar.gz
tar -zxvf apr-1.6.3.tar.gz
三、编译apr包
cd /usr/local/src/apr-1.6.3
./configure --prefix=/usr/local/apr
make && make install
四、编译apr-util包
cd /usr/local/src/apr-util-1.6.1
./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
make && make install
五、编译httpd包
cd /usr/local/src/httpd-2.4.34
./configure
--prefix=/usr/local/apache2.4
--with-apr=/usr/local/apr
--with-apr-util=/usr/local/apr-util
--enable-so
--enable-mods-shared=most
--enable-so #支持动态扩展
#make前要把apr和apr-util的目录放到/usr/local/apache2.4/srclib/目录下
cp -r
/usr/local/src/
apr-1.6.3
srclib/
cp -r
/usr/local/src/
apr-util-1.6.1
srclib/
make && make install
#most指的是绝大多数经常使用的模块
httpd内的目录
/bin/目录 #表示执行可执行文件(命令)
/conf/ #配置文件所在目录
/htdocs/ #访问网站所在目录
/logs/ #日志所在目录(帮助文档、错误日志等)
/modules/ #扩展模块所在目录
ls /usr/local/apache2.4/modules
/usr/local/apache2.4/bin/httpd -M #查看加载的模块
/usr/local/apache2.4/bin/apachectl -M #同等效果,查看加载模块
#static,表示静态模块,直接编译进了主脚本(/bin/httpd)里面
#shared,表示扩展模块,是一个.so结尾的文件,在/modules目录下
启动httpd
/usr/local/apache2.4/bin/apachectl start
错误:
1、
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/usr/local/src/apr-1.6.3':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
解决:
yum install -y gcc
2、
config.status: executing libtool commands
rm: cannot remove 'libtoolT': No such file or directory
config.status: executing default commands
解决:
这个错误没有关系,不影响
3、
xml/apr_xml.c:35:19: 致命错误:expat.h:没有那个文件或目录
#include <expat.h>
^
编译中断。
make[1]: *** [xml/apr_xml.lo] 错误 1
make[1]: 离开目录“/usr/local/src/apr-util-1.6.1”
make: *** [all-recursive] 错误 1
解决:
yum install -y expat-devel
4、
checking for pcre-config... false
configure: error: pcre-config for libpcre not found. PCRE is required and available from
http://pcre.org/
解决:
yum install -y pcre-devel
5、
collect2: error: ld returned 1 exit status
make[2]: *** [htpasswd] 错误 1
make[2]: 离开目录“/usr/local/apache2.4/support”
make[1]: *** [all-recursive] 错误 1
make[1]: 离开目录“/usr/local/apache2.4/support”
make: *** [all-recursive] 错误 1
解决:
没有在httpd make前将apr和apr-util目录拷贝到httpd2.4目录下的srclib目录里面
11.10/11.11/11.12 安装PHP5
PHP官网www.php.net
当前主流版本为5.6/7.1
源码包安装
一、下载php5包
cd /usr/local/src/
二、解压包
tar -jxvf php-5.6.32.tar.bz2
三、编译包
#由于编译php时要指定apache的路径,因此要先安装apache
cd php-5.6.32
./configure --prefix=/usr/local/php
--with-apxs2=/usr/local/apache2.4/bin/apxs
--with-config-file-path=/usr/local/php/etc --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
make && make install
/usr/local/php/bin/php -m #查看PHP加载的模块(全是静态)
Apache和PHP5是经过
libphp5.so这个文件才结合起来的
libphp5.so在/usr/loacl/http2.4/modules/目录下
四、拷贝一份配置文件模板到/usr/local/php/etc/(这个目录默认为空)
cp php.ini-production /usr/local/php/etc/php.ini
#php.ini-production适合在
生产环境用的php配置文件;php.ini-development适合在
开发环境用的PHP配置文件
11.13 安装PHP7
源码包安装
一、下载php7包
cd /usr/local/src/
wget http://cn2.php.net/distributions/php-7.1.6.tar.bz2
二、解压包
tar -jxvf php-7.1.6.tar.bz2
三、编译包
cd php-7.1.6
./configure --prefix=/usr/local/php7 --with-apxs2=/usr/local/apache2.4/bin/apxs --with-config-file-path=/usr/local/php7/etc --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-libxml-dir --with-gd --with-jpeg-dir --with-png-dir --with-freetype-dir --with-iconv-dir --with-zlib-dir --with-bz2 --with-openssl --with-mcrypt --enable-soap --enable-gd-native-ttf --enable-mbstring --enable-sockets --enable-exif
make && make install
ls /usr/local/apache2.4/modules/libphp7.so
#Apache和PHP7是经过
libphp7.so这个文件才结合起来的
四、拷贝配置文件到/usr/local/php/etc
cp php.ini-production /usr/local/php7/etc/php.ini
注意:php5和php7能够在同一台机器共存,可是Apache使用时须要指定php;安装php5和php7后,
两种php都会在Apache配置文件
/usr/local/apache2.4/conf/httpd.conf
内产生
libphp5.so
和
libphp7.so
模块
,
将不用的模块注释掉便可
11.14/11.15 Apache和PHP结合
httpd主配置文件
/usr/local/apache2.4/conf/httpd.conf
vim /usr/local/apache2.4/conf/httpd.conf
#修改如下4个地方
一、
ServerName #将ServerName前面的#删掉
这样启动httpd服务是就不会提示没有ServerName
二、
Require all denied #将denied改成
granted
不修改前会出现403 forbidden错误,修改后即可以正常访问
三、
AddType application/x-httpd-php .php #增长这一行
增长这一行能够后能够解析php;若是发现网页显示的是php的代码,说明解析不了php
四、DirectoryIndex index.html
index.php #在index.html后面增长index.php
增长一个索引页(默认网址不输入index.php也能跳转到index.php)
ps:
打开windows系统的telnet客户端方法
#telnet客户端用于window链接Linux服务器
控制面板--》程序--》启用或关闭程序功能--》选择telnet客户端,而后点击肯定
/usr/local/apache2.4/bin/apachectl -t #测试配置文件语法是否正确
#每次修改配置文件要检查
/usr/local/apache2.4/bin/apachectl graceful #从新加载配置文件(并不会重启服务)
快捷小技巧:CTRL+R能够快速访问命令历史的命令
按CTRL+R,而后输入关键命令,就会显示出完整命令
/usr/local/apache2.4/bin/apachectl start #启动服务
/usr/local/apache2.4/bin/apachectl restart #从新加载服务
vim /usr/local/apache2.4/htodcs/test.php #增长索引页以下内容
<?php
echo 123;
?>
问题:
若是发现网页显示的是php的代码,说明解析不了php
第一步,检查是否有php模块
ls /usr/local/httpd2.4/modules/libphp5.so
第二步,若是有文件,可是并无显示,检查httpd配置文件有没有加载libphp5.so模块
第三步,检查是否有加解析php的语句AddType application/x-httpd-php .php ,并查看句子是否写对(httpd-php与.php之间有空格)
第四步、检查index.php
11.16扩展
11.17课堂笔记
1、LAMP的工做原理
浏览器向服务器发送http请求,服务器接收请求,因为php做为Apache的组件模块也会一块儿启动,它们具备相同的生命周期。Apache会将一些静态资源保存,而后去调用PHP处理模块进行php脚本的处理。处理完脚本后,Apache将处理完的信息经过http response的方式发送给浏览器,浏览器解析,渲染等一些了操做后呈现整个网页。
#php和mysql之间的联系是动态请求
#若是只是查看图片就是静态请求,Apache能够直接解析。不会用到php和mysql动态请求。(mysql不能存图片等文件)
http抓包工具fiddler
2、安装Apache
pcre包 #就是让Apache支持正则
expat-devel pcre-devel zlib-devel
查看Apache加载了什么模块
/usr/local/apache2/bin/httpd -M
/usr/local/apache2/bin/httpd -l
启动Apache后要想解析php网页,先关闭SElinux,要关闭防火墙或者定义规则
一、关闭firewalld,增长iptables规则
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
二、增长firewalld规则
启动firewalld
而后
firewall-cmd --get-default-zone
firewall-cmd --zone=public --add-service=http-permanent
firewall-cmd --reload
3、MySQL安装
一、yum安装,缺乏定制功能,安装简单
2.二进制免编译安装,能够按需定制,
三、源代码编译安装,能够提供最高的性能
建立用户时指定shell
##MySQL启动不了,出现错误,应该查看mysql的错误日志文件,在/data/mysql/目录下的主机名.err文件;若是没有错误就是配置文件有误,检查配置文件。
[root@xinlinux-03 ~]#
cd /data/
[root@xinlinux-03 data]#
ls
mysql
[root@xinlinux-03 data]#
cd mysql
[root@xinlinux-03 mysql]#
ls
auto.cnf ib_logfile0 mysql test xinlinux-03.pid
ibdata1 ib_logfile1 performance_schema
xinlinux-03.err
4、安装PHP5
编译
--with-apxs2=/usr/loacl/apache2.4/bin/apxs
#apxs工具能够自动配置libphp5.so这个文件
--with-config-file-path=/usr/local/php/etc
#指定php配置文件目录
--with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config
#指定mysql、pdo-mysql、mysqli让mysql能和php进行通讯
5、myslq5.7版本
1. 下载包
wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
若该连接失效,请到r.aminglinux.com 找最新的下载地址。
2. 解压
tar xxvf mysql-5.7.12-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.12-linux-glibc2.5-x86_64 /usr/local/mysql
3. 初始化
useradd -M -s /sbin/nologin mysql
mkdir -p /data/mysql
chown mysql /data/mysql
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --datadir=/data/mysql
注意,这一步最后一行会有一个提示
[Note] A temporary password is generated for root@localhost: B*s1i(*,kXwg
最后面的字符串为root密码。
./bin/mysql_ssl_rsa_setup --datadir=/data/mysql
4. 拷贝配置文件和启动脚本
cp support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf #编辑或者修改
basedir = /usr/local/mysql
datadir = /data/mysql
port = 3306
socket = /tmp/mysql.sock
cp support-files/mysql.server /etc/init.d/mysqld
vi /etc/init.d/mysqld #编辑或者修改
basedir=/usr/local/mysql
datadir=/data/mysql
5. 启动服务
/etc/init.d/mysqld start
6. 设置root密码
使用初始化密码登陆
/usr/local/mysql/bin/mysql -uroot -p'B*s1i(*,kXwg' #进入后直接设置密码
mysql>set password = password('mypass'); #必定要设置一下新密码
退出来,再使用新的密码登陆就能够了
七、还有一种状况,就是不知道初始化密码
vi /etc/my.cnf
在[mysqld]下面增长一行
skip-grant-tables
重启
/etc/init.d/mysqld restart
/usr/local/mysql/bin/mysql -uroot
mysql> update user set authentication_string=password('123333') where user='root';
退出来后,更改my.cnf,去掉刚加的 skip-grant-tables
重启 /etc/init.d/mysqld restart
此时就可使用新的密码了。
6、Apache的DSO原理
DSO(动态共享目标)()
DSO是Dynamic Shared Objects(动态共享目标)的缩写,它是现代Unix派生出来的操做系统都存在着的一种动态链接机制。它提供了一种在运行时将特殊格式的代码,在程序运行须要时,将须要的部分从外存调入内存执行的方法。Apache在1.3之后的版本后开始支持它。由于Apache早就使用一个模块概念来扩展它的功能而且在内部使用一个基于调度的列表来连接扩展模块到Apache核心模块.因此,Apache早就注定要使用DSO来在运行时加载它的模块。
7、Apache的apxs功能
能够用来编译modules中的模块,生成.so的文件
8、Apache的三种MPM模式
Apache 2.X 支持插入式并行处理模块,称为多路处理模块(MPM)。在编译apache时必须选择也只能选择一个MPM,对类UNIX系统,有几个不一样的MPM可供选择,它们会影响到apache的速度和可伸缩性。
一、prefork MPM 多进程
优势:成熟,兼容全部新老模块。进程之间彻底独立,使得它很是稳定。同时,不须要担忧线程安全的问题。(咱们经常使用的mod_php,PHP的拓展不须要支持线程安全)
缺点:一个进程相对占用更多的系统资源,消耗更多的内存。并且,它并不擅长处理高并发请求,在这种场景下,它会将请求放进队列中,一直等到有可用进程,请求才会被处理。
二、worker MPM 多进程+多线程
优势:占据更少的内存,高并发下表现更优秀。
缺点:必须考虑线程安全的问题,由于多个子线程是共享父进程的内存地址的。若是使用keep-alive的长链接方式,也许中间几乎没有请求,这时就会发生阻塞,线程被挂起,须要一直等待到超时才会被释放。若是过多的线程,被这样占据,也会致使在高并发场景下的无服务线程可用。(该问题在prefork模式下,一样会发生)
三、event MPM 多进程+多线程+epoll
keep-alive #手拉手,表示两边一直链接着不断开,即便交流完也不断开
它解决了 keep-alive 场景下 ,长期被占用的线程的资源浪费问题(某些线程由于被keep-alive,挂在那里等待,中间几乎没有请求过来,一直等到超时)。
9、mysql、mysqli、pdo
MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并别从PHP7开始已经被移除。
MYSQLI 叫作 “MySQL加强扩展”。
MYSQLND MYSQL NATIVE DIRVER 叫作MYSQL “官方驱动”或者更加直接点的叫作“原生驱动”
PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。
10、查看Nginx、Apache、MYSQL和PHP的编译参数
Linux下查看Nginx、Napache、MySQL、PHP的编译参数的命令以下:
一、nginx编译参数:
#
/usr/local/nginx/sbin/nginx -V
二、apache编译参数:
#
cat /usr/local/apache/build/config.nice
三、php编译参数:
#
/usr/local/php/bin/php -i |grep configure
四、mysql编译参数:
#
cat /usr/local/mysql/bin/mysqlbug|grep configure
11.1 LAMP架构介绍
11.2 MySQL、MariaDB介绍
11.3/11.4/11.5 MySQL安装
11.6 MariaDB安装
11.7/11.8/11.9 Apache安装
11.10/11.11/11.12 安装PHP5
11.13 安装PHP7
11.14/11.15 Apache和PHP结合
11.16扩展
11.17课堂笔记
11.1 LAMP架构介绍
LAMP实际上是 Linux+Apache(httpd)+MySQL+PHP
三个服务能够安装在同一台机器或者也能够分开安装(可是httpd和PHP要在一块儿)
httpd、PHP、MySQL三者之间的工做
注:Apache和PHP是一个总体,由于PHP以模块的形式跟Apache结合在一块儿;
可是Apache不能直接跟MySQL打交道,只能经过PHP模块去MySQL里面拿数据,而后将结果交给Apache,最后Apache将结果交给用户(这是动态请求)
例如:进入一个PHP网站进行网站登陆,登陆请求先交给Apache,Apache判断请求是动态仍是静态,
如果
动态请求,Apache拿着用户的登陆帐号和密码经过PHP模块对比MySQL保存的用户密码是否正确,而后Apache返回给用户一个登陆的状态;
如果
静态请求,登陆网站时有图片须要加载,也是向Apache发送请求,Apache经过某个目录拿到这个图片
,而后返回给用户
11.2 MySQL、MariaDB介绍
MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)
MySQL5.6变化比较大,5.7性能上有很大提高
MariaDB主要由SkySQL公司(现改名为MariaDB公司)维护,SkySQL公司由MySQL原做者带领大部分原班人马创立.
Mariadb5.5版本对应MySQL的5.5,10.0对应MySQL5.6
Community 社区版本,Enterprise 企业版,GA(Generally Available)指通用版本,在生产环境中用的,DMR(Development Milestone Release)开发里程碑发布版,RC(Release Candidate)发行候选版本,Beta开放测试版本,Alpha内部测试版本
11.3/11.4/11.5 MySQL安装
MySQL的几个经常使用安装包:rpm、源码、二进制免编译
二进制免编译(没特殊要求时可用这种方法)
一、下载mysql包
cd /usr/local/src
wget http://mirrors.163.com/mysql/Downloads/MySQL-5.6/mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
二、解压包,并将包移动到/usr/local/mysql目录
tar -zxvf mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.6.39-linux-glibc2.12-x86_64 /usr/local/mysql
三、新增长mysql用户,并在根目录下建立/data/目录
cd /usr/local/mysql
useradd mysql
mkdir /data/ #存放MySQL数据目录(在根目录下)
四、初始化mysql
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql #初始化(生成MySQL数据库)
#--user指定用户, --datadir指定MySQL数据库目录
ps:检查是否初始化成功两种方法
1、查看是否有两个ok
2、echo $? 为0
五、拷贝配置文件参考模板到默认的/etc/my.cnf
cp support-files/my-default.cnf /etc/my.cnf
#my-default.cnf 是mysql配置文件
##默认将my-default.cnf 放在/etc/目录下
六、定义配置文件
vim /etc/my.cnf
#datadir放在/data/mysql;socket放在/tmp/mysql.sock;pid-file和includedir注释掉:
七、拷贝启动脚本到/etc/init.d/mysqld
cp support-files/mysql.server /etc/init.d/mysqld
八、定
义启动脚本
vi /etc/init.d/mysqld #启动脚本,定义basedir和datadir,
内容以下:
basedir=/usr/local/mysql
datadir=/data/mysql
#要确保/etc/init.d/mysqld的文件权限是755
开启MySQL的三种方法
1、设置mysql开机自启
chkconfig --add mysqld
2、服务命令启动
/etc/init.d/mysqld start 或者 service mysqld start
3、命令行启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
#--defaults-file=配置文件所在路径
##适用于你的配置文件所在路径不在etc目录或者启动脚本不在/etc/init.d/目录,让mysql正常启动
关闭MySQL
1、服务方式
/etc/init.d/mysqld stop
2、命令行方式
killall mysqld
使用kill关闭mysqld时,必定要使用killall mysqld,不能用kill -9 [pid]
#由于mysqld会实时的读写数据,写数据的速度很快,可能会把写的数据保存在内存中(缓存中),或许这部分缓存并未同步到磁盘中去,如果直接使用kill -9 pid ,会形成数据丢失;如果使用killall,会先中止当前的写读操做,让还没写入磁盘的数据继续写入磁盘,直到全部数据写完才哦会把进程杀死
##若是遇到mysqld进程始终杀不死,等了一分钟还没杀死,ps还会有进程,说明数据量很大,还在慢慢写入磁盘,这时要等待数据写入完后再killall进程,不要强制用kill -9,这极可能会形成数据丢失或者损坏数据表
错误:
1、
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决:
yum list |grep perl |grep -i dumper #查找含有perl和dumper的包
yum install -y perl-Data-Dumper
2、
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 install -y libaio-devel
11.6 MariaDB安装
二进制免编译安装
1、下载包
cd /usr/local/src
wget https://downloads.mariadb.com/MariaDB/mariadb-10.2.6/bintar-linux-glibc_214-x86_64/mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
2、解压包并移动到/usr/local/目录下
tar -zxvf mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz
mv mariadb-10.2.6-linux-glibc_214-x86_64 /usr/local/mariadb
3、初始化
cd /usr/local/mariadb
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mariadb/ --datadir=/data/mariadb
4、拷贝配置文件到/usr/local/mariadb目录(由于/etc/目录下有mysql了)
cp support-files/my-small.cnf /usr/local/mariadb/my.cnf
注意:mariadb有多个类型配置文件模板,不一样之处在于缓存或缓冲的数值大小不同,因此要根据自身内存大小选择合适的缓存,能让mysql性能更高效
5、定义配置文件
vi /usr/local/mariadb/my.cnf #定义basedir和datadir 改[mysqld]这部分,添加datadir=/data/mariadb
6、拷贝启动脚本到/etc/init.d/目录下
cp support-files/mysql.server /etc/init.d/mariadb
#拷贝启动脚本到/etc/init.d/mariadb目录
7、定义启动脚本
vim /etc/init.d/mariadb #定义basedir、datadir、conf以及启动参数
##若是启动脚本是放在/etc/目录下的话,就不用定义conf这个变量
修改内容以下:
basedir=/usr/local/mariadb
datadir=/data/mariadb
conf=/usr/local/mariadb/my.conf
还要找到启动命令那行,将conf添加进去
中间插入添加一句 --default file="$conf"
#开启前要检查mysql是否中止,由于mysql和mariadb监听的端口是同样的
/etc/init.d/mariadb start