专栏首页MySQLBeginner新手001|CentOS7下源码安装MySQL5.7.6+

新手001|CentOS7下源码安装MySQL5.7.6+

1 导读

MySQL 安装方式分为: 源码安装,相应系统发行包安装(如 rpm, yum, apt-get 等)。生产中比较推荐使用二进制安装。 这里给大家推荐一篇源码安装,大家可以了解一下,这个可以用到学习源码之路。

2 环境介绍

  • Linux 版本:CentOS7
  • MySQL 版本:MySQL5.7.16 (该文档适用于 MySQL 版本>=5.7.6)
  • 卸载系统内部自带的 MariaDB
        rpm -qa|grep  mysql
        rpm -qa|grep mariadb

如果上面有输出卸载之:

        rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64
  • 下载MySQL版本
    wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16.tar.gz
  • 获取以前老的版本下载地址: http://downloads.mysql.com/archives/community/
  • 路径要求:
    • 数据库文件安装目录: /usr/local/mysql
    • 数据目录: /data/mysql/mysql3306/下面

3 安装编译软件

yum install -y cmake make gcc gcc-c++

4 解压MySQL源码包

tar -zxvf mysql-5.7.16.tar.gz

5 创建 MySQL 的用户和用户组

创建用户组

groupadd mysql

创建 mysql 用户,所属组为 mysql

useradd -s /sbin/nologin  -m -n  -g mysql mysql -d /usr/local/mysql

6 安装 MySQL 相关依赖包

yum install -y ncurses-devel openssl-devel bison-devel libaio libaio-devel

7 boost库安装

该步骤可以省略,在 cmake 阶段添加参数-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost即可

boost 库安装

wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
tar -zxvf boost_1_59_0.tar.gz -C /usr/local
mv /usr/local/boost_1_59_0 /usr/local/boost
cd /usr/local/boost
./bootstrap.sh
./b2 stage threading=multi link=shared
./b2 install threading=multi link=shared

8 创建 MySQL 相关目录及权限

目录

含义

配置参数

data

用于存储数据

datadir

tmp

用于存储临时文件

tmpdir

log

日志文录

log_bin_basename

mkdir -p /data/mysql/mysql3306/{data,log,tmp}
chown -R mysql:mysql /data/mysql/mysql3306

9 将 MySQL 配置文件 my.cnf 放置到/etc/my.cnf

默认情况下,MySQL 会依次按顺序查找如下几个路径来获取 MySQL 配置访问文件:

/etc/my.cnf
/etc/mysql/my.cnf
/etc/my.cnf/my.cnf
/usr/local/mysql/my.cnf
~/.my.cnf

使用过程中可通过 --defaults-file=xxx 来指定配置文件。

10 开始编译

切换到 mysql-5.7.16 源码目录下

cd /path/mysql-5.7.16

cmake

 cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/mysql3306/data \
-DSYSCONFDIR=/etc/my.cnf \
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DENABLE_DEBUG_SYNC=0  \
-DENABLED_LOCAL_INFILE=1 \
-DENABLED_PROFILING=1  \
-DWITH_DEBUG=0  \
-DWITH_SSL=yes \
-DWITH_SAFEMALLOC=OFF \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

make

该命令中可以通过添加-j参数指定多线程工作,如 make -j2 && make install -j2 则使用2个 CPU 核进行 make

该步骤执行完毕后,可以到 CMAKE_INSTALL_PREFIX 参数指定的目录下,即 MySQL 安装目录下查看到 mysql 相关目录与文件

make && make install

修改 MySQL 安装目录的所属用户与用户组为 mysql:mysql

chown -R mysql:mysql /usr/local/mysql   

11 添加 MySQL 环境变量

vim /etc/profile

在 ~/.bashrc 文件下添加如下语句

   export MYSQL_HOME=/usr/local/mysql
   export PATH=${MYSQL_HOME}/bin:$PATH

保存后,使环境变量生效

   source /etc/profile

12 初始化及启动

配置文件放置到: /etc/my.cnf

cd /usr/local/mysql

初始化

./bin/mysqld --initialize

获取初始化的密码:

cat /data/mysql/mysql3306/data/error.log |grep password

利用这个 password 登录 MySQL

启动MySQL

/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &

登录MySQL后修改密码

mysql>set password='wubxwubx';

13 登陆MySQL

mysql -uroot -p

输入更改后的密码: wubxuwbx

14 关闭MySQL

mysqladmin shutdown -uroot -S /tmp/myql3306.sock 

使用新密码

15 总结

初始化的 MySQL 5.7.6+ 与 MySQL 5.6.xx 不同之处

  • 初始化工具不同 MySQL 5.6.xx 使用的是 mysql_install_db,MySQL 5.7.6+ 官方推荐使用 mysqld --initialize。
  • 初始化数据库不同 MySQL 5.6.xx 初始化之后存在 mysql,information_schema,performance_schema,test 四个数据库,MySQL 5.7.6+ 初始化之后存在 mysql,information_schema,performance_schema,sys 四个数据库。
  • 初始化用户不同 MySQL 5.6.xx 初始化之后存在root@localhost,root@'::1',root@'hostname',''@'localhost',''@'hostname'五个用户,MySQL 5.7.6+ 初始化之后存在 mysql.sys,root@localhost 用户
  • 初始化root密码 MySQL5.6.xx 初始化之后 root 用户密码为空,MySQL 5.7.6+ 初始化之后会为 root@localhost 用户生成随机密码。

本文分享自微信公众号 - MySQLBeginner(MySQLBeginner),作者:Wing & 吴炳锡

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-12-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 网易中间件Cetus开源啦

    网易电商近年来业务呈现爆发式增长,原架构环境下,数据库的性能和吞吐量已无法应对其带来的巨大压力,为彻底解决数据库的瓶颈,Cetus应运而生。Cetus由网易乐得...

    wubx
  • 腾讯CDB复制选型及容量评估

    CDB现在支持类型复制类型比较多,我这里选择以下几种复制类型压测对比: MySQL 5.6[异步|半同步|增强半同步]复制,5.7异步复制(当时5.7只支持异步...

    wubx
  • 优雅地使用pt-archiver进行数据归档

    最近由于业务需求,需要将公有云RDS(业务库)的大表数据归档至私有云MySQL(历史库),以缩减公有云RDS的体积和成本。

    wubx
  • MySQL主从复制与主主复制

          MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,由单台My...

    那一叶随风
  • MySQL主从复制与主主复制

    1、简介       MySQL作为世界上使用最为广泛的数据库之一,免费是其原因之一。但不可忽略的是它本身的功能的确很强大。随着技术的发展,在实际的生产环境中,...

    牛嗷嗷
  • MySQL主从复制与主主复制

    阅读目录 1、简介 2、环境说明 3、主从复制      3.1、MySQL      3.2、配置文件     3.3、开始构建主从复制       3.4、...

    庞小明
  • Uninstall all those broken versions of MySQL and re-install it with Brew on Mac Mavericks

    To remove an instance of MySQL from your macOS or OSX installation you need to d...

    九州暮云
  • mysql利用mysqld_multi部署单机多实例

    老七Linux
  • MySQL体系结构及多实例

    MySQL客户端和服务器端模型 MySQL是一个典型C/S,服务器端与客户端两部分组成 服务器端程序  mysqld mysql自带的客户端(mysql mys...

    863987322
  • 第16章、复制

    观察到服务器版本略有差异,应用在生产环境时最好将MySQL的版本保持一致。最不济也要保证前两位(5.7)版本保持一致,不要出现主(5.7)从(5.1)这种跨版本...

    幺鹿

扫码关注云+社区

领取腾讯云代金券