zoukankan      html  css  js  c++  java
  • 源码编译安装MySQL8.0.20

    1 概述

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

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

    2.1 makeconfigure

    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中。

    3 编译安装

    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
    

    其他请自行搜索。

    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_BOOST1进行下载。

    在这里插入图片描述

    下载后解压即可。

    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
    • 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_PREFIXMySQL安装目录
    • DMYSQL_DATADIRMySQL数据目录,初始时为空
    • DMYSQL_TCP_PORT:端口,默认3306
    • DDOWNLOAD_BOOST:取值01,是否下载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,因为utf8MySQL中指的是utf8mb3,支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会插入异常。三字节的utf8最大能编码的Unicode字符为0xffffff,也就是基本多文种平面,Emoji和很多不常用的汉字都不能存储。而utf8mb45.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 测试

    使用自带的mysqlshowmysqladmin

    mysqladmin -u root -p version
    mysqlshow -u root -p
    

    在这里插入图片描述

    3.10 收尾工作

    3.10.1 别名

    alias md='mysqld -u mysql &'
    

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

    3.10.2 安装mycli

    mycli是一个MySQL命令行客户端工具,具有自动补全和语法高亮的功能。

    使用pip安装即可:

    pip install mycli
    

    找不到pip请安装:

    sudo apt install python3-pip
    

    然后使用mycli进入数据库:

    mycli -u root
    

    愉快地使用补全吧!

    4 参考

  • 相关阅读:
    关于在MAC上进行 LARAVEL 环境 Homestead 安装过程记录
    js 贷款计算器
    js 实现阶乘
    js 两点间距离函数
    composer Your requirements could not be resolved to an installable set of packages
    vue 项目优化记录 持续更新...
    vue 项目打包
    vue 真机调试页面出现空白
    vue 真机调试
    谈谈-Android状态栏的编辑
  • 原文地址:https://www.cnblogs.com/6b7b5fc3/p/12838250.html
Copyright © 2011-2022 走看看