一次mysql源码安装

一次mysql源码安装

  • 需要准备的条件

    • cmake
    • gcc
    • boost1.59.0
  • 这里贴出我对应的依赖版本

  • mysql版本对应的依赖boost版本必须要匹配,编译过程如果有报错信息boost要求对应的版本

  • 这里选择的是mysql5.7.17,mysql源码链接

  • boost对应的版本库,选择需要的版本对应download就行,boost版本

  • 下载对应好需要的依赖就行,就开始解压过程,以mysql源码为例子

    cd /home/soft/
    wget https://github.com/mysql/mysql-server/archive/mysql-5.7.17.tar.gz
    tar xzfv mysql-5.7.17.tar.gz
    
  • 这个时候需要给mysql一些文件权限,不然mysql如何操作文件呢?

    cd mysql-server-mysql-5.7.17/
    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    
  • 配置mysql预编译参数

    • 创建mysql数据存储目录

      mkdir -p /usr/local/mysql/data
      
    • 预编译参数(根据自身依赖的情况,去选择文件路径)

      cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
      -DMYSQL_DATADIR=/usr/local/mysql/data \
      -DWITH_BOOST=/data/soft/boost_1_59_0 \
      -DSYSCONFDIR=/etc \
      -DEFAULT_CHARSET=utf8mb4 \
      -DDEFAULT_COLLATION=utf8mb4_general_ci \
      -DENABLED_LOCAL_INFILE=1 \
      -DEXTRA_CHARSETS=all
      
    • 编译并安装

      make -j `grep processor /proc/cpuinfo | wc -l`
      make install
      
    • 编译完成后

      cd /usr/local/mysql
      chown -R mysql:mysql .
      # 注意:MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库
      ./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
      
      chown -R root .
      chown -R mysql data
      chmod -R 777 data
      
    • 新建配置文件

      vim /etc/my.cnf
      
    • 新建日志文件

      mkdir -p /usr/local/mysql/log
      cd /usr/local/mysql/log
      touch mysql_error.log
      touch mysql_slow.log
      
      cd ..
      
      chown -R mysql log
      chmod -R 777 log
      
      
    • 配置文件内容innodb_buffer_pool_size注意下 看自己内存有多少,再分配,以防内存不够报错。skip-grant-tables这里跳过mysql验证的配置,方便我们到时候改密码,这里可以使用cat > /etc/my.cnf << EOF粘贴配置文件,最后输入EOF结尾

    • [client]
      port=3306
      socket=/usr/local/mysql/mysql.sock
      [mysqld]
      character-set-server=utf8
      collation-server=utf8_general_ci
      
      skip-external-locking
      skip-name-resolve
      skip-grant-tables
      
      federated
      explicit_defaults_for_timestamp = 1
      
      user=mysql
      port=3306
      basedir=/usr/local/mysql
      datadir=/usr/local/mysql/data
      tmpdir=/usr/local/mysql/temp
      # server_id = .....
      socket=/usr/local/mysql/mysql.sock
      log-error=/usr/local/mysql/log/mysql_error.log
      pid-file=/usr/local/mysql/mysql.pid
      open_files_limit=10240
      back_log=600
      max_connections=500
      max_connect_errors=6000
      wait_timeout=605800
      #open_tables=600
      #table_cache = 650
      #opened_tables = 630
      
      max_allowed_packet=32M
      sort_buffer_size=4M
      join_buffer_size=4M
      thread_cache_size=300
      query_cache_type=1
      query_cache_size=256M
      query_cache_limit=2M
      query_cache_min_res_unit=16k
      
      tmp_table_size=256M
      max_heap_table_size=256M
      
      key_buffer_size=256M
      read_buffer_size=1M
      read_rnd_buffer_size=16M
      bulk_insert_buffer_size=64M
      
      lower_case_table_names=1
      
      default-storage-engine=INNODB
      
      innodb_buffer_pool_size=1G
      innodb_log_buffer_size=32M
      innodb_log_file_size=128M
      innodb_flush_method=O_DIRECT
      #####################
      #thread_concurrency=32
      long_query_time=2
      slow-query-log=on
      slow-query-log-file=/usr/local/mysql/log/mysql_slow.log
      
      [mysqldump]
      quick
      max_allowed_packet=32M
      
      [mysqld_safe]
      log-error=/var/log/mysqld.log
      pid-file=/var/run/mysqld/mysqld.pid
      
    • 配置mysql服务

      cp support-files/mysql.server /etc/init.d/mysqld
      chkconfig --add mysqld     # 添加到系统服务
      chkconfig mysqld on        # 开机启动
      
    • 接下来我们就可以使用systemctl start mysqld启动服务了,但是每个人安装不一样,总会有不同的报错,这个时候看下tail -f /var/log/mysqld.log看下对应报啥错,有时候大多是忘记设计权限了

      systemctl restart mysqld -- 重启mysql
      systemctl stop mysqld -- 停止mysql服务
      systemctl status mysqld -- 查看mysql服务状态
      
      systemctl daemon-reload  -- 如果重新设置了服务,可以使用这个重载一下
      
    • 配置一下可以直接使用mysql的命令吧

      vim /etc/profile
      
      export PATH=$PATH:/usr/local/mysql/bin
      source /etc/profile
      
    • 接下来就是更改密码了

    • 因为我们配置了skip-grant-tables,所以第一次认证,直接使用这样的

      mysql -uroot -p
      回车
      
    • 设置新密码

    • use mysql;
      update user set authentication_string=password('新密码') where user='root';
          flush privileges;
      
      
    • 注意把skip-grant-tables注释掉,重新启动mysql服务

    • 重新编译记得清下编译的时候的缓存文件

      cd /data/soft/mysql
      rm -f CMakeCache.txt
      make clean
      
  • mysql安装完毕,接下来查看下mysql进程

    ps -aux | grep mysql
    
  • 一些报错产生的原因,可以参考这个博客,报错原因

posted @ 2022-11-06 16:07  liter_wave  阅读(38)  评论(0编辑  收藏  举报