zoukankan      html  css  js  c++  java
  • CentOS7下源码安装MySQL 8.x

    会选择使用源码安装MySQL,想必对MySQL及其他的安装方式已经有了一定的了解,这里就不对周边信息进行过多赘述了,直接开始吧。

    编译MySQL比较消耗内存,如果机器内存较小,可能会在编译期间出现内存不足的异常。若没有设置swap分区的可以设置swap分区来解决,否则只能扩容内存了:

    [root@txy-server ~]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
    [root@txy-server ~]# mkswap /swapfile
    [root@txy-server ~]# swapon /swapfile

    1、安装编译时所需的依赖包

    1.1、使用yum命令安装编译所依赖的包及工具:

    [root@txy-server ~]# yum install -y cmake3 git gcc-c++ ncurses-devel perl-Data-Dumper boost boost-doc boost-devel bzip2 openssl-devel libtirpc-devel.x86_64

    由于编译MySQL时对gcc的版本要求是5.3以上,所以我们需要先升级一下gcc的版本,因为yum安装目前最新版本只到4.8.5。

    升级gcc版本的方式主要有两种,一种是下载源码包进行编译安装,一种是使用yum安装devtoolset包,目前devtoolset包里的gcc版本为5.3.1。

    而源码安装的方式比较灵活可以选择任意版本,但非常耗时。这里两种方式都会介绍,可以自行视情况选择。

    1.1.1、使用yum安装devtoolset包,命令如下:

    [root@txy-server ~]# yum install -y centos-release-scl scl-utils-build
    [root@txy-server ~]# yum install -y devtoolset-4-gcc.x86_64 devtoolset-4-gcc-c++.x86_64 devtoolset-4-gcc-gdb-plugin.x86_64

    1.1.2、创建软件链接,覆盖/usr/bin下的gcc相关命令,因为编译MySQL时默认会去/usr/bin目录下找gcc相关的命令:

    [root@txy-server ~]# ln -sf /opt/rh/devtoolset-4/root/usr/bin/* /usr/bin/

    1.1.3、最后验证一下gcc、cc、c++等命令的版本是否为5.3.1:

    [root@txy-server ~]# gcc -v
    ...
    gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
    [root@txy-server ~]# cc -v
    ...
    gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
    [root@txy-server ~]# c++ -v
    ...
    gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)
    • Tips:建议使用这种方式进行安装,比较简单不容易踩坑

    1.2.1、以下是源码安装的方式,首先下载GCC源码安装包并解压缩:

    [root@txy-server ~]# cd /usr/local/src
    [root@txy-server /usr/local/src]# wget http://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
    [root@txy-server /usr/local/src]# tar -xzvf gcc-9.1.0.tar.gz

    1.2.2、进入解压后的目录,运行download_prerequisites脚本,该脚本会自动下载编译时所需要的依赖文件和库:

    [root@txy-server /usr/local/src]# cd gcc-9.1.0
    [root@txy-server /usr/local/src/gcc-9.1.0]# ./contrib/download_prerequisites

    1.2.3、建立输出目录,将所有的中间文件都放到该目录下:

    [root@txy-server /usr/local/src/gcc-9.1.0]# mkdir gcc-build-9.1.0

    1.2.4、进入新建的目录,并完成编译配置:

    [root@txy-server /usr/local/src/gcc-9.1.0]# cd gcc-build-9.1.0
    [root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

    参数说明:

    • –enable-languages:让gcc支持哪些语言
    • –disable-multilib:不生成编译为其他平台可执行代码的交叉编译器
    • –disable-checking:生成的编译器在编译过程中不做额外检查,也可以使用–enable-checking=xxx来增加一些检查

    1.2.5、接着就可以进行编译安装了:

    [root@txy-server /usr/local/src/gcc-9.1.0/gcc-build-9.1.0]# make && make install
    • Tips:这一步耗时会比较久,大概1-2个小时

    1.2.6、创建软件链接,覆盖/usr/bin下的gcc相关命令,因为编译MySQL时默认会去/usr/bin目录下找gcc相关的命令:

    [root@txy-server ~]# ln -sf /usr/local/bin/* /usr/bin/

    1.2.7、最后验证一下gcc版本是否为9.1.0,如下代表安装成功:

    [root@txy-server ~]# gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/9.1.0/lto-wrapper
    Target: x86_64-pc-linux-gnu
    Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
    Thread model: posix
    gcc version 9.1.0 (GCC)
    [root@txy-server ~]#

    2、下载MySQL源码包解压并编译安装

    2.1、进入MySQL官网下载地址:

    https://dev.mysql.com/downloads/mysql/

    2.2、复制源码包的下载链接:
    CentOS7下源码安装MySQL 8.x

    2.3、到Linux上下载并解压源码包:

    [root@txy-server ~]# cd /usr/local/src
    [root@txy-server /usr/local/src]# wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-boost-8.0.18.tar.gz
    [root@txy-server /usr/local/src]# tar -zxvf mysql-boost-8.0.18.tar.gz

    2.4、进入解压后的目录,参照如下命令步骤完成编译安装:

    # 创建数据文件存放目录
    [root@txy-server /usr/local/src]# mkdir -p /data/mysql
    [root@txy-server /usr/local/src]# cd mysql-8.0.18/
    # 新建目录,存放编译产生的中间文件。因为不允许在源码目录下进行编译
    [root@txy-server /usr/local/src/mysql-8.0.18]# mkdir builder
    [root@txy-server /usr/local/src/mysql-8.0.18]# cd builder/
    [root@txy-server /usr/local/src/mysql-8.0.18/builder]# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_TCP_PORT=3306 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DWITH_DEBUG=0 -DMYSQL_MAINTAINER_MODE=0 -DWITH_SYSTEMD=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=../boost
    [root@txy-server /usr/local/src/mysql-8.0.18/builder]# make && make install
    • Tips:编译安装会比较耗时,大概1-2个小时

    cmake3命令所使用的参数说明:

    • -DCMAKE_INSTALL_PREFIX=/usr/local/mysql:MySQL安装的根目录
    • -DMYSQL_DATADIR=/data/mysql:数据文件所存放的目录
    • -DSYSCONFDIR=/etc :MySQL配置文件所在目录
    • -DMYSQL_USER=mysql:MySQL服务的用户名
    • -DWITH_MYISAM_STORAGE_ENGINE=1:安装MyISAM引擎
    • -DWITH_INNOBASE_STORAGE_ENGINE=1:安装InnoDB引擎
    • -DWITH_ARCHIVE_STORAGE_ENGINE=1:安装Archive引擎
    • -DWITH_MEMORY_STORAGE_ENGINE=1:安装Memory引擎
    • -DWITH_FEDERATED_STORAGE_ENGINE=1:安装Federated引擎
    • -DWITH_PARTITION_STORAGE_ENGINE=1:安装Partition引擎
    • -DWITH_READLINE=1:MySQL的readline library
    • -DMYSQL_UNIX_ADDR=/tmp/mysql.sock:sock文件的路径
    • -DMYSQL_TCP_PORT=3306 :MySQL的监听端口
    • -DENABLED_LOCAL_INFILE=1:启用加载本地数据
    • -DENABLE_DOWNLOADS=1:编译时允许自主下载相关文件
    • -DEXTRA_CHARSETS=all :使MySQL支持所有的扩展字符
    • -DDEFAULT_CHARSET=utf8mb4:设置默认字符集为utf8mb4
    • -DDEFAULT_COLLATION=utf8mb4_general_ci:设置默认字符校对
    • -DWITH_DEBUG=0:禁用调试模式
    • -DMYSQL_MAINTAINER_MODE=0:是否启用mysql维护器特定的开发环境
    • -DDOWNLOAD_BOOST=1:允许在线更新boost库
    • -DWITH_BOOST=../boost:指定boost安装路径

    关于cmake3所支持的参数可以到官网文档进行查询:

    https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html

    2.5、编译安装完成后,创建mysql用户及更改相应目录的属主:

    [root@txy-server ~]# groupadd mysql
    [root@txy-server ~]# useradd -M -g mysql -s /sbin/nologin mysql
    [root@txy-server ~]# chown -R mysql:mysql /usr/local/mysql/
    [root@txy-server ~]# chown -R mysql:mysql /data/mysql/

    2.6、编辑配置文件:

    [root@txy-server ~]# vim /etc/my.cnf
    [mysqld]
    basedir=/usr/local/mysql
    datadir=/data/mysql
    socket=/tmp/mysql.sock
    
    [mysqld_safe]
    log-error=/var/log/mysqld/mysqld.log
    pid-file=/var/run/mysqld/mysql.pid

    2.7、创建日志文件存放的目录和pid文件存放的目录,并赋权给mysql用户:

    [root@txy-server ~]# mkdir -p /var/log/mysqld /var/run/mysqld
    [root@txy-server ~]# chown -R mysql:mysql /var/log/mysqld
    [root@txy-server ~]# chown -R mysql:mysql /var/run/mysqld

    2.8、配置环境变量,方便使用MySQL的命令:

    [root@txy-server ~]# vim /etc/profile
    export MYSQL_HOME=/usr/local/mysql
    export PATH=$PATH:$MYSQL_HOME/bin
    [root@txy-server ~]# source /etc/profile
    [root@txy-server ~]# mysql --version  # 验证配置是否成功
    mysql  Ver 8.0.18 for Linux on x86_64 (Source distribution)
    [root@txy-server ~]#

    2.9、执行如下命令初始化数据库:

    [root@txy-server ~]# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql

    初始化成功后会生成root账户的默认密码,如下图所示:
    CentOS7下源码安装MySQL 8.x

    将该密码复制并保存,因为后面需要使用该密码登录到MySQL中修改密码

    2.10、将MySQL生成的启动文件复制到/usr/lib/systemd/system/目录下:

    [root@txy-server ~]# cp /usr/local/src/mysql-8.0.18/builder/scripts/mysqld.service /usr/lib/systemd/system/
    [root@txy-server ~]# chown 775 /usr/lib/systemd/system/mysqld.service

    2.11、使用systemctl命令启动MySQL服务:

    [root@txy-server ~]# systemctl start mysqld

    2.12、查看3306端口是否已正常监听:

    [root@txy-server ~]# netstat -lntp |grep 3306
    tcp6       0      0 :::33060                :::*                    LISTEN      27363/mysqld
    tcp6       0      0 :::3306                 :::*                    LISTEN      27363/mysqld
    [root@txy-server ~]#

    2.13、使用默认密码登录MySQL,并重置密码及开放远程登录:

    [root@txy-server ~]# mysql -uroot -pmXyfy/g8)aus
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';  # 重置密码
    mysql> use mysql;
    mysql> update user set host ='%' where user='root';  # 开放远程登录
    mysql> FLUSH PRIVILEGES;  # 刷新修改

    2.14、使用可视化工具进行远程连接,测试下是否能正常对MySQL进行访问:
    CentOS7下源码安装MySQL 8.x

    end

  • 相关阅读:
    C# 从服务器下载文件
    不能使用联机NuGet 程序包
    NPOI之Excel——合并单元格、设置样式、输入公式
    jquery hover事件中 fadeIn和fadeOut 效果不能及时停止
    UVA 10519 !! Really Strange !!
    UVA 10359 Tiling
    UVA 10940 Throwing cards away II
    UVA 10079 Pizze Cutting
    UVA 763 Fibinary Numbers
    UVA 10229 Modular Fibonacci
  • 原文地址:https://www.cnblogs.com/xiaoyaojinzhazhadehangcheng/p/12175493.html
Copyright © 2011-2022 走看看