源码编译安装MySQL8.0.20的详细教程

在上篇文章给大家介绍了:

MySQL8.0.20安装教程及其安装问题详细教程  https://www.jb51.net/article/186202.htm

mysql8.0.20下载安装及遇到的问题(图文详解)  https://www.jb51.net/article/186208.htm

CentOS7安装Mysql8.0.20步骤:

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html

1 概述

本文章主要讲述了如何从源码编译安装MySQL社区版8.0.20,首先会介绍一些编译安装的相关知识,然后开始编译安装

2 源码编译安装的相关知识

2.1 make与configure

make是一个编译的命令,会在当前的目录下寻找Makefile这个文件,Makefile文件记录了源代码如何编译的详细信息。而configure是由软件开发商编写的一个检测程序检测用户的开发环境,检测完毕后生成Makefile文件。通常,configure会检测如下内容:

  • 是否具有合适的编译器
  • 是否具有所需函数库以及其他依赖
  • 是否兼容本系统
  • 是否存在内核头文件

2.2 Tarball文件

Tarball文件其实就是将源代码以tar打后压缩的文件。通常使用gzip进行压缩,一般扩展名为.tar.gz或.tgz,不过由于bzip2以及xz等技术压缩效果比gzip好,因此文件名也会变成扩展名也会变成.tar.bz2或.tar.xz之类的。通常一个Tarball文件有:

  • 源码
  • 检测文件(configure/config)
  • 说明(README/INSTALL)

2.3 源码编译安装相关组件

2.3.1 编译器

需要有编译器才能进行编译操作,通常使用的是gcc。

2.3.2 make+autoconfig

以Tarball形式发布的软件,为了简化编译流程,通常需要make来根据目标文件文件的依赖性进行编译,但是由于make需要Makefile,因此需要autoconfig生成Makefile。

2.3.3 函数库

需要内核提供的库以及相关的include文件。

2.4 静态库与动态库

函数库分为动态库与静态库两种类型,绝大部分放在/lib与/lib64中。

2.4.1 静态库

扩展名为.a,编译时会直接整合到执行程序中,所以利用静态库生成的文件会比较大一些,编译后的可执行文件可以直接运行,无需依赖外部函数库。另外升级难度较大,因为是直接整合进程序中,升级了静态库的话需要重新编译。

2.4.2 动态库

扩展名为.so,在编译时不像静态库一样,动态库在程序中只有一个指针,当可执行程序需要用到函数库的功能时,才会读取函数库来使用,生成的可执行文件会比较小一点,但是不能独立执行编译出来的程序。另外升级比较方便,不需要重新编译,因为执行文件会直接指向新的函数库文件。

2.5 编译安装的一般步骤

  • (1)获取源码:一般使用wget或curl或从浏览器下载。
  • (2)查看帮助文件:解压后查看INSTALL或README等文件相关内容
  • (3)安装依赖:根据官网文档或上一步中得到的信息安装依赖
  • (4)生成Makefile:一般使用configure/config进行配置,检测操作环境,指定安装位置,开启/关闭对应的功能,指定相关库位置等,确定依赖关系等,一般需要使用–help获取选项帮助,指定对应选项后配置并生成Makefile
  • (5)编译:实际编译步骤,一个简单的make命令,实际包含了头文件预编译,预处理,编译与连接步骤
  • (6)安装:make install,这一步实际进行安装与操作系统连接两个步骤

注意,以上步骤都是有顺序的,而且前一个步骤执行失败则后一个步骤也不能执行,也就是说需要前一个步骤执行成功才能进行下一步的操作。完成以上六步就能编译安装了,一般需要进行一些后续处理,比如,添加可执行文件路径到PATH,添加头文件与库文件到/usr/include与/etc/ld.so.conf.d中,添加联机帮助文件到/etc/man_db.conf中。

2.6 编译安装前的心理准备

