CentOS7下MySQL5.7的三种安装方式详解

操作系统环境:
CentOS 7.4最小化安装

[root@node3 src]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@node3 ~]# uname -r
3.10.0-693.5.2.el7.x86_64
[root@node3 ~]#

安装版本为:MySQL 5.7.20

一、编译安装MySQL5.7

1、下载源码包

[root@node3 ~]# cd /usr/local/src/
[root@node3 src]# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql[-boost](http://www.jianshu.com/p/60be30105240)-5.7.20.tar.gz

或者将已经下载好的源码包上传至/usr/local/src目录。因为使用CMake编译Mysql需要boost,所以需要下载mysql-boost-5.7.20.tar.gz包。

[root@node3 src]# tar xf mysql-boost -5.7.20.tar.gz
[root@node3 src]# ll mysql-5.7.20
total 268
drwxr-xr-x2 7161 314154096 Sep 13 23:56BUILD
drwxr-xr-x6 7161 314154096 Sep 13 23:56client
drwxr-xr-x4 7161 314154096 Sep 13 23:56cmake
-rw-r--r--1 7161 31415 26727 Sep 13 23:48 CMakeLists.txt
drwxr-xr-x3 7161 3141521 Sep 13 23:56cmd-line-utils
-rw-r--r--1 7161 31415 13832 Sep 13 23:48 config.h.cmake
-rw-r--r--1 7161 31415 33704 Sep 13 23:48 configure.cmake
-rw-r--r--1 7161 31415 17987 Sep 13 23:48 COPYING
drwxr-xr-x2 7161 31415293 Sep 13 23:56dbug
drwxr-xr-x2 7161 3141580 Sep 13 23:56Docs
-rw-r--r--1 7161 31415 66241 Sep 13 23:48 Doxyfile-perfschema
drwxr-xr-x6 7161 31415309 Sep 13 23:56extra
drwxr-xr-x5 7161 314154096 Sep 13 23:56include
-rw-r--r--1 7161 31415333 Sep 13 23:48INSTALL
drwxr-xr-x5 7161 31415135 Sep 13 23:56 libbinlogevents
drwxr-xr-x3 7161 3141539 Sep 13 23:56libbinlogstandalone
drwxr-xr-x7 7161 314154096 Sep 13 23:56libevent
drwxr-xr-x4 7161 31415297 Sep 13 23:56libmysql
drwxr-xr-x3 7161 31415204 Sep 13 23:56libmysqld
drwxr-xr-x2 7161 314154096 Sep 13 23:56libservices
drwxr-xr-x2 7161 314154096 Sep 13 23:56man
drwxr-xr-x 10 7161 31415303 Sep 13 23:56 mysql-test
drwxr-xr-x2 7161 314154096 Sep 13 23:56mysys
drwxr-xr-x2 7161 31415321 Sep 13 23:56mysys_ssl
drwxr-xr-x 10 7161 31415131 Sep 13 23:56 packaging
drwxr-xr-x 18 7161 314154096 Sep 13 23:56 plugin
drwxr-xr-x4 7161 3141536 Sep 13 23:56rapid
-rw-r--r--1 7161 314152478 Sep 13 23:48README
drwxr-xr-x2 7161 314154096 Sep 13 23:56regex
drwxr-xr-x3 7161 314154096 Sep 13 23:56scripts
drwxr-xr-x7 7161 31415 20480 Sep 13 23:56 sql
drwxr-xr-x2 7161 31415146 Sep 13 23:56sql-common
drwxr-xr-x 14 7161 31415186 Sep 13 23:56 storage
drwxr-xr-x2 7161 314154096 Sep 13 23:56strings
drwxr-xr-x4 7161 31415241 Sep 13 23:56support-files
drwxr-xr-x2 7161 3141598 Sep 13 23:56testclients
drwxr-xr-x5 7161 3141570 Sep 13 23:56unittest
-rw-r--r--1 7161 3141588 Sep 13 23:48VERSION
drwxr-xr-x3 7161 31415298 Sep 13 23:56vio
drwxr-xr-x2 7161 3141532 Sep 13 23:56win
drwxr-xr-x2 7161 314154096 Sep 13 23:56zlib

2、安装cmake编译工具

[root@node3 src]# yum install cmakecmake-gui –y

3、安装bison

[root@node3 src]# yum install bison –y

4、安装libaio-devel

[root@node3 src]# yum install libaio-devel –y

5、安装gcc gcc-c++

[root@node3 debug]# yum install -y gccgcc-c++

6、创建mysql用户

[root@node3 data_3306]# groupadd mysql
[root@node3 data_3306]# useradd -r -g mysql-s /bin/false mysql

7、创建编译目录

在编译目录中编译,可以使MySQL源码目录不受影响。

[root@node3 src]# cd mysql-5.7.20
[root@node3 mysql-5.7.20]# mkdir debug
[root@node3 mysql-5.7.20]# cd debug/

8、使用cmake配置编译环境

[root@node3 debug]#[cmake ..-DBUILD_CONFIG=mysql_release-DINSTALL_LAYOUT=STANDALONE-DCMAKE_BUILD_TYPE=RelWithDebInfo-DENABLE_DTRACE=OFF-DWITH_EMBEDDED_SERVER=OFF -DWITH_INNODB_MEMCACHED=ON -DWITH_SSL=bundled-DWITH_ZLIB=system -DWITH_PAM=ON -](http://www.jianshu.com/p/60be30105240)[DCMAKE_INSTALL_PREFIX=/var/mysql](http://www.jianshu.com/p/60be30105240)-DINSTALL_PLUGINDIR="/var/mysql/lib/plugin" -DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci -DWITH_EDITLINE=bundled
-DFEATURE_SET=community -DCOMPILATION_COMMENT="MySQL Server (GPL)"
-DWITH_DEBUG=OFF -DWITH_BOOST=../boost/boost_1_59_0

如果执行完之后,看到下面两行信息,说明配置完成:
-- Configuring done
-- Generating done
此时,在当前目录下生成了Makefile文件,这就是上面CMake配置时生成的,有了Makefile,就可以通过make开始编译源码了。

9、编译mysql

直接在当前目录下执行如下命令:

[root@node3 ~]# make -j 24

后面的参数–j 24是设置了使用24个线程来编译,可以加快编译过程。前提是你服务器的配置非常好了。否则还是直接使用make为好。
看到如下信息说明编译完成:


image.png

10、安装Mysql
编译完成生,执行下面的命令安装MySQL

[root@node3 ~]# make install

因为在执行CMake时,指定了参数DCMAKE_INSTALL_PREFIX=/var/mysql,所以安装后,所有关于MySQL需要的内容都会安装在该目录下面。

[root@node3 debug]# ll /var/mysql/
total 60
drwxr-xr-x2 root root4096 Dec 10 22:29 bin
-rw-r--r--1 root root 17987 Sep 13 23:48 COPYING
-rw-r--r--1 root root 17987 Sep 13 23:48 COPYING-test
drwxr-xr-x2 root root55 Dec 10 22:28docs
drwxr-xr-x3 root root4096 Dec 10 22:28include
drwxr-xr-x4 root root172 Dec 10 22:29 lib
drwxr-xr-x4 root root30 Dec 10 22:29 man
drwxr-xr-x 10 root root289 Dec 10 22:29 mysql-test
-rw-r--r--1 root root2478 Sep 13 23:48README
-rw-r--r--1 root root2478 Sep 13 23:48README-test
drwxr-xr-x 28 root root4096 Dec 10 22:29 share
drwxr-xr-x2 root root90 Dec 10 22:29support-files

11、安装MySQL库
编译完成后,接着就创建一个新的数据库,对于MySQL5.7,安装方法与之前的版本有所不同,MySQL5.7更简单了,可以直接使用mysqld来安装,要准备一个配置文件,名字默认为my.cnf,

[root@node3 debug]# mkdir data_3306
[root@node3 data_3306]# cat /etc/my.cnf
[mysqld]
port=3306
datadir=/usr/local/mysql/data_3306
log_error=/usr/local/mysql/data_3306/error.log
basedir=/usr/local/mysql [root@node3data_3306]# /usr/local/mysql/bin/mysqld --default-file=/etc/my.cnf --initialize--user=mysql

执行之后,在目录/usr/local/mysql/data_3306下:

