day39:LAMP架构之mysql介绍

本文深入解析LAMP架构(Linux + Apache + MySQL + PHP)的基本原理,包括其工作流程、组件间的交互以及MySQL数据库的版本、安装与配置步骤。重点介绍了MySQL的安装过程,包括解决安装过程中可能出现的Perl模块缺失和共享库文件问题,以及最终实现MySQL服务的开机自启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、LAMP:顾名思义,包括linux(操作系统)+Apache(httpd)+mysql(数据库软件)+php(软件代码)的缩写,

     用来建立Web服务器,三个角色可以可以再同一台服务器,也可以分开来:如下两种方式:

(1):php可以作为httpd的一个模块(php module)的存在,两者必须在同一台机器上,才能有效果:

(2):php单独作为fastcgi的形式,单独部署在一台服务器上,httpd需要时则调用即可:

2、LAMP的工作原理:用户访问数据,httpd分别处理两种请求,动态请求和静态请求:

动态请求:动态的数据,httpd通过php  module和mysql数据库打交道,比如当用户需要登录一个网页时,会先发送登录请求到httpd服务器,再由php  module去mysql处取登录相关信息,用于和用户提交数据做对比,成功后则返回给用户一个信息:

静态请求:静态的数据,比如图片、logo图片、文字、js  css等,不需要和mysql打交道:httpd直接去服务器的某个目录去取数据:

3、mysql介绍:mysql是一种关系型数据库(将数据保存在不同的表中,这样提高了速度和灵活性),mysql由mysql ab公司开发,后经过sun并于2009年被oracle收购:

  mariaDB是mysql的一个分支,由mysql原作者及其他成员开发,现由maraDB公司维护,mariaDB5.5对应mysql5.5,均按照mysql的版本,而从2012.11.12开始则发布10.0.0版本,以mysql为基础,自行开发新功能:

4、mysql的版本:共有七个版本:

community 社区版:

enterprise 企业版:

GA(generally available) 通用版,在生产环境中使用:

DMR(development milestone release) 开发里程碑版本:

RC(release candidate) 发行候选版本:

Beta 开放测试版本;Alpha 内部测试版本

5、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服务:

6、有时候我们没有写入到启动脚本下,也没有模板可以拷贝,还可以通过以下命令来启动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包:不能手动指定安装的目录:

源码包:需要手动编译安装,比较繁琐:

二进制免编译包:方便快捷,把编译好的文件做成二进制文件,放在一个目录下打包压缩:

转载于:https://my.oschina.net/yuanhaohao/blog/1931742

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值