这里是最后的提示了,未安装之前还可以ctrl+w关闭本页面,避免无数的痛苦。
编译安装最常见的问题就是版本与依赖的问题,版本问题容易处理,可以通过包管理器进行升级或者手动升级,至于依赖问题,包管理器安装的话很容易,编译安装的话会非常头疼,因为不知道某个依赖下面还需要安装多少个依赖。
所以,需要准备充足的时间,还有充分的耐心,去解决无数的问题,才能成功进行编译安装MySQL与Workbench这种大型软件。
不废话了,开始吧。

3 安装MySQL

3.1 安装依赖

MySQL所需依赖如下:

  • cmake
  • make(推荐3.75以上)
  • 编译器(GCC5.3+或Clang4.0+或XCode9+或Developer Studio12.6+或Visual Studio2017)
  • SSL库(默认使用系统的OpenSSL)
  • Boost C++库,需要用来构建但不需要使用,无需安装,源码即可
  • ncurses库
  • bison2.1+
  • git

3.2 包管理器安装

笔者的Debian系,使用apt即可:

sudo apt-get install -y bison
 git hostname
libncurses-dev
libssl-dev make
openssl pkg-config
doxygen cmake make

RedHat8.x:

sudo yum install -y bison bzip2 git hostname ncurses-devel
openssl openssl-devel pkgconfig tar wget zlib-devel
doxygen diffutils rpcgen make libtirpc-devel cmake gcc

RedHat7.x:

sudo yum install -y bison bzip2 git hostname ncurses-devel
openssl openssl-devel
pkgconfig tar wget zlib-devel
doxygen cmake gcc

其他自行搜索。

3.2 编译安装

若不想用包管理器安装,可以使用编译安装的方式。
欢迎来折腾。

3.2.1 安装cmake

tar -zxvf cmake-3.17.2.tar.gz
cd cmake-3.17.2
./bootstrap --prefix=/usr/local/cmake
make clean
make -j 6 #6为CPU核数,自定义修改,若失败请使用make
make test
sudo make install

3.2.2 安装make

没有编译器的情况下无法编译安装,使用软件包安装即可,笔者的Debian系,直接使用apt:

sudo apt install make

3.2.3 安装gcc

tar -xvf gcc-9.3.0.tar.xz
cd gcc-9.3.0
./contrib/download_prerequisites
mkdir build
cd build
../configure --prefix=/usr/local/gcc -enable-checking=release -disable-multilib
make clean
make -j 6
make test
sudo make install
sudo ln -sv /usr/local/gcc/include /usr/include/gcc
#/etc/ld.so.conf.d/gcc.conf加入以下内容
/usr/local/gcc/lib
/usr/local/gcc/lib64

3.2.4 安装openssl

tar -zxvf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/ssl
#prefix为安装位置,默认/usr/local
#openssldir为配置文件位置,同时存放证书与密钥对
make clean
make -j 6
make test
sudo make install
sudo ln -sv /usr/local/openssl/include /usr/include/openssl
#/etc/ld.so.conf.d/openssl.conf加上以下内容
/usr/local/openssl/lib

3.2.5 下载boost

官网戳这里
需要的版本为1.70.0。目前最新的版本为1.73.0,理论上来说更新的版本应该可以,这里下载的是1.70.0。如果不手动下载boost库的话可以在使用cmake生成Makefile时设置DDOWNLOAD_BOOST为1进行下载。

下载后解压既可。

tar -xvf boost_1_70_0.tar.bz2

3.2.6 安装ncurses

tar -zxvf ncurses-6.2.tar.gz
cd ncurses-6.2
./configure --prefix=/usr/local/ncurses
make -j 6
sudo make install

sudo ln -sv /usr/local/ncurses/include /usr/include/ncurses
#/etc/ld.so.conf.d/ncurses.conf加入
/usr/local/ncurses/lib

3.2.7 安装bison

tar -xvf bison-3.4.tar.xz
cd bison-3.4
./configure --prefix=/usr/local/bison
make -j 6
sudo make install
#/etc/ld.so.conf.d/bison.conf加入
/usr/local/bison/lib

3.2.8 安装git

