首页 > 数据库 >一次mysql源码安装

一次mysql源码安装

时间:2022-11-06 16:13:18浏览次数:69  
标签:log 安装 源码 mysqld usr mysql local size

一次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验证的配置,方便我们到时候改密码

    • [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
    
  • 一些报错产生的原因,可以参考这个博客,报错原因

标签:log,安装,源码,mysqld,usr,mysql,local,size
From: https://www.cnblogs.com/572354941hnit/p/16862859.html

相关文章

  • Spark:流式读取Kafka后读取ES并存储值Mysql,业务以及源码(一)
    业务:最近公司需要处理一些关于数据的问题,需要spark+kafka+es+mysql进行联合处理主要的业务也比较简单,大致是如下图 主要步骤如下:一级项目将相关的处理标......
  • windows11安装机器学习Anaconda环境
    Anaconda是一个开源的Python发行版本,是一个安装、管理python相关包的软件,还自带python、JupyterNotebook、Spyder,有管理包的conda工具,非常有用。安装步骤:1.Anaconda下......
  • 解决安装TortoiseGit未完全卸载问题
    由于之前安装过TortoiseGit,可能是卸载文件不干净,然后出现下面的问题:有尝试过在控制面板->程序->卸载程序---------然后找到TortoiseGit卸载,重启也不行,还是报上面的提示信......
  • CentOS7编译安装haproxy-2.6.6
    创建用户并安装依赖包#selinux会影响haproxy启动,会有'cannotbindUNIXsocket(Permissiondenied)'的报错,请关闭它除非你知道设置selinux规则sed-i'/SELINUX/s/enf......
  • Mysql-DDL操作表
    查询表showtables;查看表结构decs表名;创建表注意创建表列名要加反引号createtable表名(列名1数据类型,列名1数据类型,..............);......
  • rust学习安装篇
    一、window下rust安装1.1、安装rust前提,必须vs安装“使用C++的桌面开发”打开“VisualStudioInstaller”安装管理器,添加勾选安装“使用C++的桌面开发”1.2、在Wi......
  • 主界面(零基础适合小白)基础javaweb前端项目实战【包含增删改查,mysql】二
    首先编写sp文件(index.jsp)<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>主界面</title></head><body><br>......
  • docker安装rabbitMq
    安装rabbitmq参考网站:https://www.rabbitmq.com/download.html 方式一:获取rabbit镜像:dockerpullrabbitmq:management创建并运行容器dockerrun-di--name=my......
  • Golang安装包并配置
    Golang安装包并配置Golang安装包并配置安装beego#安装beego核心包goget-ugithub.com/beego/beego/v2#安装orm包用于操作数据库,beego的orm包是独立的模块需要单独......
  • redis介绍和安装
    redis介绍redis是一种在内存进行存储数据的数据库,当然,它也支持将数据存储到硬盘上redis的存储方式是通过key-value的形式,value可以是很多数据类型,分别是:string(字符串)、li......