Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

0    47    1

👉 本文共约9351个字,系统预计阅读时间或需36分钟。

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,\~O(∩_∩)O\~:

① MySQL的二进制安装过程(重点)

② MySQL多实例管理(mysqld_multi)

③ MySQL的源码编译安装过程

④ Linux的逻辑卷的使用

⑤ 文件的MD5值

⑥ 访问MySQL的几种客户端工具(Navicat和MySQLWorkbench)

⑦ 修改MySQL的密码

⑧ 设置MySQL的远程访问

⑨ 设置MySQL的开机启动以及多实例的开机启动

⑩ RPM、二进制和源码编译的优缺点

本文简介

自从去年3月份开始写书到现在,基本上大部分内容都写完了。一个字,累!三个字,真心累!我也因此错过了很多的东西,当然也收获了很多,一切都随缘吧。现在来说说博客吧,虽然我的博客在这段时间更新比较频繁,但是大多内容都不是来自我的原创,基本都是整理自网络。可能有的朋友就会骂小麦苗了,抄袭抄袭,我不反驳,因为这的确是抄袭。为啥小麦苗要这么做,可能基于这么几个原因吧。第一,干货类的文章,本来原创的内容就少,网上的文章也大多是一个抄一个的,很多内容,原创作者已经很难找到了。第二,个别文章并不是很完善,如果不整理在一块,若下次碰到相同的内容,还是得网上再天翻地覆的搜一遍,太浪费时间了。第三,这些非原创的文章,不仅仅是给网友做参考,更重要的是,小麦苗自己也参考。毕竟人的记忆力是有限的,小麦苗也经常搜索自己的文章,所以,这并不可耻。第四,有的文章写得很好,但是里边有个别地方写得不严谨,或者写得有错误,这个时候,小麦苗整理到自己博客的时候就可以顺便修改过来。说再多,有的网友觉得,这都是借口,好吧。抄袭就是抄袭,再多借口也改变不了抄袭的本质。小麦苗不再多说了,只想说一句,不喜勿喷。

从今天开始,小麦苗会准备OCM和MySQL的学习。所以,今天就先把MySQL的各个版本安装一下吧。要学习MySQL,估计5.5、5.6和5.7版本的都需要安装。不过,相比Oracle而言,MySQL还是更好安装一点。

废话已经说了很多了,下面开始安装吧。

Linux下各种安装方法比较

在Windows下可以使用NOINSTALL包和图形化包来安装,在Linux下可以使用如下3种方式来安装:

RPM(Redhat Package Manage)二进制(Binary Package)源码(Source Package)
优点安装简单,适合初学者学习使用安装简单;可以安装到任何路径下,灵活性好;一台服务器可以安装多个MySQL在实际安装的操作系统进行可根据需要定制编译,最灵活;性能最好;一台服务器可以安装多个MySQL
缺点需要单独下载客户端和服务器;安装路径不灵活,默认路径不能修改,一台服务器只能安装一个MySQL已经经过编译,性能不如源码编译的好;不能灵活定制编译参数安装过程较复杂;编译时间长
文件布局/usr/bin:客户端程序和脚本 /usr/sbin:mysqld服务器 /var/lib/mysql:日志文件,数据库 /usr/share/doc/packages:文档 /usr/include/mysql:包含(头)文件 /usr/lib/mysql:库文件 /usr/share/mysql:错误消息和字符集文件 /usr/share/sql-bench:基准程序bin:客户端程序和mysqld服务器 data:日志文件,数据库 docs:文档,ChangeLog include:包含(头)文件 lib:库 scripts:mysql_install_db用来初始化系统数据库 share/mysql:错误消息文件 sql-bench:基准程序bin:客户端程序和脚本 include/mysql:包含(头)文件 info:Info格式的文档 lib/mysql:库文件 libexec:mysqld服务器 share/mysql:错误消息文件 sql-bench:基准程序和crash-me测试 var:数据库和日志文件
主要安装过程在大多数情况下,下载MySQL-server和MySQL-client就可以了,安装方法如下: rpm -ivh MySQL-server* MySQL-client*1.添加用户 groupadd mysql useradd -g mysql mysql 2.安装 tar -xzvf mysql-VERSION-OS.tar.gz -C /mysql/ ln -s MySQL-VERSION-OS mysql或用mv命令 3.初始化,MySQL 5.7之后用mysqld --initialize scripts/mysql_install_db 4.启动数据库并修改密码等 mysqld_safe & set password=password('lhr');除了第二步的安装过程外,其它步骤和二进制基本一样(MySQL 5.7开始使用cmake): gunzip \< mysql-VERSION.tar.gz | tar -xvf - cd mysql-VERSION ./configure --prefix=/usr/local/mysql make && make install
安装包下载选项Red Hat Enterprise Linux / Oracle LinuxLinux - GenericSource Code

rpm的安装方式请参考:

http://blog.itpub.net/26736162/viewspace-1349705/

http://blog.itpub.net/26736162/viewspace-1349787/

官网中相应地有以上三种方式对应的下载链接,其中源码安装,对应"Source Code";.tar.gz对应"Linux - Generic",.rpm则对应于"Red Hat Enterprise Linux / Oracle Linux",如下图所示,

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

注意事项

  1. 目录大小。MySQL 5.7的二进制安装后大约3G,所以可以分配5G空间;而5.5和5.6版本的二进制包安装可以分配2G左右。
  2. MySQL 5.7的源码包需要分配10G的空间。cmake最低需要2.8.2版本。
  3. 下载和上传后需要校验md5值,防止上传的文件不完整。
  4. 源码编译安装比较费时费力。

MySQL下载

在官网:http://dev.mysql.com/downloads/mysql/中,选择以下版本的MySQL下载

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

注意:MD5: dbe7e5e820377c29d8681005065e5728,下载完成后需要校验。

感觉MySQL的安装包越来越大了,不过相比Oracle而言,就小的多了。小麦苗已经将安装文件放到云盘了,参考:http://blog.itpub.net/26736162/viewspace-1624453/

注意:不要下载rpm类型的包,安装路径不灵活,默认路径不能修改,一台服务器只能MySQL安装一个 MySQL。下图下载后均是rpm包:

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

历史MySQL版本下载

地址:https://downloads.mysql.com/archives/community/,最早版本只能看到5.0.15

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

MySQL 5.7安装

下载

在官网:http://dev.mysql.com/downloads/mysql/中,选择以下版本的MySQL下载

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

注意:MD5: dbe7e5e820377c29d8681005065e5728,下载完成后需要校验。

OS路径设置

我们约定:

项目source db
db 类型MySQL 5.7.19
db version5.7.19
db 存储Linux 文件系统
OS版本及kernel版本RHEL 6.5
OS主机名LHRDB
OS IP地址192.168.59.159
安装文件下载目录/tmp/mysql5719
MySQL目录安装位置/var/lib/mysql57/mysql5719
数据库保存位置/var/lib/mysql57/mysql5719/data
日志保存位置/var/lib/mysql57/mysql5719/log
配置文件地址/etc/my.cnf

需要注意的是,安装文件解压后大小大约为2.6G,比MySQL 5.6大多了,我记得5.6版本解压后还不到1G。所以,这里安装目录给5G大小。

下面开始准备OS。使用以前就安装好的OS,文件系统采用逻辑卷的管理方式,如下所示:

OS设置

上传文件并校验MD5值

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

和官网的MD5保持一致,说明安装文件的下载和上传过程没有问题:

Compressed TAR Archive5.7.19611.0MDownload
(mysql-5.7.19-linux-glibc2.12-x86_64.tar.gz)MD5: dbe7e5e820377c29d8681005065e5728 | Signature

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

安装

重命名安装后的文件夹

也可以使用ln连接:

新建数据和日志文件目录

用户和组设置

groupadd mysql ## 添加一个mysql组

useradd -r -g mysql mysql ## 添加一个用户

useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql #新建msyql用户禁止登录shell

说明本身就有mysql用户和组。

改变目录属有者

初始化MySQL

注意:MySQL 5.7.6之后的版本初始化数据库不再使用mysql_install_db,但是在MySQL 5.7.19里依然保留着这个文件。

官网:https://dev.mysql.com/doc/refman/5.7/en/mysql-install-db.html

mysql_install_db is deprecated as of MySQL 5.7.6 because its functionality has been integrated into mysqld, the MySQL server. To initialize a MySQL installation, invoke mysqld with the --initialize or --initialize-insecure option. For more information, see Section 2.10.1.1, “Initializing the Data Directory Manually Using mysqld”. mysql_install_db will be removed in a future MySQL release.

本人提供Oracle、MySQL、PG等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

这里生成的临时密码为:k;A3Dktywkyj

该过程会在data目录下生成默认数据库:

[root@LHRDB mysql5719]# cd data

[root@LHRDB data]# ll

total 110620

-rw-r-----. 1 mysql mysql 56 Aug 23 13:45 auto.cnf

-rw-r-----. 1 mysql mysql 420 Aug 23 13:46 ib_buffer_pool

-rw-r-----. 1 mysql mysql 12582912 Aug 23 13:46 ibdata1

-rw-r-----. 1 mysql mysql 50331648 Aug 23 13:46 ib_logfile0

-rw-r-----. 1 mysql mysql 50331648 Aug 23 13:45 ib_logfile1

drwxr-x---. 2 mysql mysql 4096 Aug 23 13:45 mysql

drwxr-x---. 2 mysql mysql 4096 Aug 23 13:45 performance_schema

drwxr-x---. 2 mysql mysql 12288 Aug 23 13:46 sys

[root@LHRDB data]# du -sh .

122M .

生成秘钥