tar -xvf git-2.26.2.tar.xz
cd git-2.26.2
./configure --prefix=/usr/local/git \
--with-openssl=/usr/local/openssl \
--with-libpcre2=/usr/local/pcre2 \
--with-curl=/usr/local/curl \
--with-expat=/usr/local/expat \
--with-iconv=/usr/local/iconv \
--with-editor=/usr/bin/vim \
--with-zlib=/usr/local/zlib \
--with-tcltk=/usr/local/tcl
make all doc info
sudo make install install-doc install-html install-info

3.2.9 后续处理

修改PATH:

#在~/.bash_profile 或 ~/.bashrc加入
export PATH=$PATH:\
/usr/local/cmake/bin:\
/usr/local/gcc/bin:\
/usr/local/openssl/bin:\
/usr/local/bison/bin:\
/usr/local/ncurses/bin:\
/usr/local/git/bin:\

使动态库生效:

ldconfig

权限不足请加sudo。

3.3 下载MySQL社区版

官网这里。

这里不知道第一个与第二个有什么区别,因为笔者两个都试过都能编译安装成功。虽然上面写着第二个带Boost头,但是貌似没什么用。这里用的是第一个。
校验(可选):

md5sum mysql-boost-8.0.20.tar.gz

3.4 生成Makefile

sudo cmake .. \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #
-DENABLED_LOCAL_INFILE=ON \
-DWITH_SSL=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_TCP_PORT=3306 \
-DDOWNLOAD_BOOST=0 \
-DWITH_BOOST=~/Desktop/boost
  • DDEFAULT_CHARSET:指定默认字符集为utf8mb4,因为历史遗留问题,MySQL中的utf8不是真正的utf8,而是阉割版的,最长只有三个字节,当遇到四个字节的utf8编码时,会导致存储异常。从5.5.3开始,使用utf8mb4实现完整的utf8。
  • DDEFAULT_COLLATION:排序规则,默认为utf8mb4_0900_ai_ci,属于utf8mb4_unicode_ci的一种。0900指的是Unicode校对算法版本,ai是指口音不敏感(as表示敏感),ci指不区分大小写(cs表示区分)。utf8mb4_unicode_ci表示基于标准的的Unicode来排序和比较,能够在各种语言之间精确排序,而utf8mb4_general_ci遇到某些特殊的字符集时排序结果可能不一致,准确性较差,但是性能较好,比较和排序时候更快。
  • DENABLED_LOCAL_INFILE表示能否使用load data命令。
  • DWITH_SSL表示使用系统的SSL库,若不使用系统的请自定义路径。
  • DCMAKE_INSTALL_PREFIX:MySQL安装目录。
  • DMYSQL_DATADIR:MySQL数据目录,初始时为空。
  • DMYSQL_TCP_PORT:端口,默认3306。
  • DDOWNLOAD_BOOST:取值0或1,是否下载Boost库。
  • DWITH_BOOST:若不下载Boost库的话,是本地Boost库的位置,若下载Boost表示下载位置。

其他更多参数请使用

sudo cmake .. -LH

查看。

3.5 编译与安装

sudo make

sudo make -j n

笔者试过了make -j 6,失败,无奈换成了make。
make的速度和make -j还是很大差距的。
编译好之后,建议测试一下:

make test

然后安装:

sudo make install

3.6 后续配置

3.6.1 用户组与用户

新建用户组与用户,同时修改用户数据目录权限:

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo chown mysql:mysql /usr/local/mysql/data
sudo chmod 750 /usr/local/mysql/data

数据目录根据需要修改,若后面出现不可写错误请把权限改为777。

3.6.2 配置文件

配置文件为my.cnf,可以放在

/etc/
/etc/mysql/
安装目录/etc/
~/

下,读取顺序从上到下。笔者安装后默认在/etc/mysql/my.cnf,这个是全局配置,~/.my.cnf是用户特定配置,这里直接修改/etc/mysql/my.cnf:

