11.1 LAMP架构介绍
LAMP包含了Apache(httpd)+MySQL+PHP
Apache:提供web服务的软件
MySQL:存储软件,存的是数据,一些字符串
PHP:脚本语言,类似shell,比shell复制的语言,通常用于做网站;由于移动网络的影响,PHP现在不怎么受欢迎
三个服务可以在同一个机器上,也可以分开,但(httpd和PHP必须在一起)
PHP是以一个模块的形式和Apache结合在一起的,Apache不能直接和MySQL通信,只能通过PHP的模块去MySQL里调取数据
PHP和MySQL交互数据的这个动作,称为动态请求
用户登录:
- Apache确认用户行为→静态→访问网站过程的图片、logo之类的都是静态文件
- Apache确认用户行为→动态→PHP与MySQL进行数据对比
11.2 MySQL_MariaDB介绍
MySQL 是一个关系型数据库,有MySQL ad公司开发,08年被sun公司以10亿美元收购,09年被oracle公司以74亿美金收购
oracle 常用于银行,金融企业,通常装于小型机上,小型机系统是Unix系统,这个系统是收费的。
MySQL最新版为 5.7GA和 8.0DMR
MySQL5.6变化比较大,5.7性能上有很大提升
Mariadb为MySQL的一个分支,官网https://mariadb.com/最新版本10.2
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 MySQL安装(上)(中)(下)
rpm包,开源直接yum安装,不能定义安装路径
源码包,make 安装
二进制免编译,编译之后的文件重新排布打包压缩,减少编译配置时间,因为是在其他的机器上编译的,可能性能上会有些差异,达不到极致
如果没有特殊要求,可以使用二进制包安装,二进制包是区分平台
uname -a 查看平台类型。是32位还是64位
- 下载
下载的时候,需要主要,你要下载到那个目录,需要cd 到那个目录下。。
做LANP环境的时候,会需要下很多的源码包
默认规则,源码包,统一放在 /usr/local/src/ 路径下
使用wget下载5.6,64位的包
wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@localhost src]# ls
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
下载完成后,解压缩
[root@localhost src]# tar -zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
解压完成后,更改目录名字,并移动到规则内的目录下
[root@localhost src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@localhost src]# cd ..
[root@localhost local]# ls
bin etc games include lib lib64 libexec mysql sbin share src
[root@localhost local]# cd mysql/
[root@localhost mysql]# pwd
/usr/local/mysql
创建一个MySQL的用户
useradd mysql
创建存放MySQL数据的目录
mkdir /data/
- 初始化
初始化,实际上就是生产一个/data/mysql的目录,因为MySQL要想启动,必须要有一个自带的库,自带的库的名字就叫mysql
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
理解为,指定mysql用户,指定用户的数据存放目录
但是运行提示错误:
[root@localhost mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
FATAL ERROR: please install the following Perl modules before executing ./scripts/mysql_install_db:
Data::Dumper
解决思路,出现提示,一般都是缺少什么包,或者是什么模块,安装就好,根据提示进行安装
但是不知道缺少的包是什么,就只能进行模糊搜索
yum list |grep perl |grep -i dumper
并不一定能查到正确答案,可以去网站搜索一下正确资料
正确缺少的包是 perl-Data-Dumper.x86_64
安装好之后重新执行
[root@localhost 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
到百度搜索之后,说是缺少libaio
yum install -y libaio
安装后重新执行
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
发现能顺利执行,结束后,查看是否安装成功,看运行过程中是否提示2个“OK”
使用echo $? 查看运行过程是否出错 ,echo $? ==只会对前一步动作进行查看是否有错误==。
[root@localhost mysql]# echo $?
0
并没有错误
- 拷贝配置文件和启动脚本
配置文件模板,存放在 mysql安装目录
support-files/my-default.cnf
MySQL的配置文件就叫my.cnf,想要MySQL正常运行,名字必须正确,而且固定放在/etc/ 下,如果想放在其他目录下,需要做一个启动的指定
将文件拷贝到 /etc/my.cnf
centos7 系统默认就有一个 my.cnf
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 指定配置文件所在的路径
[root@localhost mysql]# ls /etc/my.cnf
/etc/my.cnf
由 mariadb 安装过来的
[root@localhost mysql]# rpm -qf /etc/my.cnf
mariadb-libs-5.5.52-1.el7.x86_64
既然默认就有配置文件,可以就用这个配置文件,只不过需要改一些配置,改动如下。
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
# 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
- 启动脚本
拷贝启动脚本
cp support-files/mysql.server /etc/init.d/mysqld
编辑启动脚本
vim /etc/init.d/mysqld
只需要调整以下部分就可以了
basedir=/usr/local/mysql
datadir=/data/mysql
调整启动脚本的权限 为755,不过貌似默认就是755权限
需要启动脚本为开机启动,需要将脚本加入到系统启动服务里面去
chkconfig --add mysqld
查看mysqld 是否加到启动服务里面
chkconfig --list
[root@localhost mysql]# chkconfig --list
注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。
如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
欲查看对特定 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysqld 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
同样的,可以直接使用命令 直接启动服务,两种启动方式,总有你喜欢的一款。
/etc/init.d/mysqld statr
service mysqld start
[root@localhost mysql]# service mysqld start
Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'.
. SUCCESS!
SUCCESS说明启动成功了
如果不放心,还可以继续看看进程
ps aux |grep mysqld
[root@localhost mysql]# ps aux |grep mysqld
root 2869 0.0 0.0 11764 1596 pts/0 S 01:16 0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
mysql 3004 1.0 23.9 973056 449524 pts/0 Sl 01:16 0:00 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/localhost.localdomain.err --pid-file=/data/mysql/localhost.localdomain.pid --socket=/tmp/mysql.sock
root 3030 0.0 0.0 112664 972 pts/0 R+ 01:17 0:00 grep --color=auto mysqld
看看监听的端口
[root@localhost mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1006/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1543/master
tcp6 0 0 :::3306 :::* LISTEN 3004/mysqld
tcp6 0 0 :::22 :::* LISTEN 1006/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1543/master
如果,没有把启动脚本放在/etc/init.d/下或者是没有相关的启动脚本,可以以命令行的方式去进行启动
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
关闭msyql服务
/etc/init.d/mysqld stop 正常关闭办法
如果是命令行方式运行的,只能杀死进程
killall mysqld
killall 命令并不会直接杀死进程,会先停止进程的其他的操作,然后让进程把手头上的工作再做完,然后再杀死。
所以一旦使用了killall 可能会因为数据量大,等待的时间会比较长一些,如果这时候使用kill -9 强制杀死 mysql 很容易丢失数据和表。