CentOS7下源码安装MySQL 8.x

会选择使用源码安装MySQL,想必对MySQL及其他的安装方式已经有了一定的了解,这里就不对周边信息进行过多赘述了,直接开始吧。

编译MySQL比较消耗内存,如果机器内存较小,可能会在编译期间出现内存不足的异常。若没有设置swap分区的可以设置swap分区来解决,否则只能扩容内存了:

[root@txy-server ~]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
[root@txy-server ~]# mkswap /swapfile
[root@txy-server ~]# swapon /swapfile

1、安装编译时所需的依赖包

1.1、使用yum命令安装编译所依赖的包及工具:

[root@txy-server ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel libtirpc-devel.x86_64

由于编译MySQL时对gcc的版本要求是5.3以上,所以我们需要先升级一下gcc的版本,因为yum安装目前最新版本只到4.8.5。

升级gcc版本的方式主要有两种,一种是下载源码包进行编译安装,一种是使用yum安装devtoolset包,目前devtoolset包里的gcc版本为5.3.1。

而源码安装的方式比较灵活可以选择任意版本,但非常耗时。这里两种方式都会介绍,可以自行视情况选择。

1.1.1、使用yum安装devtoolset包,命令如下:

[root@txy-server ~]# yum install -y centos-release-scl scl-utils-build
[root@txy-server ~]# yum install -y devtoolset-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 devtoolset-4-gcc-gdb-plugin.x86_64

1.1.2、创建软件链接,覆盖/usr/bin下的gcc相关命令,因为编译MySQL时默认会去/usr/bin目录下找gcc相关的命令:

[root@txy-server ~]# ln -sf /opt/rh/devtoolset-4/root/usr/bin/* /usr/bin/

1.1.3、最后验证一下gcc、cc、c++等命令的版本是否为5.3.1:

[root@txy-server ~]# gcc -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
[root@txy-server ~]# cc -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
[root@txy-server ~]# c++ -v
...
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
  • Tips:建议使用这种方式进行升级,比较简单不容易踩坑

1.2.1、以下是源码安装的方式,首先下载GCC源码安装包并解压缩:

[root@txy-server ~]# cd /usr/local/src
[root@txy-server /usr/local/src]# wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
[root@txy-server /usr/local/src]# tar -xzvf gcc-9.1.0.tar.gz

1.2.2、进入解压后的目录,运行download_prerequisites脚本,该脚本会自动下载编译时所需要的依赖文件和库:

[root@txy-server /usr/local/src]# cd gcc-9.1.0
[root@txy-server /usr/local/src/gcc-9.1.0]# ./contrib/download_prerequisites

1.2.3、建立输出目录,将所有的中间文件都放到该目录下:

[root@txy-server /usr/local/src/gcc-9.1.0]# mkdir gcc-build-9.1.0

1.2.4、进入新建的目录,并完成编译配置:

[root@txy-server /usr/local/src/gcc-9.1.0]# cd gcc-build-9.1.0
[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

参数说明:

  • –enable-languages:让gcc支持哪些语言
  • –disable-multilib:不生成编译为其他平台可执行代码的交叉编译器
  • –disable-checking:生成的编译器在编译过程中不做额外检查,也可以使用–enable-checking=xxx来增加一些检查

1.2.5、接着就可以进行编译安装了:

[root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# make && make install
  • Tips:这一步耗时会比较久,大概1-2个小时

1.2.6、创建软件链接,覆盖/usr/bin下的gcc相关命令,因为编译MySQL时默认会去/usr/bin目录下找gcc相关的命令:

[root@txy-server ~]# ln -sf /usr/local/bin/* /usr/bin/

1.2.7、最后验证一下gcc版本是否为9.1.0,如下代表安装成功:

[root@txy-server ~]# gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 9.1.0 (GCC)
[root@txy-server ~]#

2、下载MySQL源码包解压并编译安装

2.1、进入MySQL官网下载地址:

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

2.2、复制源码包的下载链接:

image.png

2.3、到Linux上下载并解压源码包:

[root@txy-server ~]# cd /usr/local/src
[root@txy-server /usr/local/src]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.18.tar.gz
[root@txy-server /usr/local/src]# tar -zxvf mysql-boost-8.0.18.tar.gz

2.4、进入解压后的目录,参照如下命令步骤完成编译安装:

# 创建数据文件存放目录
[root@txy-server /usr/local/src]# mkdir -p /data/mysql
[root@txy-server /usr/local/src]# cd mysql-8.0.18/
# 新建目录,存放编译产生的中间文件。因为不允许在源码目录下进行编译
[root@txy-server /usr/local/src/mysql-8.0.18]# mkdir builder
[root@txy-server /usr/local/src/mysql-8.0.18]# cd builder/
[root@txy-server /usr/local/src/mysql-8.0.18/builder]# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
[root@txy-server /usr/local/src/mysql-8.0.18/builder]# make && make install
  • Tips:编译安装会比较耗时,大概1-2个小时

cmake3命令所使用的参数说明:

  • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
  • -DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
  • -DSYSCONFDIR=/etc :MySQL配置文件所在目录
  • -DMYSQL_USER=mysql:MySQL服务的用户名
  • -DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
  • -DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
  • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
  • -DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
  • -DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
  • -DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
  • -DWITH_READLINE=1:MySQL的readline library
  • -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
  • -DMYSQL_TCP_PORT=3306 :MySQL的监听端口
  • -DENABLED_LOCAL_INFILE=1:启用加载本地数据
  • -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
  • -DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
  • -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
  • -DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对
  • -DWITH_DEBUG=0:禁用调试模式
  • -DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
  • -DDOWNLOAD_BOOST=1:允许在线更新boost库
  • -DWITH_BOOST=../boost:指定boost安装路径

关于cmake3所支持的参数可以到官网文档进行查询:

https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

2.5、编译安装完成后,创建mysql用户及更改相应目录的属主:

[root@txy-server ~]# groupadd mysql
[root@txy-server ~]# useradd -M -g mysql -s /sbin/nologin mysql
[root@txy-server ~]# chown -R mysql:mysql /usr/local/mysql/
[root@txy-server ~]# chown -R mysql:mysql /data/mysql/

2.6、编辑配置文件:

[root@txy-server ~]# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/tmp/mysql.sock

[mysqld_safe]
log-error=/var/log/mysqld/mysqld.log
pid-file=/var/run/mysqld/mysql.pid

2.7、创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户:

[root@txy-server ~]# mkdir -p /var/log/mysqld /var/run/mysqld
[root@txy-server ~]# chown -R mysql:mysql /var/log/mysqld
[root@txy-server ~]# chown -R mysql:mysql /var/run/mysqld

2.8、配置环境变量,方便使用MySQL的命令:

[root@txy-server ~]# vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
[root@txy-server ~]# source /etc/profile
[root@txy-server ~]# mysql --version  # 验证配置是否成功
mysql  Ver 8.0.18 for Linux on x86_64 (Source distribution)
[root@txy-server ~]#

2.9、执行如下命令初始化数据库:

[root@txy-server ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

初始化成功后会生成root账户的默认密码,如下图所示:


image.png

将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码

2.10、将MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下:

[root@txy-server ~]# cp /usr/local/src/mysql-8.0.18/builder/scripts/mysqld.service /usr/lib/systemd/system/
[root@txy-server ~]# chown 775 /usr/lib/systemd/system/mysqld.service

2.11、使用systemctl命令启动MySQL服务:

[root@txy-server ~]# systemctl start mysqld

2.12、查看3306端口是否已正常监听:

[root@txy-server ~]# netstat -lntp |grep 3306
tcp6       0      0 :::33060                :::*                    LISTEN      27363/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      27363/mysqld
[root@txy-server ~]#

2.13、使用默认密码登录MySQL,并重置密码及开放远程登录:

[root@txy-server ~]# mysql -uroot -pmXyfy/g8\)aus
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';  # 重置密码
mysql> use mysql;
mysql> update user set host ='%' where user='root';  # 开放远程登录
mysql> FLUSH PRIVILEGES;  # 刷新修改

2.14、使用可视化工具进行远程连接,测试下是否能正常对MySQL进行访问:

image.png

end

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

推荐阅读更多精彩内容