11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装

第十一章 LAMP架构

11.1 LAMP架构介绍

>LAMP指的   Linux(操作系统)、Apache(httpd 服务器),MySQL(数据库软件) 和PHP(有时也是指Perl或Python) 的缩写,一般用来建立web 服务器(三个角色可以在一台机器也可以分开,但是Apache和PHP要安装在一起) 。

Apache、PHP、MySQL工作模式

mark
说明: 服务器上的图片、js、css等文件属于静态文件;数据库文件是动态文件。如我们每天打开论坛用用户名登陆,

11.2 MySQL_MariaDB介绍

>MySQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

>MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护。MariaDB直到5.5版本,均依照MySQL的版本。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL5.6版的功能和自行开发的新功能。

MySQL版本:
community 社区版;enterprise 企业版;GA(generally available) 通用版,在生产环境中使用;DMR(development milestone release) 开发里程碑版本;RC(release candidate) 发行候选版本;Beta 开放测试版本;Alpha 内部测试版本。

11.3-11.5 MySQL安装

uname命令

>uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

语法: uname [options]
Options:
-a:=all,显示全部信息
-m:=machine,显示电脑类型
-n:显示在网络上的主机名
-r:显示操作系统的发行编号
-s:显示操作系统名称
-v:显示操作系统版本
-p:显示处理器类型或“unknown”
-i:输出硬件平台
-o:输出操作系统名称

MySQL常用安装包

rpm包、源码包、二进制免编译包。

MySQL-5.6-64位二进制免编译包镜像下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

安装MySQL

