您的位置:首页 > 数据库 > MySQL

mysql源码脚本安装

2017-08-21 15:48 260 查看
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安装出了一点问题,就傻眼了,不知道怎么解决,这样很杯具。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: