美文网首页
mysql编译安装全过程

mysql编译安装全过程

作者: ermaot | 来源:发表于2020-03-09 20:45 被阅读0次

    本文参考了MySQL代码学习第一——MySQL8.0.15源码编译

    一、查看mysql源码结构

    二、编译

    参看mysql源码结构介绍

    mysql编译分为两个步骤,一个是编译环境准备,一个是使用cmake编译。编译MySQL对gcc有版本要求,在MySQL8.0.15这个版本上,需要gcc版本大于5.5。所以事先安装gcc的环境。

    1、编译环境准备

    安装gcc5.5

    1. 下载gcc5.5包。可以在gnu官网上找合适的镜像,我这边是US, San Jose:镜像比较快,大约2分钟下载完毕
    2. 安装编译软件包
    # yum install  mpfr-devel  libmpc-devel  glibc   libmpc
    因为编译过程中出现过configure: error: error verifying int64_t uses long long
    说明缺少g++(gcc-c++),安装
    # yum install gcc-c++
    
    1. 增加swap 分区<p>
      因为出现过make[3]: *** [s-attrtab] 已杀死 说明内存不足(用来自己玩儿的云主机,配置低,⊙﹏⊙b汗),可以用增加swap分区解决
    创建一个swap文件
    # dd if=/dev/zero of=/swapfile bs=4096 count=512k
    然后
    # mkswap    /swapfile 
    正在设置交换空间版本 1,大小 = 2097148 KiB
    无标签,UUID=0f4d30f8-79a5-4a27-9e3f-1649a3335db3
    # swapon /swapfile
    查看
    # free -m
                  total        used        free      shared  buff/cache   available
    Mem:            992         616          78          10         296         200
    Swap:          2047           0        2047
    
    1. 开始编译gcc5.5(花费2个半小时)
    # ./configure --prefix=/usr/local/gcc-5.5.0 --disable-multilib
    # make
    # make install
    
    

    MySQL8编译

    1. 安装cmake
    # yum install cmake
    
    1. 建个编译用的目录,注意不要建在源码包解压后的目录下,否则cmake会报错
    # mkdir mysql_debug
    # cd mysql_debug/
    
    1. 安装openssl 和ncurses
    # yum install openssl-devel
    # yum install ncurses-devel
    
    1. 设置环境变量,以便在编译的时候使用GCC5.5.0及其lib
    # CC=/usr/local/gcc-5.5.0/bin/gcc
    # CXX=/usr/local/gcc-5.5.0/bin/g++
    # export CC CXX
    # export LD_LIBRARY_PATH=/usr/local/gcc-5.5.0/lib64
    
    1. 用cmake进行编译配置(花费1个小时)

    ../mysql-8.0.17/ 是源码解压后的目录;

    -DCMAKE_BUILD_TYPE=Debug 是指明编译出一个用来debug(跟踪代码)的版本

    -DWITH_BOOST=../mysql-8.0.17/boost/boost_1_69_0/ 指明boost头文件路径

    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql80 指明将来make install的时候,把MySQL软件安装在哪里,不设置的话,缺省是/usr/local/mysql;

    cmake3 ../mysql-8.0.17/ -DCMAKE_BUILD_TYPE=Debug -DWITH_BOOST=../mysql-8.0.17/boost/boost_1_69_0/ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql8017
    

    其他编译选项,参考文章《mysql编译选项说明》
    执行完毕cmake后,执行make和make install

    三、初始化与启动

    1. 查看编译结果
    # ls /usr/local/mysql8017/ -l
    total 816
    drwxr-xr-x  2 root root   4096 Aug  8 13:50 bin
    drwxr-xr-x  2 root root   4096 Aug  8 13:50 docs
    drwxr-xr-x  3 root root   4096 Aug  8 13:50 include
    drwxr-xr-x  5 root root   4096 Aug  8 13:50 lib
    -rw-r--r--  1 root root 336955 Jun 25 18:23 LICENSE
    -rw-r--r--  1 root root 101805 Jun 25 18:23 LICENSE.router
    -rw-r--r--  1 root root 336955 Jun 25 18:23 LICENSE-test
    drwxr-xr-x  4 root root   4096 Aug  8 13:50 man
    drwxr-xr-x 10 root root   4096 Aug  8 13:50 mysql-test
    -rw-r--r--  1 root root    687 Jun 25 18:23 README
    -rw-r--r--  1 root root    700 Jun 25 18:23 README.router
    -rw-r--r--  1 root root    687 Jun 25 18:23 README-test
    drwxrwxr-x  2 root root   4096 Aug  8 13:50 run
    drwxr-xr-x 28 root root   4096 Aug  8 13:50 share
    drwxr-xr-x  2 root root   4096 Aug  8 13:50 support-files
    drwxr-xr-x  3 root root   4096 Aug  8 13:50 var
    
    1. 创建用户以及必要的文件夹(主要是data文件夹)
    # groupadd mysql
    # useradd -g mysql mysql
    # mkdir /data/mysql8017 -p
    # mkdir /data/mysql8017/datadir
    # chown mysql:mysql /data/mysql8015/datadir/
    
    1. 建立自己的配置文件
      这里是非常简单的配置,如果需要优化过的配置文件,可以参看mysql优化配置参数
    # cat /data/mysql8017/my.cnf
    [mysqld]
    user             = mysql
    basedir          = /usr/local/mysql8017
    datadir          = /data/mysql8017/datadir
    socket           = /data/mysql8017/datadir/mysql.sock
    mysqlx_socket    = /data/mysql8017/datadir/mysqlx.sock
    log-error        = /data/mysql8017/datadir/mysqlerror.log
    
    1. 初始化和启动
    • 初始化
    # export LD_LIBRARY_PATH=/usr/local/gcc-5.5.0/lib64 
    # bin/mysqld --defaults-file=/data/mysql8015/my.cnf --initialize --user=mysql
    # ls /data/mysql8017/datadir/ -l
    total 154692
    -rw-r----- 1 mysql mysql       56 Aug  8 13:59 auto.cnf
    -rw------- 1 mysql mysql     1676 Aug  8 13:59 ca-key.pem
    -rw-r--r-- 1 mysql mysql     1112 Aug  8 13:59 ca.pem
    -rw-r--r-- 1 mysql mysql     1112 Aug  8 13:59 client-cert.pem
    -rw------- 1 mysql mysql     1676 Aug  8 13:59 client-key.pem
    -rw-r----- 1 mysql mysql     5332 Aug  8 13:59 ib_buffer_pool
    -rw-r----- 1 mysql mysql 12582912 Aug  8 13:59 ibdata1
    -rw-r----- 1 mysql mysql 50331648 Aug  8 13:59 ib_logfile0
    -rw-r----- 1 mysql mysql 50331648 Aug  8 13:59 ib_logfile1
    drwxr-x--- 2 mysql mysql     4096 Aug  8 13:59 #innodb_temp
    drwxr-x--- 2 mysql mysql     4096 Aug  8 13:59 mysql
    -rw-r----- 1 mysql mysql      442 Aug  8 13:59 mysqlerror.log
    -rw-r----- 1 mysql mysql 24117248 Aug  8 13:59 mysql.ibd
    drwxr-x--- 2 mysql mysql     4096 Aug  8 13:59 performance_schema
    -rw------- 1 mysql mysql     1676 Aug  8 13:59 private_key.pem
    -rw-r--r-- 1 mysql mysql      452 Aug  8 13:59 public_key.pem
    -rw-r--r-- 1 mysql mysql     1112 Aug  8 13:59 server-cert.pem
    -rw------- 1 mysql mysql     1680 Aug  8 13:59 server-key.pem
    drwxr-x--- 2 mysql mysql     4096 Aug  8 13:59 sys
    -rw-r----- 1 mysql mysql 10485760 Aug  8 13:59 undo_001
    -rw-r----- 1 mysql mysql 10485760 Aug  8 13:59 undo_002
    
    • 启动
    # ./mysqld_safe --defaults-file=/data/mysql8017/my.cnf --user=mysql 
    
    • 使用客户端并修改密码
    # mysql -S /data/mysql8017/datadir/mysql.sock   
    mysql>  alter user root@localhost identified by '';
    Query OK, 0 rows affected (0.02 sec)
    

    相关文章

      网友评论

          本文标题:mysql编译安装全过程

          本文链接:https://www.haomeiwen.com/subject/hssmdhtx.html