linux通过源码编译安装mysql

OS:CentOS 7

MySQL version:5.7.29

一、下载依赖及源码包

yum install ncurses-devel gcc gcc-c++ openssl-devel -y

# 下载所需用到的工具
yum install wget cmake bzip2 -y

# 下载源码包
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-community-5.7.29-1.el7.src.rpm

或者到https://downloads.mysql.com/archives/community/下载好相应的源码包,导入到Linux上。

二、解压并编译安装源码包

  1. 解压

    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++程序库的总称。 ——摘自百度百科

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

    cd ./rpmbuild/SOURCES
    tar xf mysql-5.7.29.tar.gz
    tar xf boost_1.59_0.tar.gz2
    mv boost_1_59_0 mysql-5.7.29/
    
  3. 进行编译前的配置

    # 创建mysql用户和所需的目录
    useradd -r -s /sbin/nologin mysql
    mkdir -p /data/mysql/{data,log}
    chown -R mysql.mysql /data/mysql
    
    # 配置
    cd ./mysql-5.7.29
    cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql/data  -DSYSCONFDIR=/etc  -DMYSQL_USER=mysql  -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8_general_ci  -DWITH_BOOST=boost_1_59_0
    
    # 编译
    make -j 2 && make install
    
    • 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目录下,所以在这里使用相对路径。

三、修改配置文件并初始化

  1. 修改配置文件

    我这个配置文件比较简单,仅供参考,读者请根据自己的需求来配置。

    配置文件各项解释:https://www.jb51.net/article/58538.htm

    cat > /etc/my.cnf << EOF
    [client]
    default-character-set = utf8mb4
    port = 3306
    socket = /data/mysql/mysql.sock
    
    [mysqld]
    server_id = 1
    character-set-server = utf8
    user = mysql
    port = 3306
    socket = /data/mysql/mysql.sock
    basedir = /usr/local/mysql
    datadir = /data/mysql/data
    log-error = /data/mysql/log/mysql_error.log
    log-bin = /data/mysql/log/mysql-bin
    binlog_format = ROW
    pid-file = /data/mysql/mysql.pid
    open_files_limit = 8192
    innodb_buffer_pool_size = 512M
    
    [mysql]
    auto-rehash
    prompt = '\u@\h [\d]> '
    EOF
    
  2. 初始化

    /usr/local/mysql/bin/mysqld --initialize  --user=mysql --basedir=/usr/local/mysql/  --datadir=/data/mysql/data/
    

四、启动MySQL

  1. 修改环境变量

    echo "export PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
    source /etc/profile
    
  2. 启动MySQL

    \cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    
    /etc/init.d/mysql start
    
    # 设置开机启动
    chkconfig --add mysql
    

    看下3306端口有没有起来

  3. 获取默认密码登录

    cat /data/mysql/log/mysql_error.log | grep "temporary password"
    

  4. 修改密码

    root@localhost [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword2233$';
    

至此MySQL编译安装完成!

posted @ 2020-05-17 22:32  Charramma  阅读(617)  评论(0编辑  收藏  举报