shell脚本及所需安装包下载地址:http://download.csdn.net/download/m0_37739193/9943346
执行脚本前准备工作:
1.将cmake-2.8.12.2.tar.gz和mysql-5.6.17.tar.gz上传到/tmp目录下
[root@localhost ~]# ls /tmp/
cmake-2.8.12.2.tar.gz mysql-5.6.17.tar.gz
2.在虚拟机设置中勾选“已连接”和选择相应的镜像
然后将mysql.sh上传到你的虚拟机执行sh mysql.sh命令
你可能会遇到这个报错:
[root@localhost ~]# sh mysql.sh
: command not found
: not foundv/cdrom
does not existint /mnt
: command not found
问题原因:DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。由于Windows和linux文件换行的不同,可能会导致Windows文件在linux中不可用,反过来也一样。
解决方法一:
1.首先用vi命令打开文件
[root@localhost test]# vi mysql.sh
2.在vi命令模式中使用:set ff命令
可以看到改文件的格式为
fileformat=dos
3.修改文件format为unix
使用vi/vim修改文件format
命令::set ff=unix
或者::set fileformat=unix
然后:wq保存退出就可以了
方法二:
[root@localhost ~]# dos2unix mysql.sh
dos2unix: converting file mysql.sh to UNIX format ...
如果没有(如Redhat5.5默认有而Redhat6.5则默认没有该命令)该命令的话用yum -y install dos2unix装一下
在上述准备工作完成后,我在RedHat5.5和RedHat6.5中直接运行mysql.sh即可。
但如果你是在Centos7.2中测试的话还需要再做两个步骤:
(1)将mysql.sh中的第九行改为baseurl=file:///mnt
经测试Redhat5.5为file:///mnt/Server,Redhat6.5为file:///mnt/Server或file:///mnt均可,Centos7.2的话为file:///mnt
(2)执行这条命令时报这个错,所以你在执行mysql.sh之前就把把这个问题解决了吧
[root@h81 scripts]# ./mysql_install_db --user=mysql --basedir=/app/mysql --datadir=/app/mysql/data
FATAL ERROR: please install the following Perl modules before executing ./mysql_install_db:
Data::Dumper
解决:
yum -y install autoconf //此包安装时会安装Data:Dumper模块
问题解决后执行sh mysql.sh命令后你就可以静静的等待了,可以去睡一觉,醒来之后mysql用源码安装的方式就给你安装好了,是不是很省心啊(我等了差不多三十多分钟吧)
脚本执行完后执行mysql -u root -p后输入你的密码mysql即可正常使用mysql了
mysql -udebian-sys-maint -p
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.17 |
+-----------+
1 row in set (0.00 sec)
补充:
将DOS格式文本文件转换成Unix格式,最简单的用法就是dos2unix直接跟上文件名。
格式:dos2unix file
如果一次转换多个文件,把这些文件名直接跟在dos2unix之后。(注:也可以加上-o参数,也可以不加,效果一样)
格式:dos2unix file1 file2 file3
格式:dos2unix -o file1 file2 file3
上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用-n参数。
格式:dos2unix -n oldfile newfile
如果要保持文件时间戳不变,加上-k参数。所以上面几条命令都是可以加上-k参数来保持文件时间戳的。
格式:dos2unix -k file
格式:dos2unix -k file1 file2 file3
格式:dos2unix -k -o file1 file2 file3
格式:dos2unix -k -n oldfile newfile
注:unix2dos命令的使用方式与dos2unix命令的类似。
如下,不加-k时候,因为文件内容被修改,所有modify time更新。使用-k则是保持时间属性不变
[root@localhost hui]# ls -l --full-time mysql.sh
-rw-r--r-- 1 root root 2241 2016-09-06 15:33:42.000000000 +0800 mysql.sh
[root@localhost hui]# dos2unix -k mysql.sh
dos2unix: converting file mysql.sh to UNIX format ...
[root@localhost hui]# ls -l --full-time mysql.sh
-rw-r--r-- 1 root root 2131 2016-09-06 15:33:42.000000000 +0800 mysql.sh
[root@localhost hui]# unix2dos mysql.sh
unix2dos: converting file mysql.sh to DOS format ...
[root@localhost hui]# ls -l --full-time mysql.sh
-rw-r--r-- 1 root root 2131 2017-01-19 21:25:26.000000000 +0800 mysql.sh
特别说明:unix2dos和dos2unix的互相转换
I. Windows中,文件行尾是以/r/t结束的,其ASCII值为 /r? = 0d /n = 0a
如下用hexdump –C查看文件的十六进制格式。/r/t的ASCII值为 /r? = 0d /n = 0a
[root@localhost hui]# hexdump -C mysql.sh
00000000 72 6d 20 2d 72 66 20 2f 65 74 63 2f 79 75 6d 2e |rm -rf /etc/yum.|
00000010 72 65 70 6f 73 2e 64 2f 2a 0d 0a 0d 0a 75 6d 6f |repos.d/*....umo|
II. 用cat –A显示文件的钟的特殊字符
/r 显示为^M
/n 显示为$
[root@localhost hui]# cat -A mysql.sh
rm -rf /etc/yum.repos.d/*^M$
^M$
III. 用dos2unix将此文件转换成linux的格式
我们可以看到,已将转换成功,将/r/n转换成/n
[root@localhost hui]# dos2unix mysql.sh
dos2unix: converting file mysql.sh to UNIX format ...
[root@localhost hui]# cat -A mysql.sh
rm -rf /etc/yum.repos.d/*$
$
[root@localhost hui]# hexdump -C mysql.sh
00000000 72 6d 20 2d 72 66 20 2f 65 74 63 2f 79 75 6d 2e |rm -rf /etc/yum.|
00000010 72 65 70 6f 73 2e 64 2f 2a 0a 0a 75 6d 6f 75 6e |repos.d/*..umoun|
大家可能有个疑问:MySQL也可以执行yum -y install mysql*(Redhat/Centos5.5和6.5用yum -y install mysql-server就可以,而Centos7.2还得参考这篇文章http://blog.csdn.net/u010246789/article/details/52382632,安装完还得用/bin/systemctl stop mysql.service命令启动)来安装的,且更快更方便啊,那用yum和源码安装mysql有啥区别的疑问?
下面是我从网上找的感觉回答这个问题回答比较好的:
跟做运维的朋友聊天,谈到了yum安装和源码安装哪个好的问题。真没想到,关于这个问题,分歧还挺大的。有的人认为,不用源码安装就不是好的运维,不是好的系统管理员。这帽子扣的有点大了。在此我想说一说我的看法,经常看我博客的,也许知道,前期我写关于服务器的文章,基本上都是源码安装的,后来基本上是用yum安装的,除非yum源里面没有,我才会源码安装。在我看来,yum安装和源码安装,基本上没区别,最终还是生成系统所需求的文件,有什么区别呢?
一,yum安装和源码安装,方式的不同
1,yum安装是将yum源中的rpm包下载到本地,安装这个rpm包。这个rpm包是别人编译安装好的二进制包。这种方式与其说是安装不如说是,更新来的更确切一点。
2,源码安装,下载是源码包,要进行编译和安装,编译过程,可以进行参数设定。
二,yum安装和源码安装,优缺点分析
1,yum安装的优都很清楚,安装东西,方便快捷,特别是不用考虑包依赖。yum安装的缺点,人为无法干预,不能按需安装。源里面有什么就安装什么,安装的版本也比较低。
2,源码安装的优缺点
源码安装的优点,编译安装过程,可以设定参数,按照需求,进行安装,并且安装的版本,可以自己选择,灵活性比较大。
源码安装的缺点,由于安装包过新或者是其他问题,导致依赖的包没有,或者版本过低。这个时候就要解决包的依赖问题,linux系统中有的包,一个依赖一个,可能装一个小东西,就要解决一堆包的依赖问题,花很多时间解决包的依赖问题,得不尝失。源码安装的多了,不敢升级系统,因为一升级系统就可能会导致以前手动装的东西,不能用。
很多做运维的,都认为,源码安装比yum安装的性能要好,根据参数选择安装,肯定比yum装了一大堆要好。这样认为的运维,我只能说,他不懂配置。根本不了解自已装的东西。在我看来,同一版yum安装和源码安装完全是一样的。
以apache为例吧,这个东西,非常常见的,用做web最广泛的工具之一,源码安装,./configure时候,可以添加很多参数,来实现订制。yum安装也可以,yum安装装了很多apache的模块,有的模块根本用不到,无故浪费系统资源和影响性能。但是我们可以配置httpd.conf啊,不需求的模块,我们可以不LoadModule啊,通过修改配置文件,完全可以实现根源码安装一样的效果。不排除少数软件,安装后,不能修改配置的情况,也就是说安装的时候是多少东西,就是多少东西,没有配置文件可以配置。
我觉得,对于刚接触linux的人来说,源码安装很有必要,这样你可以知道自己在做什么,安装过程中,肯定会遇到很多很多的问题,遇到问题,解决问题。这样才会成长。不要一直都用yum装,如果yum安装出了一点问题,就傻眼了,不知道怎么解决,这样很杯具。