centos7.4ソースコードインストールmysql-8.0.17


説明
centos 7.4 mysql-8.0.17
準備作業
1,mysqlソースパッケージをダウンロードする
https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.17.tar.gz
2 mysqlユーザーの作成
useradd -s /bin/false mysql

3、インストール依存
yum -y install  gcc gcc-c++ ncurses  ncurses-devel  libaio-devel  openssl openssl-devel

ソースコードインストールcmake 3(ネイティブyumソースは3バージョンありません)
  • 3.1、cmake 3にダウンロードhttps://github.com/Kitware/CMake/releases/download/v3.15.2/cmake-3.15.2.tar.gz
  • 3.2,解凍入,実行
  • ./bootstrap --prefix=/usr/local/cmake 
    gmake 
    gmake install
    ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
    

    4,mysqlを解凍して実行に入り、初めてインストールを試みる
    cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=1
    

    ここのデータディレクトリ/data/mysqlは自分のディレクトリに記入する必要があります
  • 4.1エラー:GCC 5.3 or newer is required(-dumpversion says 4.8.5)
  • gccソースパッケージをダウンロードhttp://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.gz
  • 解凍入力、
  • 実行
    ./configure 
    
  • 4.1.1エラー:configure:error:Building GCC requires GMP 4.2+,MPFR 2.4.0+and MPC 0.8.0+.

  • gmp、mpfr、mpcソースパッケージをダウンロードftp://ftp.gnu.org/gnu/mpc/mpc-1.0.2.tar.gz ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 http://ftp.gnu.org/gnu/mpfr/mpfr-3.1.2.tar.gz
  • gmp
  • を取り付ける
    tar -jxvf gmp-5.0.1.tar.bz2
    cd gmp-5.0.1
    ./configure --prefix=/usr/local/gmp-5.0.1
    make
    make install
    
  • mpfr
  • を取り付ける
    tar -zxvf mpfr-3.1.2.tar.gz 
    cd mpfr-3.1.2
    ./configure --prefix=/usr/local/mpfr-3.1.2 --with-gmp=/usr/local/gmp-5.0.1
    make
    make install
    
  • mpc
  • を取り付ける
    tar -zxvf mpc-1.0.2.tar.gz
    cd mpc-1.0.2
    ./configure --prefix=/usr/local/mpc-1.0.2 --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.2
    make
    make install
    

    3つの依存ライブラリのインストールが完了したら、必ず/etc/ldにライブラリパスを追加することを覚えておいてください.so.confファイル
    vim /etc/ld.so.conf
    
    /usr/local/gmp-5.0.1/lib
    /usr/local/mpfr-3.1.2/lib
    /usr/local/mpc-1.0.2/lib
    

    パスの追加が完了したら、必ずldconfigを実行してください.
  • 再びgccをインストールして、先に前回の実行結果を削除して、ここは長い時間がかかります.の
  • rm -f CMakeCache.txt
    ./configure --prefix=/usr/local/gcc-9.2.0 --enable-threads=posix --disable-checking --enable--long-long --with-gmp=/usr/local/gmp-5.0.1 --with-mpfr=/usr/local/mpfr-3.1.2 --with-mpc=/usr/local/mpc-1.0.2 --disable-multilib
    make
    make install
    
  • gcc path設置、原機には低バージョンのgccがあり、元のgccを
  • と改名した.
    mv /usr/bin/gcc /usr/bin/gcc4.8.5
    mv /usr/bin/g++ /usr/bin/g++4.8.5
    

    新バージョンgccの設定
    ln -s /usr/local/gcc-9.2.0/bin/gcc /usr/bin/gcc
    ln -s /usr/local/gcc-9.2.0/bin/g++ /usr/bin/g++
    

    5,2回目のmysqlのインストール
     cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=1 -DCMAKE_CXX_COMPILER=/usr/bin/g++
     make
    
  • 5.1,makeエラー:/lib 64/libstdc++.so.6: version `CXXABI_1.3.9’ not found
    次のリンクを参照してください.https://blog.csdn.net/ZX714311728/article/details/69628836

  • 6,上記の問題を解決し、make(mysqlの3回目のインストールを試みる)make -j 10を再度実行する
  • 6.1エラー:関数‘void buf_pool_create(buf_pool_t*,ulint,ulint,std::mutex*,dberr_t&)’中:/root/mysql-8.0.17/storage/innobase/buf/buf 0 buf.cc:120:44:エラー:'SYS_gettid’は、この役割ドメインにおいてsetpriority(PRIO_PROCESS、(pid_t)syscall(SYS_gettid),-20)が宣言されていない.

  • 解決策:ファイルbuf 0 buf.ccの先頭追加:#include“sys/syscal.h”
    7,4回目mysqlのインストールを試みます
  • 7.1エラー:[97%]Building CXX object storage/innobase/CMakeFiles/innobase.dir/log/log0write.cc.o/data/packages/mysql-8.0.17/storage/innobase/lock/lock0lock.cc:関数‘void lock_mark_trx_for_rollback(hit_list_t&,trx_id_t,trx_t*)’中:/data/packages/mysql-8.0.17/storage/innobase/lock/lock 0 lock.cc:1596:9:エラー:'os_compare_and_swap_thread_id’ was not declared in this scope; did you mean ‘os_compare_and_swap_uint64’? 1596 | cas = os_compare_and_swap_thread_id(&trx->killed_by, 0, thread_id); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | os_compare_and_swap_uint 64 make[2]:***[storage/innobase/CMakeFiles/innobase.dir/lock/lock 0 lock.cc.o]エラー1 make[2]:***未完了のタスクを待っている...make[1]:***[storage/innobase/CMakeFiles/innobase.dir/all]エラー2 make:***[all]エラー2
  • 解決策:lock 0 lock.cc.oで「os_compare_and_swap_thread_id」をos_に変更compare_and_swap_lint
    8,5回目mysqlのインストールを試みます
  • 8.1エラー[96%]Building CXX object storage/innobase/CMakeFiles/innobase.dir/ut/ut0rnd.cc.o/data/packages/mysql-8.0.17/storage/innobase/trx/trx0trx.cc:関数‘void trx_Init(trx_t*)’:/data/packages/mysql-8.0.17/storage/innobase/trx/trx 0 trx.cc:20:5:エラー:'os_compare_and_swap_thread_id’ was not declared in this scope; did you mean ‘os_compare_and_swap_lint’? 220 | os_compare_and_swap_thread_id(&trx->killed_by, thread_id, 0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | os_compare_and_swap_lint/data/packages/mysql-8.0.17/storage/innobase/trx/trx0trx.cc:関数‘void trx_kill_blocking(trx_t*)':/data/packages/mysql-8.0.17/storage/innobase/trx/trx 0 trx.cc:3223:5:エラー:'os_compare_and_swap_thread_id’ was not declared in this scope; did you mean ‘os_compare_and_swap_lint’? 3223 | os_compare_and_swap_thread_id(&victim_trx->killed_by, thread_id, 0); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | os_compare_and_swap_lint

  • 解決策:trx 0 trx.ccで「os_compare_and_swap_thread_id」をos_に変更compare_and_swap_lint注意:ここには2つの場所があります.
    9,6回目mysqlのインストールを試みます
    make
    make install
    

    通過しました!!!
    10、以下に一般的な構成を行います.
    mysqlの構成
    vim /etc/my.conf
    
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/mysql
    
    [client]
    socket=/var/lib/mysql/mysql.sock
    

    保存終了
    chown -R mysql:mysql /usr/local/mysql
    chown -R mysql:mysql /data/mysql
    chmod -R 755 /usr/local/mysql
    chmod -R 755 /data/mysql
    

    起動スクリプトの構成
    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
    chkconfig --add mysqld
    chkconfig mysqld on
    

    11、mysqlを起動
    service mysqld start
  • 11.1ここでエラーを報告しました.エラー情報によると、権限の問題であることがわかります.手動でディレクトリファイル
  • を作成する必要があります.
    mkdir /var/log/mariadb
    touch mariadb.log
    chown mysql:mysql /var/log/mariadb/ -R
    chmod 755 /var/log/mariadb/ -R
    
    service mysqld start    # success!!!
    

    12,mysqlにログイン
    mysqlショートカットの設定
    ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
    

    ログインの開始
    mysql -uroot -p
    

    ここはとても愚かで、インストールの过程の中で私にパスワードを入力する地方を要求していないため、ここは私にパスワードを入力させます..解決策:https://blog.csdn.net/rdisme/article/details/54599569
    リファレンスリンク
    https://blog.csdn.net/lwbeyond/article/details/77718040 https://blog.csdn.net/ZX714311728/article/details/69628836 https://www.nmirage.com/database/492.html https://www.cnblogs.com/jjg0519/p/9034713.html https://www.cnblogs.com/NanZhiHan/p/11017158.html