文档章节

11.3/11.4/11.5 MySQL安装

运维小白
 运维小白
发布于 2017/12/09 14:21
字数 2914
阅读 49
收藏 0

MySQL目录概要

  • MySQL的几个常用安装包:rpm、源码、二进制免编译
  • cd /usr/local/src //切换到下载源码包的目录
  • wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
  • tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz //解压
  • mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql //改名,并放到/usr/local/mysql
  • cd /usr/local/mysql //进入到该目录下
  • useradd mysql //创建一个mysql用户
  • mkdir /data/ //创建一个目录,是为了存放mysql的数据,把数据目录放到这个目录下
  • ./scripts/mysql_install_db --user=mysql --datadir=/data/mysql //初始化,所谓初始化就是要生成/data/mysql ,因为mysql要想启动,首先要有一个自带的库,自带的库叫mysql
  • cp support-files/my-default.cnf /etc/my.cnf //
  • cp support-files/mysql.server /etc/init.d/mysqld //
  • vi /etc/init.d/mysqld // -定义basedir和datadir //
  • /etc/init.d/mysqld start //

MySQL常见安装包

  1. rpm包——>直接yum安装即可

  2. 源码包——>

  3. 二进制免编译包——>这种包相当于是在发布之前,先在一台linux服务器上做了编译,编译完之后,把编译完成的文件重新安排放到一个目录下去,然后在打包压缩,最后再发布

    • 优势:我们不用花更多的时间去配置、去编译,直接拿来就可以使用,这和rpm包有点类似,但rpm包定义不能所安装的路径,默认安装在usr下面;而二进制免编译包可以放到一个目录下
    • 二进制免编译包,是在其他服务器、Linux平台上编译的,也是可以在centos上使用
      • 若想追求极致的性能,那最好自己去编译

安装MySQL

  1. 所有的源码包,需要的资源放在 /usr/local/src/ ,切换到该目录下
[root@hf-01 ~]# cd /usr/local/src/
[root@hf-01 src]# ls
httpd-2.2.34  httpd-2.2.34.tar.gz
[root@hf-01 src]# 
  1. 查询平台是多少位的
    • 二进制的包是区分平台的,是32位,还是64位的
      • 查看平台,用 uname -a 命令查看
        • x86_64就是64位平台的
        • i686 i586 就是32位平台的
      • centos7以64位平台为主,但也有32位的版本,32位的版本是基于64位的基础上又一次编译的
[root@hf-01 src]# uname -a    //查看平台,是多少位的
Linux hf-01 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@hf-01 src]# 
  1. 并去下载MySQL包,地址链接,直接wget下载MySQL 5.6版本即可
[root@hf-01 src]# wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
--2017-12-12 04:39:17--  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]
正在保存至: “mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz”

100%[==============================================>] 314,581,668  560KB/s 用时 9m 41s 

2017-12-12 04:49:03 (529 KB/s) - 已保存 “mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz” [314581668/314581668])

[root@hf-01 src]#
  1. 下载完MySQL安装包后,首先需要解压
[root@hf-01 src]# ls
mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz
[root@hf-01 src]# tar zxvf mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz

解压文件过程
  1. 移动目录,并修改名字
[root@hf-01 mysql]# mv mysql-5.6.35-linux-glibc2.5-x86_64 /usr/local/mysql
[root@hf-01 mysql]# 
  1. 进入到 /usr/local/mysql 目录下
[root@hf-01 src]# cd !$
cd /usr/local/mysql
[root@hf-01 mysql]# 
  1. 进入到 /usr/local/mysql 目录下,首先 ls命令 去查看下目录中是否存在
[root@hf-01 mysql]# ls
bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files
[root@hf-01 mysql]# 
  1. 创建MySQL的用户,useradd mysql
[root@hf-01 mysql]# useradd mysql
[root@hf-01 mysql]# 
  1. 创建 /data/ 目录,若已存在,则可省略
[root@hf-01 mysql]# mkdir /data/
[root@hf-01 mysql]# 
  1. 使用./scripts/mysql_install_db --user=mysql --datadir=/data/mysql 初始化
[root@hf-01 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
[root@hf-01 mysql]# 
  1. 这时候会看到出现一个提示,缺少Dumper模块
    • 从字面意义上分析,它是说 Perl modules,(因为这属于一个Perl脚本),所以在初始化的时候,依赖于Perl
    • Perl、python和PHP三种比较流行的三种脚本语言
  2. 解决思路
  • 思路,在缺少模块,缺少包,那就去安装,在安装的不知道包和模块的名称,就去模糊搜索
    • 模糊搜索yum list |grep perl |grep -i dumper
      • -i 忽略大小写
[root@hf-01 mysql]# yum list |grep perl |grep -i dumper
perl-Data-Dumper.x86_64                    2.145-3.el7                 base     
perl-XML-Dumper.noarch                     0.81-17.el7                 base     
[root@hf-01 mysql]# 
  1. 会看到列出的一些包,只需安装perl-Data-Dumper包即可——>若是不知道装哪些包,可以所有的包都安装上
[root@hf-01 mysql]# yum install -y perl-Data-Dumper

  1. 然后再次初始化
[root@hf-01 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@hf-01 mysql]#
  1. 在初始化完成后,如何去判断初始化成功!两种方法:
    • 方法一:看安装过程中,是否有两个OK
    • 方法二:执行echo $?
      • 若是0 ,则表示运行成功
[root@hf-01 mysql]# echo $?
141
[root@hf-01 mysql]#
  1. 这时会看到执行失败,是因为缺少 libaio 这个包,只需要再去安装下,即可
[root@hf-01 mysql]# yum install -y libaio

  1. 这时,再去执行echo $? 就会返回结果为0 ,表示初始化成功
[root@hf-01 mysql]# echo $?
0
  1. 初始化完成,下面就是拷贝配置文件和启动脚本
    • 配置文件在support-files/my-default.cnf
    • mysql配置文件叫/my.cnf,并放在/etc目录下
      • 若想放在其他目录下,就需要在启动的时候做一个指定,不然就会默认去/etc/my.cnf
[root@hf-01 mysql]# ls support-files/my-default.cnf
support-files/my-default.cnf            //mysql的模板配置文件

[root@hf-01 mysql]# ls /etc/my.cnf
/etc/my.cnf            //mysql的配置文件就叫做my.cnf,而且固定放在 /etc下
[root@hf-01 mysql]# 
  1. 这里会看到centos7系统中,默认安装了mariadb-libs包,或者是之前安装包连带着安装的mariadb-libs包,所以在这里会生成/etc/my.cnf
[root@hf-01 mysql]# rpm -qf /etc/my.cnf        
mariadb-libs-5.5.52-1.el7.x86_64
[root@hf-01 mysql]#
  1. 若是直接使用自带的 /etc/my.cnf 文件,但需要修改其中的配置文件
  • 在 [mysqld] 中
    • 把datadir=/var/lib/mysql 改成 datadir=/data/mysql
    • 把socket=/var/lib/mysql/mysql.sock 改成 socket=/tmp/mysql.sock
  • 在 [mysqld_safe] 中
    • 在log-error行和pid-file行前面 加 # ,把它们注释掉
  • 在 !includedir /etc/my.cnf.d 也注释掉
  1. 拷贝文件到 /etc/init.d/mysqld 中
[root@hf-01 mysql]# cp support-files/mysql.server /etc/init.d/mysqld
  1. 自定义启动脚本
    • 第一步,先把脚本放到/etc/init.d/mysqld
    • 第二步,把 /etc/init.d/mysqld 文件做一个编辑
      • basedir=/usr/local/mysql //指定你的程序目录,放到/usr/local/mysql 下
      • datadir=/data/mysql //定义到/data/mysql
[root@hf-01 mysql]# vim /etc/init.d/mysqld        //编译配置文件

把 basedir=/usr/local/mysql        //指定你的程序目录,放到/usr/local/mysql 下
把 datadir=/data/mysql                 //定义到/data/mysql
然后保存退出
  1. 修改权限,755权限——>默认是755权限,修改权限命令 chmod
[root@hf-01 mysql]# ls -l /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10902 12月 13 06:23 /etc/init.d/mysqld
[root@hf-01 mysql]# 
  1. 若想开机启动,需要将它加入到系统服务列表中去
[root@hf-01 mysql]# chkconfig --add mysqld 
[root@hf-01 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@hf-01 mysql]# 
  • 这里会看到mysqld中的2 ,3 ,4,5 服务都是开放的,下次就直接开机启动了
  • 或者可以使用命令,将mysqld服务启动起来 /etc/init.d/mysqld start 或 service mysqld start
    • SUCCESS表示进程启动成功了
[root@hf-01 mysql]# service mysqld start
Starting MySQL.. SUCCESS! 
[root@hf-01 mysql]# ps aux |grep mysql        //查看进程
root      2643  0.0  0.1  11772  1572 pts/0    S    06:33   0:00 /bin/sh /u
mysql     2752  2.1 44.6 973552 451004 pts/0   Sl   06:33   0:01 /usr/localysql --log-error=/data/mysql/hf-01.err --pid-file=/data/mysql/hf-01.pid
root      2781  0.0  0.0 112672   984 pts/0    R+   06:35   0:00 grep --col
[root@hf-01 mysql]# netstat -lntp        //查看监听的端口,3306端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1430/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1192/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1430/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      2752/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1192/sshd           
[root@hf-01 mysql]# 

  1. 假如有一天,没有把启动的脚本放到/etc/init.d 下,或者根本没有这样的启动脚本去拷贝,可以使用以下方法去启动
启动方法:
[root@hf-01 mysql]# service mysqld stop    //首先先停掉mysqld服务
Shutting down MySQL.. SUCCESS! 
[root@hf-01 mysql]# !ps        //查看mysqld进程是否还在
ps aux |grep mysql
root      2814  0.0  0.0 112672   984 pts/0    R+   06:45   0:00 grep --color=auto mysql
[root@hf-01 mysql]# /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql &    //命令行的方式启动,先指定配置文件所在路径,然后指定user用户,指定datadir(这个datadir也可以在my.cnf 文件中去定义的),再加一个& 符号,丢到后台去
[1] 2910
[root@hf-01 mysql]# 171213 06:54:55 mysqld_safe Logging to '/data/mysql/hf-01.err'.
171213 06:54:55 mysqld_safe Starting mysqld daemon with databases from /data/mysql

[root@hf-01 mysql]# !ps        //查看进程是否启动成功
ps aux |grep mysql
root      2910  0.0  0.1 113268  1608 pts/0    S    06:54   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
mysql     3006 11.0 44.6 973552 451328 pts/0   Sl   06:54   0:01 /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/hf-01.err --pid-file=/data/mysql/hf-01.pid
root      3029  0.0  0.0 112672   984 pts/0    R+   06:55   0:00 grep --color=auto mysql
[root@hf-01 mysql]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1430/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1192/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1430/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      3006/mysqld         
tcp6       0      0 :::22                   :::*                    LISTEN      1192/sshd           
[root@hf-01 mysql]# 

  1. 关闭mysqld服务
  • 若是服务的形式,可以直接/etc/init.d/mysqld stop
  • 若是命令行形式的,killall mysqld
    • killall命令,还算一个比较安全杀进程的命令——>万不得已的情况下,再去使用 kill命令
    • 安装killall包——>yum install -y psmisc
[root@hf-01 mysql]# killall mysqld
[root@hf-01 mysql]# 171213 07:22:21 mysqld_safe mysqld from pid file /data/mysql/hf-01.pid ended

[1]+  完成                  /usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql
[root@hf-01 mysql]# !ps
ps aux |grep mysql
root      3075  0.0  0.0 112672   984 pts/0    R+   07:22   0:00 grep --color=auto mysql
[root@hf-01 mysql]# 
  • mysql常用的两种引擎
    • innodb引擎,比较大,和oracle类似
    • myisam引擎,存储空间、存储量都比较小

kill和killall区别

  • mysql在实时的读写数据,写的速度很快,有可能写入的数据保存在内存里(缓存中),如果这部分缓存并没有同步到磁盘里去,而直接去kill 掉,就意味着你的数据丢失,而使用killall 命令,则会先停止当前的写读操作,然后把没有完成写入到磁盘里的数据在慢慢写入到磁盘里去,直到写完之后才会把进程杀死。
    • 这就意味着如果将来有一天mysqld的进程始终杀不死,等待一分钟还是没有杀死,那说明你的数据量很大,它正在慢慢的写入到磁盘到磁盘里去,这个时候不要强制的使用 kill 9 杀进程,这样非常有可能丢数据,还会损坏你的表。

© 著作权归作者所有

运维小白
粉丝 29
博文 394
码字总数 505201
作品 0
无锡
运维
私信 提问
LAMP架构介绍以及MySQL安装

11月9日任务 11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装 11.1 、LAMP架构介绍 # Apache和PHP是一体的,必须在一台服务器上,但是MySQL可以单独存在一台服务器上,...

zgxlinux
2018/11/10
0
0
大数据实验室(大数据基础培训)——Kafka的安装、配置及基础使用

为某企业做的培训,完整文档见:http://gudaoxuri.github.io/bd-lab/ 11. Kafka 11.1. 环境准备 cd /opt/workspaces 创建Kafka数据目录 mkdir data/kafka 创建Kafka日志目录 mkdir logs/kaf...

孤岛旭日
2016/05/06
38
0
Linux学习-1109(LAMP-mysql安装)

11.1 LAMP架构介绍 11.2 MySQL、MariaDB介绍 11.3/11.4/11.5 MySQL安装 一、LAMP架构介绍 LAMP就是Linux+Apache(httpd)+MySQL+PHP ,简称LAMP。 Linux:操作系统,如centos、redhat、Ubuntu。...

wxy丶
2018/11/27
0
0
Java面试题之九 (转) 二

四十六、Math.round(11.5)等於多少? Math.round(-11.5)等於多少? 对于这个题,只要弄清楚Math提供的三个与取整相关的方法就OK了。 1.ceil,英文含义是天花板,该方法就表示向上取整,Math.ce...

凡尘网络
2015/12/20
91
0
Kurento应用开发指南(以Kurento 5.0为模板) 目录

Kurento是什么 3 Kurento简介 3 2.1 WebRTC媒体服务器 3 2.2 Kurento 媒体服务器 4 2.3 Kurento API, 客户端和协议 5 2.4 使用Kurento创建应用程序 7 Kurento Media Server的安装与卸载 8 3....

小马_wolf
2016/07/14
427
0

没有更多内容

加载失败,请刷新页面

加载更多

除了敲代码,程序员还需要哪些必备技能?

1、源码分析专题 详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。 帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其...

别打我会飞
22分钟前
2
0
Java集合框架——List接口

第三阶段 JAVA常见对象的学习 集合框架——List接口 按照集合框架的继承体系,我们先从Collection中的List接口开始学习 (一) 概述及功能(ArrayList演示) (1) 概述 List在Collection中充当着...

BWH_Steven
50分钟前
2
0
Lua Web快速开发指南(10) - 利用MQ实现异步任务、订阅/发布、消息队列

Lua Web快速开发指南(10) - 利用MQ实现异步任务、订阅/发布、消息队列 本章节我们将学习如何使用MQ库. MQ库简介 MQ库实现了各类消息代理中间件(Message Broker)的连接协议, 目前支持:redis、...

水果糖的小铺子
56分钟前
2
0
一致性专题之cpu缓存一致性(一)

只要涉及到缓存的业务场景就一定会出现数据一致性问题。对于该问题,从微观的角度来看cpu与内存之间建立了N级缓存来提高效率,从宏观的角度来看分布式存储使用数据副本机制来提高数据的安全性...

FAT_mt
今天
7
0
Qt那些事0.0.20

一个装逼失败的例子 今天原本是给别人介绍 QML 中 Behavior 的用法。毕竟自己在之前用过很多次,感觉已经算是熟练的地步,可以为人师了。于是乎自己写了个代码,还屁颠屁颠的把别人喊过来,指...

Ev4n
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部