创建SSL和RSA文件,关于这部分更多请参考:https://dev.mysql.com/doc/refman/5.7/en/mysql-ssl-rsa-setup.html也可以不执行这个步骤。

配置/etc/my.cnf

生产库上根据需要配置更多参数:

[root@LHRDB support-files]# more /etc/my.cnf

[client]

port=3306

socket=/var/lib/mysql57/mysql.sock

[mysqld]

basedir=/var/lib/mysql57/mysql5719

datadir=/var/lib/mysql57/mysql5719/data

socket=/var/lib/mysql57/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/lib/mysql57/mysql5719/log/mysqld.log

pid-file=/var/lib/mysql57/mysql5719/data/mysqld.pid

配置开机启动文件

注意:这里的MySQL服务为mysql57

启动MySQL

或者:

配置环境变量

编辑文件/etc/profile,在最后添加如下的内容:

让环境变量生效:source /etc/profile

登录MySQL并修改密码

修改密码也可以用:update mysql.user set authentication_string=password('lhr') where user='root';

设置远程登录

Windows远程登录

在Windows下远程登录:

可能会出现下面的错误:

D:\Users\xiaomaimiao>mysql -uroot -plhr -h192.168.59.159

Warning: Using a password on the command line interface can be insecure.

ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.59.159' (10060)

原因:主机192.168.59.159上的防火墙未关闭

解决办法:关闭防火墙,以下2个命令都需要执行:

chkconfig iptables off ---永久

service iptables stop ---临时

客户端工具登录

Navicat for MySQL

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

MySQLWorkbench

MySQL官方提供的工具,还是比较实用的:

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

该工具比较强大,有很多的实用功能:

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

MySQL 5.6安装

下载

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

OS路径设置

安装MySQL 5.6

rpm的安装方式请参考:

http://blog.itpub.net/26736162/viewspace-1349705/

http://blog.itpub.net/26736162/viewspace-1349787/

初始化

配置参数文件并启动MySQL

修改密码

MySQL 5.6的二进制安装默认密码为空。

set password=password('lhr');

设置远程登录

远程登录

MySQL 5.5安装

下载

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

OS路径设置

安装MySQL 5.5

初始化

配置参数文件并启动MySQL

修改密码

MySQL 5.5的二进制安装默认密码为空。

set password=password('lhr');

设置远程登录

远程登录

配置多版本、多实例开机自启动

配置/etc/my.cnf

配置开机启动

注意:这里的MySQL服务为mysqld_multi

编辑文件:/etc/init.d/mysqld_multi,修改如下3行的参数值:

由于采用了mysqld_multi来统一管理MySQL的实例,所以,去掉mysql 5.7的开机启动。

chkconfig mysql57 off

重启机器,试试效果:

重启之后:

mysqld_multi命令

启动全部实例:mysqld_multi start

查看全部实例状态:mysqld_multi report

启动单个实例:mysqld_multi start 3306

停止单个实例:mysqld_multi stop 3306

查看单个实例状态:mysqld_multi report 3306

官网地址:https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html

源码编译安装MySQL 5.7

源码编译安装的更多内容:http://blog.itpub.net/26736162/viewspace-2144212/

下载源码包

地址:https://dev.mysql.com/downloads/mysql/

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

说明:这里有两个包,在5.7以后,必须要有boost这个包

增加用户

其中-r表示用户是系统用户,不可登录系统。

创建要安装的目录

上传并解压

Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装

修改目录的权限:

安装编译环境所需要的包和一些依赖包

配置本地YUM源

安装依赖包

注意:这里的cmake最低需要2.8.2版本的,不然会报错,先接着往下做吧。

执行编译命令

升级cmake的版本

cmake每个参数的介绍参考:http://blog.itpub.net/26736162/viewspace-2144212/

下载高版本cmake,http://www.cmake.org/cmake/resources/software.html,解压缩cmake-3.9.1.tar.gz,解压后执行“./bootstrap && make && make install”,如下:

重新开一个shell并继续编译:

成功。

编译安装

该过程最慢。。。。。虚拟机约40分钟。。。。

用了大概7.2G,太费空间了。最后的make和make install大概用了40分钟,太费时间了。。。。。

初始化MySQL

注意:MySQL 5.7.6之后的版本初始化数据库不再使用mysql_install_db

这里生成的临时密码为:N9eYPaqv4q!X

配置/etc/my.cnf

修改文件/etc/my.cnf,加入以下内容:

启动MySQL

登录MySQL并修改密码

修改密码也可以用:update mysql.user set authentication_string=password('lhr') where user='root';

设置远程登录

Windows远程登录

在Windows下远程登录:

错误解决

ABORT: Can't find command 'my_print_defaults'.

解决:

编辑文件:/etc/init.d/mysqld_multi,添加:. /etc/profile,或者在文件/etc/init.d/mysqld_multi中加入下面的变量:

执行cmake编译时报错

解决办法: