设为首页 收藏本站
查看: 854|回复: 0

[经验分享] 1. LAMP架构介绍MySQL安装

[复制链接]

尚未签到

发表于 2018-10-6 10:30:03 | 显示全部楼层 |阅读模式
  [toc]

LAMP架构介绍MySQL安装

一、 LAMP架构介绍

1.Linux+Apache(httpd)+MySQL+PHP
  Appache是最常用的web服务软件,而MYSQL是比较小型的数据库软件,这两个软件及PHP都可以安装到windows机器上
DSC0000.jpg


1.1 常用的PHP网站(Google、淘宝、百度、51cto博客、猿课论坛)
  扩展:

  什么是脚本语言?,为什么php语言是脚本语言
  问:1、脚本语言和编程语言和html是不是计算机语言的主要的分类?区别在什么地方?关键是php是脚本语言这个怎么理解?——因为我才刚开始学php语言,所以请大侠们说得尽量通俗易懂些。
  2、我要做功能比较全的网站,用的是自主建站系统,但是是不是最好也学点php语言?

  答1:编程语言一般用来编写应用程序,像C,C++,VB,DEPHI,JAVA等,功能强大,学习难度也较大。
  脚本语言一般用来编写一些简单的应用,像JS,VBS,JSP,ASP,PHP等,宏程序也可以算是脚本语言。脚本语言比起编程语言来说最大的缺点是执行效率低,但编写要容易点。
  HTML不算是语言,虽然它叫超文本标记语言,其实只能算是一些控制标记,写出来的也不称为程序。
  静态网页中也可以有VBS或JS脚本,它们只是前台的。
  ASP中既可以用VBS也可以JS,只不过通常大部分人用VBS罢了,它们是后台的。
  PHP与C语法几乎相同,其实与JS也几乎相同,都很接近
  你要做网站要学习ASP(有点落后了,不过入门较容易)或PHP或JSP或ASP.net(可以学VB.net也可以学C#.net)中的至少一样。
  免费的整站系统可以免费使用修改,但大多不允许商业使用,你可以去相应的官方网站查看授权文件。
  答二:c;c++;perl;vb;汇编等等这些属于编程语言
  脚本语言主要是我们常见的asp;php等
  asp从属于vb,是vb的一个子集
  php是使用c开发的
  不管是asp还是php都是需要服务器解析执行,但是html和他们是不同的,html不需要服务器解析执行,他只需要直接输出就行了,所以我们叫html是超文本.
  如果你使用的自助建站系统是php开发的,那么倘若你想开发复杂的网站你最好学一下PHP,这样你就可以改写建站系统的核心,但是如果你只用它来做普通的企业站,php你学不学都没关系.

1.2 三个角色可以在一台机器、也可以分开(httpd和PHP要在一起)???Apache和PHP需要安装到同一台机器上,因为PHP是作为Apache的一个模块存在的,两个必须在一起

2.httpd、PHP、MySQL三者如何工作
DSC0001.jpg

  MySQL存储用户名;密码和数据、图片之类的放在静态文件里

11.2 MySQL_MariaDB介绍

  MySQL是一个关系型数据库,由mysql ab公司开发,mysql在2008年被sun公司收购(10亿刀),2009年sun公司被oracle公司收购(74亿刀)

MySQL官网https://www.mysql.com  最新版本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>

11.4 MySQL安装

1.下载MySQL软件包

1.1查看系统版本:uname -i
  

[root@localhost src]# uname -i  
x86_64
  

1.2 下载源码包前指定一个通用目录,该目录保存所有软件包
  什么是源码包:源码包都是可以更改的C或者C++语言编写的源码文件,而免编译的二进制包就是已经编译过的文件再打包后提供给我们.比如windows上安装的QQ,360都是这种安装包.
  

[root@localhost ~]# cd /usr/local/src  
[root@localhost src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
  

2.初始化

2.1 加压软件包
  

[root@localhost src]#tar zxvf mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz  

2.2 挪动位置将解压文件放在/usr/local/mysql/目录下
  

[root@localhost src]# mv mysql-5.6.36-linux-glibc2.5-x86_64 /usr/local/mysql  

扩展:更新mysql软件版本的情况
  

# [ -d /usr/local/mysql ] && mv /usr/local/mysql /usr/local/mysql_old  

  类似一条if判断,意思是如果/usr/local/mysql目录存在,就改一下名字,以免影响后面的操作,如果不更改原有的路径名称,新安装的mysql步骤会失败

2.3 检查/usr/local/mysql/目录是否正确,有无多余的文件,避免误操作
  

[root@localhost src]# cd /usr/local/mysql/  
[root@localhost mysql]# ls
  
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
  

2.4 创建mysql用户,因为启动MySQL需要该用户
  

[root@localhost mysql]# useradd mysql  

  在书中的创建方式为:# useradd -s /sbin/nologin mysql

2.5 创建/data/目录并更改权限,用于存放mysql的数据文件,为下一步的datadir准备
  

  
[root@localhost mysql]# mkdir /data/
  
# chown -R mysql:mysql /data/mysql //给/data/mysql这个文件夹服务mysql用户的执行权限
  

2.6 初始化mysql:./scripts/mysql_install_db --user=mysql --datadir=/data/mysql
  --user 定义数据库的所属主, --datadir 定义数据库安装到哪里,建议放到大空间的分区上,这个目录需要自行创建。
  初始化的时候,可能回出现如下问题:
  

[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
  

2.7如何判断确实安装包或模块:缺少Perl模块,缺少Dumper的支持

yum list | grep perl | grep -i dumper
  那么怎么解决呢?
  使用模糊搜索,过滤关键来尝试解决:
  

[root@localhost mysql]# yum list | grep perl | grep -i dumper  
perl-Data-Dumper.x86_64                 2.145-3.el7                    base
  
perl-Data-Dumper-Concise.noarch         2.020-6.el7                    epel
  
perl-Data-Dumper-Names.noarch           0.03-17.el7                    epel
  
perl-XML-Dumper.noarch                  0.81-17.el7                    base
  

  搜索完成后出现以上四个安装包,无法确定需要哪个安装包的时候,可以尝试每个安装包都试下。
  

[root@localhost mysql]# yum install -y perl-Data-Dumper.x86_64  

2.8 找到安装包,重新初始化mysql
  执行:
  

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

第一种,看到两个OK,确认下
DSC0002.jpg


第二种,执行 echo $?,查看上一条命令是否有问题
  

[root@localhost mysql]# echo $?  
0
  

3. 配置MySQL

3.1 首先复制配置文件my-default.cnf
  

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

编辑配置文件my.cnf,socket定义MySQL服务监听的套接字地址,在Linux系统下面,很多服务不仅可以监听一个端口(通过TCP/IP的方式通信),也可以监听socket,两个进程就可以通过这个socket文件通信.

延伸阅读:socket

  络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
  建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。
  Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原义那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。

vim编辑my.cnf,修改datadir,socket路径

  

# *** upgrade to a newer version of MySQL.  

  
[mysqld]
  
datadir=/data/mysql
  
socket=/tmp/mysql.sock
  
symbolic-links=0
  
# Remove leading # and set to the amount of RAM for the most important data
  

rpm -qf查询某文件来自哪安装包
  

[root@xavi mysql]# ls /etc/my.cnf  
/etc/my.cnf
  
[root@xavi mysql]# rpm -qf /etc/my.cnf
  
mariadb-libs-5.5.52-1.el7.x86_64
  

3.2 为了在启动项中完成mysql配置,需要将mysql.server脚本 放到/etc/init.d/mysqld目录下,并编辑修改
  

[root@localhost mysql]# ls support-files/  
binary-configure  magic  my-default.cnf  mysqld_multi.server  mysql-log-rotate  mysql.server
  

  
[root@localhost mysql]#  cp support-files/mysql.server /etc/init.d/mysqld
  

3.3 修改脚本权限和属性:chmod 755 /etc/init.d/mysqld
  

[root@localhost mysql]# chmod 755 /etc/init.d/mysqld  
[root@localhost mysql]# ls -l /etc/init.d/mysqld
  
-rwxr-xr-x 1 root root 10594 2月  28 11:41 /etc/init.d/mysqld
  

3.4 编辑复制后的脚本文件vim /etc/init.d/mysqld
  增加以下两句:
  basedir=/usr/local/mysql//MySQL包所在路径
  datadir=/data/mysql //定义数据存放的地方
DSC0003.jpg

DSC0004.jpg

  定义路径是不要留空格会报错。

3.4 用chkconfig把mysql添加到开机启动项中,设定开机启动并启动mysql
  

[root@localhost mysql]# chkconfig --add mysqld  
[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:关
  

  
[root@localhost mysql]# chkconfig --add mysqld      //把mysqld服务加入到系统服务列表中
  
[root@localhost mysql]# chkconfig mysqld on          //开机启动mysqld
  
[root@localhost mysql]# service mysqld start           //启动mysqld
  
Starting MySQL.Logging to '/data/mysql/zlinux.err'.
  
. SUCCESS!
  

  如果启动不了,请到 /data/mysql/ 下查看错误日志,这个日志通常是主机名.err.。
  检查mysql是否启动的命令为:
  

[root@localhost mysql]# ps aux |grep mysql  
root       5505  0.0  0.0  11776  1568 pts/0    S    11:46   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/localhost.localdomain.pid
  
mysql      5612  0.1 24.8 1302876 464396 pts/0  Sl   11:46   0:04 /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
  
root       6527  0.0  0.0 112676   976 pts/0    S+   12:47   0:00 grep --color=auto mysql
  

  

3.5查看监听端口:netstat -lntp,有没有3306端口
  

[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:111             0.0.0.0:*               LISTEN      1/systemd
  
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1744/dnsmasq
  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd
  
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1067/cupsd
  
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1580/master
  
tcp6       0      0 :::3306                 :::*                    LISTEN      5612/mysqld
  
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
  
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd
  
tcp6       0      0 ::1:631                 :::*                    LISTEN      1067/cupsd
  
tcp6       0      0 ::1:25                  :::*                    LISTEN      1580
  

4.用命令行的形式启动mysql,--defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &//指定文件路径,添加命令,用&转到后台运行

  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &

  

[root@localhost mysql]# service mysqld stop  
Shutting down MySQL.. SUCCESS!
  
[root@localhost mysql]# !ps
  
ps aux |grep mysql
  
root       6653  0.0  0.0 112676   972 pts/0    S+   12:55   0:00 grep --color=auto mysql
  
[root@localhost mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
  
[1] 6683
  
[root@localhost mysql]# 180228 12:58:11 mysqld_safe Logging to '/data/mysql/localhost.localdomain.err'.
  
180228 12:58:11 mysqld_safe Starting mysqld daemon with databases from /data/mysql
  
^C
  

  ps查看是否启动
  

[root@localhost mysql]# !ps  
ps aux |grep mysql
  
root       6683  0.0  0.0 113264  1596 pts/0    S    12:58   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
  
mysql      6778  1.0 24.4 1302876 455756 pts/0  Sl   12:58   0:00 /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --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
  
root       6809  0.0  0.0 112676   976 pts/0    S+   12:58   0:00 grep --color=auto mysql
  

  查看端口
  

[root@localhost mysql]# !net  
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:111             0.0.0.0:*               LISTEN      1/systemd
  
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1744/dnsmasq
  
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1069/sshd
  
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1067/cupsd
  
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1580/master
  
tcp6       0      0 :::3306                 :::*                    LISTEN      6778/mysqld
  
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd
  
tcp6       0      0 :::22                   :::*                    LISTEN      1069/sshd
  
tcp6       0      0 ::1:631                 :::*                    LISTEN      1067/cupsd
  
tcp6       0      0 ::1:25                  :::*                    LISTEN      1580/master
  

4.kill命令

  必须以killall命令杀掉进程,比较安全。
  killall 命令会先把程序执行完毕,才杀掉进程。
  如果killall等了很久都没有杀死,说明数据量很大,需要写到磁盘中完毕后,慢慢杀死;
  如果强制杀死kill+PID,可能导致数据丢失或表的损坏。


4.1上述一命令行形式来启动的mysql,没法用service mysqld stop来关闭,只能用killall命令

4.2 这里还是建议开启和关闭mysql使用的方法是
  service mysqld start
  service mysqld stop
  

[root@localhost mysql]# killall mysqld  
[root@localhost mysql]# 180228 13:05:00 mysqld_safe mysqld from pid file /data/mysql/localhost.localdomain.pid ended
  
^C
  
[1]+  完成                  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
  
[root@localhost mysql]# !ps
  
ps aux |grep mysql
  
root       6941  0.0  0.0 112676   976 pts/0    S+   13:06   0:00 grep --color=auto mysql
  

kill-9 +PID的方法不可取,容易丢数据或表格

4.2 mysql的引擎innodb和 myisam  面试前讲解??



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-613581-1-1.html 上篇帖子: lamp架构&安装MySQL 下篇帖子: 多实例MySQL数据库启动问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表