[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

[mysqld]
port=3306
basedir=/usr/local/mysql/server
datadir=/usr/local/mysql/data
character-set-server=utf8mb4
[mysql]
default-character-set=utf8mb4
[client]
port=3306
default-character-set=utf8mb4

其中[mysqld]下面是新添加的字段,数据目录自行修改。
建议字符集改为utf8mb4,因为utf8在MySQL中指的是utf8mb3,支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会插入异常。三字节的utf8最大能编码的Unicode字符为0xffffff,也就是基本多文种平面,Emoji和很多不常用的汉字都不能存储。而utf8mb4是5.5.3之后才支持的,为了兼容性考虑应该统一使用utf8mb4。

3.7 初始化

修改环境变量:

#.bashrc或.bash_profile加上
export PATH=$PATH:/usr/local/mysql/server/bin

使用

mysqld --initialize --user=mysql

mysqld --initialize-insecure --user=mysql

然后开启ssl与rsa支持(可选):

mysql_ssl_rsa_setup

最后开启服务:

mysqld_safe --user=mysql &

3.8 修改密码

使用root登录,如果使用insecure初始化:

mysql -u --skip-password

使用initialize初始化:

mysql -u root -p

输入初始化出现的密码即可。
然后修改密码:

alter user root@localhost identified by 'xxx';

3.9 测试

使用自带的mysqlshow与mysqladmin:

mysqladmin -u root -p versionmysqlshow -u root -p

3.10 收尾工作

3.10.1 别名

alias md='mysqld -u mysql &'

这样输入md就可以启动MySQL服务了。

3.10.2 安装Mycli

Mycli是一个MySQL命令行客户端工具,具有自动补全和语法高亮的功能。
使用pip安装即可,python2请使用

pip install mycli

python3请使用

pip3 install mycli

找不到pip请安装:

sudo apt install python-pip#python2
sudo apt install python3-pip

然后使用mycli进入数据库:

mycli -u root

愉快地使用补全吧!

4 参考

1.Linux下安装mysql的方式(yum和源码编译两种方式)
2.utf8 与 utf8mb4,utf8mb4_unicode_ci 与 utf8mb4_general_ci
3.MySQL-官网安装文档

总结

到此这篇关于源码编译安装MySQL8.0.20的详细教程的文章就介绍到这了,更多相关源码编译安装MySQL8.0.20内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL8.0.20安装教程及其安装问题详细教程

    官网下载MySQL的安装包 1.下载链接如下: MySQL8.0.20版本 https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 其他版本:MySQL8.0.16版本 2.MySQL8.0.20版本压缩包解压后如下图所示: 添加并配置my.ini文件 在原解压根目录下添加my.ini文件: 新建文本文件,也就是记事本文件,并命名为my.ini (也就是拓展名为ini格式).如果更改不了拓展名,点击前往了解查看解决方法.

  • CentOS7版本安装Mysql8.0.20版本数据库的详细教程

    相关阅读: MySQL8.0.20安装教程及其安装问题详细教程  https://www.jb51.net/article/186202.htm mysql8.0.20下载安装及遇到的问题(图文详解)  https://www.jb51.net/article/186208.htm CentOS7安装Mysql8.0.20步骤: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 官网下载有时速度比较慢,直接点击链接也

  • mysql8.0.20下载安装及遇到的问题(图文详解)

    1.浏览器搜索mysql下载安装 地址:https://dev.mysql.com/downloads/mysql/ 2.登录或者不登录下载 3.下载的是一个压缩包,直接解压缩,无需安装 4.新建my.ini文件,内容如下 关于sql_mode,像下面这个报错,就是因为group by字段必须完全显示在查询列里,所以去掉这个模式,就不在报错了. Caused by: java.sql.SQLSyntaxErrorException: Expression #13 of SELECT list i

  • 源码编译安装MySQL8.0.20的详细教程

    在上篇文章给大家介绍了: MySQL8.0.20安装教程及其安装问题详细教程  https://www.jb51.net/article/186202.htm mysql8.0.20下载安装及遇到的问题(图文详解)  https://www.jb51.net/article/186208.htm CentOS7安装Mysql8.0.20步骤: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-20.html 1 概述 本文章主要讲述

  • Ubuntu 16.04源码编译安装PHP 5.6.29的教程

    1. 下载地址:http://www.php.net/downloads.php 2.解压 tar -zxvf PHP-5.6.29.tar.gz 3.配置 ./configure –prefix=/usr/local/php –with-apxs2=/usr/local/apache/bin/apxs 注意:这里的-with-apxs2=/usr/local/apache/bin/apxs选项,其中apxs是在安装Apache时产生的,路径根据实际情况设置.apxs是一个为Apache HTT

  • 阿里云centos7安装mysql8.0.22的详细教程

    1. 下载MySQL安装包 首先点击https://dev.mysql.com/downloads/repo/yum/ 找到Linux7的版本: 这里会自动下载最新的版本的mysql,我这里是mysql8.0.22 然后去拼接网址: http://dev.mysql.com/get/ + xxx.rpm 比如说我的是http://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm 所以命令: [root@hadoop ~]#

  • Mac系统下源码编译安装MySQL 5.7.17的教程

    1.下载并解压到:/Users/xiechunping/Softwares/mysql-5.7.17 下载地址:http://ftp.ntu.edu.tw/pub/MySQL/Downloads/MySQL-5.7/mysql-boost-5.7.17.tar.gz 2.进入mysql-5.7.17,执行cmake cd ../mysql-5.7.17 cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mys

  • Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)

    一.MySQL安装包下载 官网地址:https://dev.mysql.com/downloads/mysql/ 下载步骤: 过滤操作系统版本 选择归档安装包 下载后,上传并md5校验安装包是否与上图官方提供的值一致,确保传输过程安装包无损害 [root@MyDB1 ~]# cd /usr/local/software/ [root@MyDB1 software]# md5sum mysql-8.0.22-el7-x86_64.tar.gz 52e312605f66aaaa0efcd272b9f

  • CentOS8部署LNMP环境之编译安装mysql8.0.29的教程详解

    一.前提 由于我安装了几次,我就不再讲述报错了,有点打脑壳!!!提前把相关依赖和报错就地解决. 1.所需源码包 mysql-8.0.19.tar.gz boost_1_70_0.tar.gz //安装mysql-8所需要的boost版本 rpcsvc-proto-1.4.tar.gz //后面出错所需要的源码包 mysql-8.0.19下载地址:http://mirrors.sohu.com/mysql/ boost_1_70_0下载地址:https://dl.bintray.com/boost

  • Linux CentOS 7源码编译安装PostgreSQL9.5

    之前的博客记录了通过rpm包的形式安装PostgreSQL 9.3(Linux CentOS 7 安装PostgreSQL 9.3(发行版本) ),本篇blog将记录一下通过源码编译的形式安装PostgreSQL 9.5. 下载 在postgresql的官方即可找到源码文件目录,地址如下:https://www.postgresql.org/ftp/source/,在下载列表中根据需求选择版本,如下图: 进入子目录后,可以看到文件列表: 如上图,可以看到提供了两种压缩格式,此处我们选择postg

  • MySQL 5.7.13 源码编译安装配置方法图文教程

    安装环境:CentOS7 64位 MINI版 官网源码编译安装文档:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 一.系统安装条件 官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 1> cmake MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数.如:安装目录.数据存放目录.字符编码.排序规则等.

  • Linux下源码编译安装配置SVN服务器的步骤分享

    说明: SVN(subversion)的运行方式有两种: 一种是基于Apache的http.https网页访问形式: 还有一种是基于svnserve的独立服务器模式. SVN的数据存储方式也有两种:一种是在Berkeley DB数据库中存储数据:另一种是使用普通的文件FSFS存储数据. 由于Berkeley DB方式在使用中有可能锁住数据,一般建议使用FSFS方式更安全. 实现目的: 以svnserve的独立服务器模式,使用FSFS数据存储方式源码编译安装配置SVN服务器. 具体操作: 操作系统

  • Ubuntu 16.04源码编译安装Apache 2.4.25教程

    本文为大家介绍了Ubuntu 16.04源码编译安装Apache,供大家参考,具体内容如下 apache 安装指南:http://httpd.apache.org/docs/2.4/install.html 安装指南上面有详细的安装过程,这里我只说些注意事项: 1.编译安装apache有些依赖环境必须安装,不然后面编译会报找不到相应多文件: APR(Apache portable Run-time libraries,Apache可移植运行库)和APR-Util,apr介绍可以参见:http:/

随机推荐