zoukankan      html  css  js  c++  java
  • linux通过源码编译安装mysql

    • 操作系统:CentOS 7
    • MySQL版本:5.7.29

    MySQL源码编译安装比较复杂,但是具有高度自定义的优点。

    第一步:下载依赖包

    yum install wget cmake ncurses-devel gcc gcc-c++ vim lsof bzip2 openssl-devel -y
    

    这些是安装过程中所需要的一些软件,有些不是必须的,比如vim和wget,wget只是用来下载源码包的。

    第二步:下载源码包

    wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm
    

    wget命令用来从指定的URL下载文件。也可以到https://downloads.mysql.com/archives/community/下载好对应版本的源码包,再传到linux上。

    下载好的源码包如下所示。

    第三步:解压源码包

    把.src.rpm源码包解压。

    rpm -ivh mysql-community-5.7.29-1.el7.src.rpm
    

    解压后如下图所示。很明显在家目录下多了一个rpmbuild目录。

    进入./rpmbuild/SOURCES目录,真正的源码包就存放在这个目录下。这个目录下有如下文件。

    mysql-5.7.29.tar.gz就是源码所在的压缩包。还有一个boost_1_59_0.tar.bz2包,这是Boost的包。

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称。 ——摘自百度百科

    把mysql-5.7.29.tar.gz和boost_1_59_0.tar.bz2包解压。

    tar xf mysql-5.7.29.tar.gz
    tar xf boost_1_59_0.tar.bz2
    

    将解压后的boost包目录移动到解压后的mysql包目录下,当然也可以不移动,在之后进行编译前的配置的时候使用绝对路径就好了。

    第四步:进行编译前的配置

    # 进入解压后的mysql包
    cd mysql-5.7.29
    # 新建一个无家目录且禁止登录的用户mysql,这个用户是linux系统用来启动MySQL的。
    useradd -r -s /sbin/nologin mysql
    # 新建一个给MySQL存放数据的目录
    mkdir -p /data/mysql
    # 修改数据目录的属主为mysql用户
    chown mysql:mysql /data/mysql
    
    #进行编译前的配置
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql  -DSYSCONFDIR=/etc  -DMYSQL_USER=mysql  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_BOOST=boost_1_59_0
    
    ## 启动两个进程去编译它,比较快一些,这个根据自己的机器配置来设置就好了。
    make -j 2
    
    • cmake 是一个编译器,就是将c语言编写的代码翻译成机器可以执行的二进制的程序。
    • -DCMAKE_INSTALL_PREFIX 是编译安装MySQL的时候的固定语法参数,是给cmake传参的,指定MySQL安装的路径/usr/local/mysql,同时生成一个Makefile文件。具体的路径可以自己定义。
    • -DMYSQL_DATADIR=/data/mysql 指定MySQL的存放数据的目录,具体的路径可以自己定义。
    • -DSYSCONFDIR=/etc 指定MySQL的配置文件存放的目录。
    • -DMYSQL_USER=mysql 指定启动mysql的用户,用户名可以自己定义。
    • -DDEFAULT_CHARSET=utf8 指定MySQL里的默认的字符集,推荐指定默认的字符集为utf8。
    • -DDEFAULT_COLLATION=utf8_general_ci COLLATION 排序规则。utf8_general_ci即utf8里的排序规则,不区分大小写。
    • -DWITH_BOOST=boost_1_59_0 指定boost源码的位置。因为我之前将boost那个包解压后放到mysql-5.7.29目录下,所以在这里使用相对路径。

    编译安装的时候,非常消耗cpu资源:因为编译是将c语言代码翻译成二进制代码,非常消耗cpu,不是特别消耗内存。

    第五步:安装编译好的二进制文件到指定的目录

    make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。

    make install
    

    第六步:修改配置文件

    mysql的配置文件在/etc下的my.cnf,这个文件目前还不是MySQL的配置文件,而是mariadb的配置文件,要对其进行修改。
    先备份一下/etc/my.cnf文件,然后清空/etc/my.cnf

    cp /etc/my.cnf /root/mysql.cnf.bak
    >/etc/my.cnf
    

    有很多博客中写,将模板文件/application/mysql/support-files/my-default.cnf覆盖/etc/my.cnf,而5.7版本没有这个文件,因此需要自行配置my.cnf文件。

    [mysqld_safe]
    log-error=/var/log/mysql/mysql.log
    
    [client]
    socket=/tmp/mysql.sock
    
    [mysqld]
    socket=/tmp/mysql.sock
    port = 3306
    open_files_limit = 8192
    innodb_buffer_pool_size = 512M
    
    [mysql]
    auto-rehash
    prompt=\u@\d \R:\m  mysql>
    

    mysql的配置文件的作用就是给进程传递参数。如[mysqld]下的变量就是给mysqld进程传递参数。

    • log-error=/var/log/mysql/mysql.log 这是指定mysql的日志文件的路径
      需要mkdir /var/log/mysql目录,然后使用命令chown mysql:mysql /var/log/mysql,因为mysql进程需要往/var/log/mysql目录里写东西,需要权限,不然不能往目录下写日志。
    • client是客户端的配置
    • mysqld是服务器端的配置。
      • socket是用来指定socket文件的路径,方便客户端连接找到。
      • port 指定端口号
      • open_files_limit 指定mysql进程可以打开的文件数量,需要在操作系统里允许进程打开更多的文件。
      • innodb_buffer_pool_size 指定缓存池的大小,提升数据性能的参数,最大可以达到物理内存的80%。
    • auto-rehash 支持tab键补齐。
    • prompt 登录进去后的提示符。
      • u 代表登录的用户 user
      • @是分隔符
      • d 当前所在的数据库的名字
      • R:m 当前linux系统里的时间
      • mysql> 固定的内容

    第七步:创建MySQL日志文件目录

    mkdir -p /var/log/mysql
    chown mysql:mysql /var/log/mysql
    

    第八步:初始化MySQL

    # 进入编译安装好的mysql的目录(安装目录)
    cd /usr/local/mysql/bin
    # 执行mysqld这个程序,初始化mysql,并且将日志和临时密码重定向到/root/temp_password.txt文件里
    ./mysqld --initialize  --user=mysql --basedir=/usr/local/mysql/  --datadir=/data/mysql  &>/root/temp_password.txt
    

    第九步:修改PATH变量

    修改PATH变量的目的是在linux系统里可以找到我们编译安装的mysql相关的命令。

    # 将新的PATH变量重定向到/etc/bashrc文件
    echo 'PATH=$PATH:/usr/local/sc_mysql/bin' >>/etc/bashrc
    

    记得刷新一下环境变量。

    source /etc/bashrc
    

    第十步:关闭防火墙和selinux

    #关闭防火墙firewalld服务
    service firewalld stop   
    #设置firewalld服务开机不启动
    systemctl  disable firewalld
    #临时关闭selinux
    setenforce 0
    #永久修改selinux配置文件里的内容
    sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
    

    第十一步:设置MySQL开机自启

    # 拷贝mysqld的程序文件到指定的目录,方便后面设置mysqld服务开机启动。
    # 加斜杠直接覆盖不提示
    cp ../support-files/mysql.server /etc/init.d/mysqld
    # 设置开机启动MySQL
    chkconfig --add mysqld
    # 启动MySQL
    service mysqld start
    

    第十二步:重置MySQL密码,并验证是否安装成功

    #从保存的临时密码文件里,截取出临时密码,赋值给一个变量temp_pwd
    temp_pwd=$(cat /root/temp_password.txt |tail -1|awk '{print $11}')
    #给MySQL设置密码为Sanchuang123#
    mysql -uroot -p$temp_pwd  --connect-expired-password -e "set password='MySqlroot123#'"
    

    确认一下是否安装成功。

    再试试用修改后的密码登录MySQL。

    至此MySQL编译安装完毕!

  • 相关阅读:
    项目管理改进实践
    Abount StoneAge Dictionary Project
    词库引擎核心设计
    JDOM / XPATH编程指南
    2007年图灵奖揭晓
    pjscrape: A webscraping framework written in Javascript, using PhantomJS and jQuery
    centos install node.js
    Posts tagged pyqt4
    install python262 写得不错
    WebSPHINX: A Personal, Customizable Web Crawler
  • 原文地址:https://www.cnblogs.com/CharrammaBlog/p/12901750.html
Copyright © 2011-2022 走看看