暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

redhat 6.8采用source code源码安装mysql 8.0.18操作指南

lovedb 2019-12-03
436

前言

      mysql有多种安装方式,源码安装也是其中一种。通过这种方式,可以极大定制一些mysql的功能,包括:存储引擎的启用和禁用,某些功能的启用及禁用;某些变量的启用及禁用;通过源码安装可以用gdb进行调试分析mysql源码,进一步掌握mysql内部运行机制及原理。



联系方式

  • 微信公众号


  • 微信



培训课件

(收费20元已共享到百度云盘便于同学们获取)




目录

  • 相关阅读

  • mysql 8.0.18源码安装介质

  • mysql 8.0.18源码安装2种类型

  • mysql 8.0.18源码安装前提条件

  • 编译安装mysql 8.0.18源码

  • 初始化mysql 8.0.18数据库

  • 启动mysql 8.0.18数据库

  • 配置mysql 8.0.18自动重启

  • 登陆mysql 8.0.18


相关阅读


mysql 8.0.18源码安装介质

    https://github.com/mysql/mysql-server/releases/tag/mysql-8.0.18
    或者
    https://dev.mysql.com/downloads/mysql/



    mysql 8.0.18源码安装2种类型

    本文采用标准源码安装,开发树源码安装和它整体流程差不多。后续会有专文。


    mysql 8.0.18源码安装前提条件


    上传mysql 8.0.18源码安装介质

      [root@mysql8018 mysql8018_dir]# pwd
      /mysql8018_dir
      [root@mysql8018 mysql8018_dir]# ll mysql-8.0.18.tar.gz
      -rw-r--r--. 1 root root 197457483 122 11:33 mysql-8.0.18.tar.gz


      升级redhat 6.8 cmake 2.8到cmake 3.9

        redhat 6.8升级默认cmake 2.8到cmake 3.9
        http://blog.itpub.net/9240380/viewspace-2666666/


        升级redhat 6.8 boost 1.41到boost 1.70

          https://www.boost.org/users/history/version_1_70_0.html


          编译安装mysql 8.0.18源码

          • 删除操作系统默认安装的mysql 5.1相关软件包

            [root@mysql8018 ~]# rpm -qa|grep -i --color mysql
            qt-mysql-4.6.2-28.el6_5.x86_64
            perl-DBD-MySQL-4.013-3.el6.x86_64
            mysql-devel-5.1.73-7.el6.x86_64
            mysql-libs-5.1.73-7.el6.x86_64
            mysql-server-5.1.73-7.el6.x86_64


            [root@mysql8018 ~]# rpm -qa|grep -i --color mysql*|xargs rpm -e --nodeps


            [root@mysql8018 ~]# rpm -qa|grep -i --color mysql
            [root@mysql8018 ~]#


            [root@mysql8018 ~]# userdel mysql


            • 创建mysql组及用户

              [root@mysql8018 ~]# groupadd mysql
              [root@mysql8018 ~]# useradd -r -g mysql -s bin/false mysql


              • 解压mysql 8.0.18安装介质

                [root@mysql8018 mysql8018_dir]# tar -zxvf mysql-8.0.18.tar.gz 





                [root@mysql8018 mysql8018_dir]# ll
                总用量 192836
                drwxr-xr-x. 32 7161 31415 4096 9月 20 16:58 mysql-8.0.18
                -rw-r--r--. 1 root root 197457483 12月 2 11:33 mysql-8.0.18.tar.gz


                • 创建mysql 8.0.18 build目录

                  [root@mysql8018 mysql8018_dir]# cd mysql-8.0.18
                  [root@mysql8018 mysql-8.0.18]# ll
                  总用量 772
                  drwxr-xr-x. 7 root root 4096 9月 20 16:58 client
                  drwxr-xr-x. 4 root root 4096 9月 20 16:58 cmake



                  drwxr-xr-x. 2 root root 4096 9月 20 16:58 win
                  [root@mysql8018 mysql-8.0.18]#


                  [root@mysql8018 mysql-8.0.18]# mkdir compile_mysql_dir


                  • 执行cmake编译mysql 8.0.18 源码

                      显式指向boost 1.70,否则可能会报错

                    [root@mysql8018 ~]# export CC=/usr/bin/gcc
                    [root@mysql8018 ~]# export CXX=/usr/bin/g++




                    [root@mysql8018 compile_mysql_dir]# cmake .. -DDOWNLOAD_BOOST=1 -DWITH_DEBUG=1 -DWITH_UNIT_TESTS=off -DWITH_BOOST=/usr/share/boost-1.70.0


                      如未显式指定boost可能报错信息

                      CMake Error in extra/protobuf/protobuf-3.6.1/cmake/CMakeLists.txt:
                      Target "libprotobuf-lite" requires the language dialect "CXX14" , but CMake
                      does not know the compile flags to use to enable it.



                      • 执行make

                        [root@mysql8018 compile_mysql_dir]# make


                        [ 26%] Linking CXX executable ../runtime_output_directory/uca9dump
                        [ 26%] Built target uca9dump
                        [ 26%] Generating uca900_zh_tbls.cc, uca900_ja_tbls.cc
                        ../runtime_output_directory/uca9dump: usr/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ../runtime_output_directory/uca9dump)
                        make[2]: *** [strings/uca900_zh_tbls.cc] 错误 1
                        make[1]: *** [strings/CMakeFiles/strings_objlib.dir/all] 错误 2
                        make: *** [all] 错误 2
                        [root@mysql8018 compile_mysql_dir]#




                        查阅资料 https://blog.csdn.net/u012811841/article/details/77854581
                        可见glibc 3.4
                        [root@mysql8018 compile_mysql_dir]# strings usr/lib64/libstdc++.so.6|grep -i --color glibc
                        GLIBCXX_3.4
                        GLIBCXX_3.4.1
                        GLIBCXX_3.4.2
                        GLIBCXX_3.4.3
                        GLIBCXX_3.4.4
                        GLIBCXX_3.4.5
                        GLIBCXX_3.4.6
                        GLIBCXX_3.4.7
                        GLIBCXX_3.4.8
                        GLIBCXX_3.4.9
                        GLIBCXX_3.4.10
                        GLIBCXX_3.4.11
                        GLIBCXX_3.4.12
                        GLIBCXX_3.4.13
                        GLIBC_2.2.5
                        GLIBC_2.3
                        GLIBC_2.4
                        GLIBC_2.3.2
                        GLIBCXX_FORCE_NEW
                        GLIBCXX_DEBUG_MESSAGE_LENGTH
                        [root@mysql8018 compile_mysql_dir]#


                        可见cxxabi 1.3.3
                        [root@mysql8018 compile_mysql_dir]# strings usr/lib64/libstdc++.so.6|grep -i --color CXXABI_1
                        CXXABI_1.3
                        CXXABI_1.3.1
                        CXXABI_1.3.2
                        CXXABI_1.3.3
                        [root@mysql8018 compile_mysql_dir]#


                        查阅当前操作系统的相关libstdc++文件
                        [root@mysql8018 compile_mysql_dir]# find -name libstdc++*|grep -i --color libstdc++*
                        /usr/local/gcc-5.3.0/lib64/libstdc++fs.la
                        /usr/local/gcc-5.3.0/lib64/libstdc++.so.6
                        /usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21-gdb.py
                        /usr/local/gcc-5.3.0/lib64/libstdc++.la
                        /usr/local/gcc-5.3.0/lib64/libstdc++fs.a
                        /usr/local/gcc-5.3.0/lib64/libstdc++.a
                        /usr/local/gcc-5.3.0/lib64/libstdc++.so
                        /usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21
                        /usr/local/gcc-5.3.0/share/locale/fr/LC_MESSAGES/libstdc++.mo
                        /usr/local/gcc-5.3.0/share/locale/de/LC_MESSAGES/libstdc++.mo
                        /usr/lib64/libstdc++.so.6.0.13
                        /usr/lib64/libstdc++.so.6
                        /usr/lib64/libstdc++.so.5
                        /usr/lib64/libstdc++.so.5.0.7


                        可见gcc新版本的文件是包括上述未找到的 CXXABI_1.3.9 文件
                        [root@mysql8018 compile_mysql_dir]# strings usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21|grep CXXABI_1
                        CXXABI_1.3
                        CXXABI_1.3.1
                        CXXABI_1.3.2
                        CXXABI_1.3.3
                        CXXABI_1.3.4
                        CXXABI_1.3.5
                        CXXABI_1.3.6
                        CXXABI_1.3.7
                        CXXABI_1.3.8
                        CXXABI_1.3.9
                        [root@mysql8018 compile_mysql_dir]#








                        上述问题解决
                        [root@mysql8018 compile_mysql_dir]# ll usr/lib64/libstdc++.so.6*
                        lrwxrwxrwx. 1 root root 19 12月 2 10:45 usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
                        -rwxr-xr-x. 1 root root 987096 12月 16 2015 usr/lib64/libstdc++.so.6.0.13




                        [root@mysql8018 compile_mysql_dir]# rm -rf usr/lib64/libstdc++.so.6




                        [root@mysql8018 compile_mysql_dir]# ln -s usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21 usr/lib64/libstdc++.so.6
                        [root@mysql8018 compile_mysql_dir]#




                        问题解决
                        [root@mysql8018 compile_mysql_dir]# strings usr/lib64/libstdc++.so.6|grep -i --color CXXABI_1
                        CXXABI_1.3
                        CXXABI_1.3.1
                        CXXABI_1.3.2
                        CXXABI_1.3.3
                        CXXABI_1.3.4
                        CXXABI_1.3.5
                        CXXABI_1.3.6
                        CXXABI_1.3.7
                        CXXABI_1.3.8
                        CXXABI_1.3.9
                        [root@mysql8018 compile_mysql_dir]#


                        #重新执行make
                        [root@mysql8018 compile_mysql_dir]# make

                        [100%] Built target mysqlrouter_keyring
                        Scanning dependencies of target mysqlrouter
                        [100%] Building CXX object router/src/router/src/CMakeFiles/mysqlrouter.dir/main.cc.o
                        [100%] Linking CXX executable ../../../../runtime_output_directory/mysqlrouter
                        [100%] Built target mysqlrouter


                        • 执行make install

                          [root@mysql8018 compile_mysql_dir]# make install

                          -- Installing: usr/local/mysql/man/man1/mysqladmin.1
                          -- Installing: usr/local/mysql/man/man1/mysqlbinlog.1
                          -- Installing: usr/local/mysql/man/man1/mysqlcheck.1
                          -- Installing: usr/local/mysql/man/man1/mysqld_multi.1
                          -- Installing: usr/local/mysql/man/man1/mysqld_safe.1
                          -- Installing: usr/local/mysql/man/man1/mysqldump.1
                          -- Installing: usr/local/mysql/man/man1/mysqldumpslow.1
                          -- Installing: usr/local/mysql/man/man1/mysqlimport.1
                          -- Installing: usr/local/mysql/man/man1/mysqlman.1
                          -- Installing: usr/local/mysql/man/man1/mysqlpump.1
                          -- Installing: usr/local/mysql/man/man1/mysqlshow.1
                          -- Installing: usr/local/mysql/man/man1/mysqlslap.1
                          -- Installing: usr/local/mysql/man/man1/perror.1
                          -- Installing: usr/local/mysql/man/man1/zlib_decompress.1
                          -- Installing: usr/local/mysql/man/man8/mysqld.8
                          -- Installing: usr/local/mysql/man/man1/mysqlrouter.1
                          -- Installing: usr/local/mysql/man/man1/mysqlrouter_passwd.1
                          -- Installing: usr/local/mysql/man/man1/mysqlrouter_plugin_info.1


                          • 验证mysql 8.0.18源码安装

                            [root@mysql8018 compile_mysql_dir]# ll /usr/local/mysql
                            总用量 956
                            drwxr-xr-x. 2 root root 4096 12月 3 13:18 bin
                            drwxr-xr-x. 2 root root 4096 12月 3 13:18 docs
                            drwxr-xr-x. 3 root root 4096 12月 3 13:18 include
                            drwxr-xr-x. 6 root root 4096 12月 3 13:18 lib
                            -rw-r--r--. 1 root root 408918 9月 20 16:30 LICENSE
                            -rw-r--r--. 1 root root 102977 9月 20 16:30 LICENSE.router
                            -rw-r--r--. 1 root root 408918 9月 20 16:30 LICENSE-test
                            drwxr-xr-x. 4 root root 4096 12月 3 13:18 man
                            drwxr-xr-x. 10 root root 4096 12月 3 13:18 mysql-test
                            -rw-r--r--. 1 root root 687 9月 20 16:30 README
                            -rw-r--r--. 1 root root 700 9月 20 16:30 README.router
                            -rw-r--r--. 1 root root 687 9月 20 16:30 README-test
                            drwxrwxr-x. 2 root root 4096 12月 3 13:18 run
                            drwxr-xr-x. 28 root root 4096 12月 3 13:18 share
                            drwxr-xr-x. 2 root root 4096 12月 3 13:18 support-files
                            drwxr-xr-x. 3 root root 4096 12月 3 13:18 var


                            初始化mysql 8.0.18数据库

                              [root@mysql8018 compile_mysql_dir]# cd /usr/local/mysql


                              [root@mysql8018 mysql]# mkdir mysql-files


                              [root@mysql8018 mysql]# chown mysql:mysql mysql-files
                              [root@mysql8018 mysql]# chmod 750 mysql-files




                              [root@mysql8018 mysql]# ./bin/mysqld --initialize --user=mysql
                              2019-12-03T05:24:16.705903Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.18-debug) initializing of server in progress as process 966
                              2019-12-03T05:24:22.456021Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 4DVpef,erD.M
                              [root@mysql8018 mysql]#


                              初始化数据库存储在/usr/local/mysql/data
                              [root@mysql8018 mysql]# ll /usr/local/mysql/data
                              总用量 168016
                              -rw-r-----. 1 mysql mysql 56 12月 3 13:24 auto.cnf
                              -rw-r-----. 1 mysql mysql 155 12月 3 13:25 binlog.000001
                              -rw-r-----. 1 mysql mysql 16 12月 3 13:25 binlog.index
                              -rw-------. 1 mysql mysql 1676 12月 3 13:24 ca-key.pem
                              -rw-r--r--. 1 mysql mysql 1112 12月 3 13:24 ca.pem
                              -rw-r--r--. 1 mysql mysql 1112 12月 3 13:24 client-cert.pem
                              -rw-------. 1 mysql mysql 1676 12月 3 13:24 client-key.pem
                              -rw-r-----. 1 mysql mysql 5349 12月 3 13:24 ib_buffer_pool
                              -rw-r-----. 1 mysql mysql 12582912 12月 3 13:25 ibdata1
                              -rw-r-----. 1 mysql mysql 50331648 12月 3 13:25 ib_logfile0
                              -rw-r-----. 1 mysql mysql 50331648 12月 3 13:24 ib_logfile1
                              -rw-r-----. 1 mysql mysql 12582912 12月 3 13:25 ibtmp1
                              drwxr-x---. 2 mysql mysql 4096 12月 3 13:25 #innodb_temp
                              drwxr-x---. 2 mysql mysql 4096 12月 3 13:24 mysql
                              -rw-r-----. 1 mysql mysql 581 12月 3 13:25 mysql8018.err
                              -rw-r-----. 1 mysql mysql 5 12月 3 13:25 mysql8018.pid
                              -rw-r-----. 1 mysql mysql 25165824 12月 3 13:25 mysql.ibd
                              drwxr-x---. 2 mysql mysql 4096 12月 3 13:24 performance_schema
                              -rw-------. 1 mysql mysql 1676 12月 3 13:24 private_key.pem
                              -rw-r--r--. 1 mysql mysql 452 12月 3 13:24 public_key.pem
                              -rw-r--r--. 1 mysql mysql 1112 12月 3 13:24 server-cert.pem
                              -rw-------. 1 mysql mysql 1676 12月 3 13:24 server-key.pem
                              drwxr-x---. 2 mysql mysql 4096 12月 3 13:24 sys
                              -rw-r-----. 1 mysql mysql 10485760 12月 3 13:25 undo_001
                              -rw-r-----. 1 mysql mysql 10485760 12月 3 13:25 undo_002




                              [root@mysql8018 mysql]# ./bin/mysql_ssl_rsa_setup


                              启动mysql 8.0.18数据库

                                [root@mysql8018 mysql]# ./bin/mysqld_safe --user=mysql &
                                [1] 1027
                                [root@mysql8018 mysql]# Logging to '/usr/local/mysql/data/mysql8018.err'.
                                2019-12-03T05:25:24.750760Z mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data


                                [root@mysql8018 mysql]#


                                配置mysql 8.0.18自动重启

                                  [root@mysql8018 mysql]# pwd
                                  /usr/local/mysql
                                  [root@mysql8018 mysql]# cp support-files/mysql
                                  mysqld_multi.server mysql-log-rotate mysql.server
                                  [root@mysql8018 mysql]# cp support-files/mysql.server /etc/init.d/mysql.server


                                  登陆mysql 8.0.18

                                    [root@mysql8018 mysql]# /usr/local/mysql/bin/mysql -uroot -p4DVpef,erD.M
                                    mysql: [Warning] Using a password on the command line interface can be insecure.
                                    Welcome to the MySQL monitor. Commands end with ; or \g.
                                    Your MySQL connection id is 8
                                    Server version: 8.0.18-debug


                                    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.


                                    Oracle is a registered trademark of Oracle Corporation and/or its
                                    affiliates. Other names may be trademarks of their respective
                                    owners.


                                    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


                                    mysql>






                                    mysql> show databases;
                                    ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.


                                    mysql> alter user root@'localhost' identified by 'system';
                                    Query OK, 0 rows affected (0.03 sec)


                                    [root@mysql8018 mysql]# /usr/local/mysql/bin/mysql -uroot -psystem
                                    mysql: [Warning] Using a password on the command line interface can be insecure.
                                    Welcome to the MySQL monitor. Commands end with ; or \g.
                                    Your MySQL connection id is 9
                                    Server version: 8.0.18-debug Source distribution


                                    Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.


                                    Oracle is a registered trademark of Oracle Corporation and/or its
                                    affiliates. Other names may be trademarks of their respective
                                    owners.


                                    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


                                    mysql>


                                    mysql> show databases;
                                    +--------------------+
                                    | Database |
                                    +--------------------+
                                    | information_schema |
                                    | mysql |
                                    | performance_schema |
                                    | sys |
                                    +--------------------+
                                    4 rows in set (0.02 sec)



                                    文章转载自lovedb,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                    评论