准备工作
  • 切换至/usr/local/src/目录
    [root@cham002 ~]# ls /usr/local/src
    
    [root@cham002 ~]# cd !$
    cd /usr/local/src
    [root@cham002 src]# ls
    [root@cham002 src]# uname -a
    Linux cham002 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
    
    下载MySQL二进制免编译包
    [root@cham002 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz 
    --2017-12-14 20:36:51--  http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
    正在解析主机 mirrors.sohu.com (mirrors.sohu.com)... 221.236.12.140
    正在连接 mirrors.sohu.com (mirrors.sohu.com)|221.236.12.140|:80... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:314581668 (300M) [application/octet-stream]

     

  • 解压包
    [root@cham002 ~]# tar zxvf /usr/local/src/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
    初始化
  • 将安装文件移动到/usr/local/目录 
  • [root@cham002 src]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
    

     

  • 切换至mysql目录下 
  • [root@cham002 src]# cd /usr/local/mysql/
    [root@cham002 mysql]# ls
    bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
    

     

  • 创建MySQL用户、
  • 创建数据库目录
  • [root@cham002 mysql]# useradd mysql
    
    [root@cham002 mysql]# mkdir /data/
    [root@cham002 mysql]# ls
    bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
    

     

  • 初始化 
  • [root@cham002 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
    

错误排查 

  • 错误提示1:
[root@cham002 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 install -y perl-Data-Dumper

[root@cham002 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@cham002 mysql]# 
  • 错误提示2:
[root@cham002 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@cham002 mysql]#  yum -y install libaio* libaio-dev*

错误提示3:

-bash: ./scripts/mysql_install_db: /usr/bin/perl: 坏的解释器: 没有那个文件或目录
[root@test mysql]#  ./scripts/mysql_insta^C_db --user=mysql --datadir=/data/mysql

解决办法:(安装perl跟perl-devel即可):

执行

  yum -y install perl perl-devel

后在初始化数据库即可。

配置MySQL

完成上述操作后先检测"./scripts"命令是否正确执行:

[root@cham002 mysql]# echo $?
0

 拷贝配置文件到/etc/my.cnf

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

系统etc目录下有某些rmp包自带过来的,如果不想拷贝,那就改一下etc目录下的my.cnf文件。

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

编辑MySQL的系统配置文件/etc/my.cnf
将模板中内容改成如下格式:
[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

修改启动脚本

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

[root@cham002 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
将启动脚本添加到系统配置文件/etc/init.d/中:

修改配置文件:
[root@cham002 mysql]# vi /etc/init.d/mysqld


basedir=/usr/local/mysql
指定mysql程序目录
datadir=/data/mysql

其他不动!!!!

:wq保存


[root@cham002 mysql]# ls -l !$
ls -l /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10902 12月 14 21:46 /etc/init.d/mysqld
更改配置文件权限(默认情况下是755):
[root@cham002 mysql]# chmod 755 /etc/init.d/mysqld
此步骤可以省略!


启动MySQL服务

[root@cham002 mysql]# chkconfig --list

注意:该输出结果只显示 SysV 服务,并不包含原生 systemd 服务。SysV 配置数据可能被原生 systemd 配置覆盖。 
      如果您想列出 systemd 服务,请执行 'systemctl list-unit-files'。
      欲查看对特定 target 启用的服务请执行
      'systemctl list-dependencies [target]'。

netconsole     	0:关	1:关	2:关	3:关	4:关	5:关	6:关
network        	0:关	1:关	2:开	3:开	4:开	5:开	6:关
[root@cham002 mysql]# chkconfig --add mysqld
[root@cham002 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:关


启动MySQL服务:两种方法
[root@cham002 mysql]# etc/init.d/mysql start   ^C
[root@cham002 mysql]# service mysqld start   ^C
[root@cham002 mysql]# service mysqld start    我用这个
Starting MySQL.Logging to '/data/mysql/cham002.err'.
. SUCCESS! 

[root@cham002 mysql]# ps aux |grep mysql
root     14803  0.0  0.1  11760  1584 pts/0    S    21:52   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/cham002.pid
mysql    14938  2.6 44.5 973044 449512 pts/0   Sl   21:52   0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysq --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/cham002.err --pid-file=/data/mysql/cham002.pid --socket=/tmp/mysql.sock
root     14964  0.0  0.0 112664   972 pts/0    S+   21:53   0:00 grep --color=auto mysql
[root@cham002 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      1703/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2419/master         
tcp        0      0 192.168.230.135:8730    0.0.0.0:*               LISTEN      3185/rsync          
tcp6       0      0 :::3306                 :::*                    LISTEN      14938/mysqld        
tcp6       0      0 :::22                   :::*                    LISTEN      1703/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      2419/master        

 

异常启动MySQL服务:
情景:MySQL启动脚本无法添加到/etc/init.d/中或者没有启动脚本,可以使用如下方法启动:

[root@cham002 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &
[root@cham002 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &[1] 15150
[root@cham002 mysql]# 171214 21:58:16 mysqld_safe Logging to '/data/mysql/cham002.err'.
171214 21:58:16 mysqld_safe Starting mysqld daemon with databases from /data/mysql

[root@cham002 mysql]# 
[root@cham002 mysql]# ps aux |grep mysql
root     15150  0.0  0.1 113256  1580 pts/0    S    21:58   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql    15273  1.5 44.5 973044 449496 pts/0   Sl   21: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/cham002.err --pid-file=/data/mysql/cham002.pid --socket=/tmp/mysql.sock
root     15296  0.0  0.0 112664   972 pts/0    S+   21:58   0:00 grep --color=auto mysql

有一次我的虚拟机强制关机了。再启动的时候mysql启动不了。或者

在安装好mysql,并设置开机启动,但是在关机重启后,会发现Mysql服务无法启动

[root@cham002 mysql]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/cham002.pid).

解决方法:

进入到/data/mysql目录下,删除ib_logfile0和ib_logfile1文件

然后重启虚拟机,就会看到mysql服务正常启动

[root@cham002 ~]# cd /data/mysql
[root@cham002 mysql]# ls
aria_log.00000001  auto.cnf     ib_buffer_pool  ib_logfile0  multi-master.info  performance_schema
aria_log_control   cham002.err  ibdata1         ib_logfile1  mysql              test
[root@cham002 mysql]# service mysqld start
Starting MySQL. ERROR! The server quit without updating PID file (/data/mysql/cham002.pid).
[root@cham002 mysql]# rm -rvf ib_logfile0 ib_logfile1
已删除"ib_logfile0"
已删除"ib_logfile1"

重启之后
[root@cham002 ~]# service mysqld start
Starting MySQL SUCCESS! 
[root@cham002 ~]# 171221 09:55:41 mysqld_safe A mysqld process already exists

另外

[root@chamhk ~]# /etc/init.d/mysqld start
Starting MySQL.180109 15:57:14 mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however fil don't exists. Create writable for user 'mysql'.
The server quit without updating PID file (/data/mysql/cham[失败]).


[root@chamhk ~]# mkdir /var/log/mariadb
[root@chamhk ~]# touch /var/log/mariadb/mariadb.log
[root@chamhk ~]# /etc/init.d/mysqld start
Starting MySQL...                                          [  确定  ]

kill命令&killall命令

kill命令和killall命令都是用来杀死系统中的进程,区别是:

  1. kill用来杀死单个进程,killall用来杀死进程树
  2. 使用kill命令会立刻结束正在运行中的进程,如果该进程正在进行磁盘的读写,那么数据会因为进程的结束而丢失,而killall命令会等待该数据读写完毕后再将相关进程结束,相对来说使用起来更加安全。   
[root@cham002 mysql]# killall mysqld
[root@cham002 mysql]# 171214 22:00:49 mysqld_safe mysqld from pid file /data/mysql/cham002.pid ended

[1]+  完成                  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
[root@cham002 mysql]# ps aux |grep mysql
root     15321  0.0  0.0 112664   968 pts/0    S+   22:01   0:00 grep --color=auto mysql

 

转载于:https://my.oschina.net/u/3708120/blog/1590083

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值