[root@node3 mysql]# ll ./data_3306/
total 110632
-rw-r----- 1 mysql mysql56 Dec 11 08:31 auto.cnf
-rw-r----- 1 mysql mysql802 Dec 11 08:31 error.log
-rw-r----- 1 mysql mysql419 Dec 11 08:31 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Dec 1108:31 ibdata1
-rw-r----- 1 mysql mysql 50331648 Dec 1108:31 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Dec 1108:31 ib_logfile1
drwxr-x--- 2 mysql mysql4096 Dec 11 08:31 mysql
drwxr-x--- 2 mysql mysql8192 Dec 11 08:31 performance_schema
drwxr-x--- 2 mysql mysql8192 Dec 11 08:31 sys
[root@node3 mysql]#

12、启动MySQL

[root@node3 mysql]# /usr/local/mysql/bin/mysqld--user=mysql &

查看进程:


image.png

我们看到mysql服务已经启动
启动完成之后,我们登录,测试一下:

[root@node3 ~]# /usr/local/mysql/bin/mysql-uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO)

报错了,这是因为MySQL5.7调整了案例策略,新安装数据库之后,默认root密码不是空的了。在启动时随机生成了一个密码,我们可以在error.log里找到。


image.png

再次登录后,我们发现不能进行任何操作,提示我们要先修改密码:


image.png

