CentOS7.4コンパイルインストールMySQL 5.7.20

4064 ワード

PHP Nginxはインストールしてすべて大した問題がありませんMysqlはインストールして問題の最も多い総括に出会うのです
  • ダウンロードパッケージ
  • #    mysql-5.7.20
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz
    
    #   
    tar xzf mysql-5.7.20.tar.gz
    
    #    (            )
    mv /root/mysql-5.7.20 /usr/local/mysql
    
    # MySQL 5.7      boost   
    #      cmake       
    # CMake Error at cmake/boost.cmake:81 (MESSAGE)
    
    #    boost_1_59_0
    wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
    
    #   
    tar xzf boost_1_59_0.tar.gz
    
    #          mysql      boost    (     boost )
    cp -R boost_1_59_0   /usr/local/mysql/boost/
    
  • 処理依存関係
  • yum install cmake cmake-gui gcc-c++ ncurses-devel
    
    //   mysql  
    useradd -s /sbin/nologin mysql
    
    //   mysql      
    mkdir -p /data/mysql
    
    //       
    chown -R mysql:mysql /data/mysql
    
  • cmake構築mysql
  • cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/ -DMYSQL_DATADIR=/data/mysql/ -DSYSCONFDIR=/etc/ -DWITH_BOOST=/usr/local/mysql/boost/
    
    #     
    CMAKE_INSTALL_PREFIX
    
    #     
    MYSQL_DATADIR
    
    #       
    SYSCONFDIR
    
    #   boost    
    WITH_BOOST
    
    # cmake      
    
      1:
    CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found.   Please set CMAKE_C_COMPILER to a valid compiler path or name.
      :
    //   gcc
    yum install gcc-c++
    
      2:
    CMake Error at cmake/readline.cmake:64 (MESSAGE):
      Curses library not found.  Please install appropriate package,
          remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel
      :
    yum install ncurses-devel
    
            CMakeCache.txt    cmake
    
  • のコンパイルとインストール
    make 
    make install
    
    # mysql         make make install    
    # mysql                        
    #   1G         30%       4G         
    #     MySQL5.7.20   2G    (     )
    
  • インストール完了後にMySQL
  • を初期化
    /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
    
    #   MySQL    
    --initialize
    
    #     MySQL   
    --user=mysql
    
    #   MySQL     
    --basedir=/usr/local/mysql
    
    #   MySQL     
    --datadir=/data/mysql
    
    #       
    A temporary password is generated for root@localhost: 5-h1Bbf*EQwk
        : 5-h1Bbf*EQwk
    
  • MySQL
  • を起動
    # MySQL       
    /usr/local/mysql/support-files/mysql.server
    #       
    cp /usr/local/mysql/support-files/mysql.server    /usr/local/mysql/mysqld
    
    #   MySQL
    /usr/local/mysql/mysqld start
    
    #     
    
      1:
    MySQL.2017-11-09T09:27:48.949025Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
    
      :
                 
         MySQL     /etc/my.cnf 
       log-error             
      mysql        log       
    mkdir log
    chown mysql:mysql log
    
      2:
    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
    
      : 
         /var/lib/mysql/      mysql.sock
             /tmp/  
    ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
    
    mysql.sock     my.cnf     
    
        
    /usr/local/mysql/mysqld start
        
    
  • MySQL
  • への接続
    /usr/local/mysql/bin/mysql -h localhost -uroot -p 
    #         :  5-h1Bbf*EQwk
    
    #     
       show databases;                   
    
    #     
    set password for root@localhost = password('MaShen');
    #     
    flush privileges;
    
    #       
    show databases;  
      
    
  • MySQLシステムctl管理
  • に追加
    # mysql.service 
    
    [Unit]
    Description=mysql
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/mysql/pid/mysql.pid
    ExecStart=/usr/local/mysql/mysqld start
    ExecStop=/usr/local/mysql/mysqld stop
    ExecRestart=/usr/local/mysql/mysqld restart
    ExecStatus=/usr/local/mysql/mysqld status
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    システムctl構成の再ロード
    systemctl daemon-reload
    

    まとめ
  • MySQL5.7 boostライブラリをインストールする必要がありますここで長い間
  • 初期化と5.7バージョン以前は
  • とは異なりました.
  • コンパイル時にメモリが小さいと
  • をコンパイルできない可能性があります.
  • インストール後にMySQLタイムズを起動するエラーの多くは、権限の問題
  • です.
  • 初期パスワードを変更しないとMySQL
  • を操作できません.