我们必须通过Alter User语句修改密码:
mysql>[alter user](http://www.jianshu.com/p/60be30105240)

'root'@'localhost' identified by "Cflp#?1312";

退出后,重新登录,一切OK了。


image.png

我们也可以在初始化的时候使用参数设置root为空密码:--initialize-insecure。

13、配置多实例

新建新实例数据目录data_3307及配置文件my-3307.cnf:

[root@node3 ~]# cd /usr/local/mysql/

[root@node3 mysql]# pwd

/usr/local/mysql

[root@node3 mysql]# mkdir data_3307
[root@node3 mysql]# cat /etc/my-3307.cnf
[[mysqld]](http://www.jianshu.com/p/60be30105240)
port=3307
datadir=/usr/local/mysql/data_3307
log_error=/usr/local/mysql/data_3307/error.log
basedir=/usr/local/mysql

创建3307数据库:

[root@node3 mysql]#/usr/local/mysql/bin/mysqld --defaults-file=/etc/my-3307.cnf--initialize-insecure --user=mysql

启动3307数据库服务:

[root@node3 mysql]#/usr/local/mysql/bin/mysqld --defaults-file=/etc/my-3307.cnf --user=mysql--socket=/tmp/mysql-3307.sock &

登录数据库:

[root@node3 mysql]#/usr/local/mysql/bin/mysql -h127.0.0.1 -P3308 -p
Enter password:
Welcome to the MySQL monitor.Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 MySQL Server (GPL)
Copyright (c) 2000, 2017, Oracle and/or itsaffiliates. All rights reserved.
Oracle is a registered trademark of OracleCorporation and/or its
affiliates. Other names may be trademarksof their respective
owners.
Type 'help;' or '\h' for help. Type '\c' toclear the current input statement.
mysql>

这次我们直接登录了,因为我们在初始化数据库的时候用户了:--initialize-insecure参数。
二、二进制方式安装MySQL5.7
1、获取二进制安装包
下载二进制安装包mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz,并上传至/usr/local/src目录
2、创建用户

[root@node3 src]# groupadd mysql
[root@node3 src]# useradd -r -g mysql -s/bin/false mysql

3、安装依赖

[root@node3 src]# yum install libaio –y

4、安装

[root@node3 src]# tar xfmysql-5.7.20-linux-glibc2.12-x86_64.tar.gz
[root@node3 src]# mvmysql-5.7.20-linux-glibc2.12-x86_64 /usr/local/
[root@node3 src]# cd ..
[root@node3 local]# ln -s/usr/local/mysql-5.7.20-linux-glibc2.12-x86_64/ /usr/local/mysql
[root@node3 local]# cd mysql
[root@node3 mysql]# ll
total 36
drwxr-xr-x2 root root4096 Dec 11 20:56bin
-rw-r--r--1 7161 31415 17987 Sep 13 23:48 COPYING
drwxr-xr-x2 root root55 Dec 11 20:56docs
drwxr-xr-x3 root root4096 Dec 11 20:56include
drwxr-xr-x5 root root229 Dec 11 20:56lib
drwxr-xr-x4 root root30 Dec 11 20:56man
-rw-r--r--1 7161 314152478 Sep 13 23:48README
drwxr-xr-x 28 root root4096 Dec 11 20:56 share
drwxr-xr-x2 root root90 Dec 11 20:56support-files

5、初始化MySQL数据库

[root@node3 mysql]# mkdir data_3306
[root@node3 mysql]# vim /etc/my.cnf使用下面的内容
[mysqld]
port=3306
datadir=/usr/local/mysql/data_3306
log_error=/usr/local/mysql/data_3306/error.log
basedir=/usr/local/mysql
[root@node3 mysql]#/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize--user=mysql

6、启动MySQL

[root@node3 mysql]#/usr/local/mysql/bin/mysqld --user=mysql &

查看进程:


image.png

我们看到mysql服务已经启动
启动完成之后,我们登录,测试一下:

[root@node3 ~]# /usr/local/mysql/bin/mysql-uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO)

报错了,这是因为MySQL5.7调整了案例策略,新安装数据库之后,默认root密码不是空的了。在启动时随机生成了一个密码,我们可以在error.log里找到。

image.png

再次登录后,我们发现不能进行任何操作,提示我们要先修改密码:
image.png

我们必须通过Alter User语句修改密码:
mysql> alter user 'root'@'localhost'identified by "Cflp#?1312";
退出后,重新登录,一切OK了。
image.png

我们也可以在初始化的时候使用参数设置root为空密码:--initialize-insecure。
三、YUM方式安装MySQL5.7
我们使用清华源来安装:https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
1、添加YUM仓库

[root@node3 ~]# rpm -ivhhttps://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/mysql57-community-release-el7-10.noarch.rpm
Retrieving https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/mysql57-community-release-el7-10.noarch.rpm
warning: /var/tmp/rpm-tmp.CQVpW4: Header V3DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...#################################[100%]
Updating / installing...
1:mysql57-community-release-el7-10 #################################[100%]
[root@node3 ~]# ll /etc/yum.repos.d/
total 44
-rw-r--r--. 1 root root 1664 Aug 30 23:53CentOS-Base.repo
-rw-r--r--. 1 root root 1309 Aug 30 23:53CentOS-CR.repo
-rw-r--r--. 1 root root649 Aug 30 23:53 CentOS-Debuginfo.repo
-rw-r--r--. 1 root root314 Aug 30 23:53 CentOS-fasttrack.repo
-rw-r--r--. 1 root root630 Aug 30 23:53 CentOS-Media.repo
-rw-r--r--. 1 root root 1331 Aug 30 23:53CentOS-Sources.repo
-rw-r--r--. 1 root root 3830 Aug 30 23:53CentOS-Vault.repo
-rw-r--r--. 1 root root951 Oct3 01:44 epel.repo
-rw-r--r--. 1 root root 1050 Oct3 01:44 epel-testing.repo
-rw-r--r--1 root root 1627 Apr52017 mysql-community.repo
-rw-r--r--1 root root 1663 Apr52017 mysql-community-source.repo
[root@node3 ~]#

2、配置源:
默认情况下:我们刚安装的仓库还是指向官方的源,所以我们需要重新配置:
主要配置三个部分:

image.png

将上面的地址替换为:
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-connectors-community-el7/
image.png

将上面的地址替换为:
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-tools-community-el7/
image.png

将上面的地址替换为:
https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql57-community-el7/
3、安装

[root@node3 ~]# yum install mysqlmysql-server mysql-devel –y

4、启动

[root@node3 system]# systemctl start mysqld

5、登录:

[root@node3 ~]# /usr/local/mysql/bin/mysql-uroot -p
Enter password:
ERROR 1045 (28000): Access denied for user'root'@'localhost' (using password: NO)

报错了,这是因为MySQL5.7调整了案例策略,新安装数据库之后,默认root密码不是空的了。在启动时随机生成了一个密码,我们可以在error.log里找到。


image.png

再次登录后,我们发现不能进行任何操作,提示我们要先修改密码:


image.png

我们必须通过Alter User语句修改密码:
mysql> alter user 'root'@'localhost'identified by "Cflp#?1312";

退出后,重新登录,一切OK了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容