1:官网下载source code源码安装文件
https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.20.tar.gz

  

2:安装准备

先看一下文件和路径:

[root@16-31 mysql]# pwd
/home/mysql
[root@16-31 mysql]# ls
mysql-boost-5.7.20.tar.gz

  

我们看一下官网给出的源码安装需要的条件:

CMake, which is used as the build framework on all platforms. CMake can be downloaded from http://www.cmake.org.

A good make program. Although some platforms come with their own make implementations, it is highly recommended that you use GNU make 3.75 or higher. It may already be available on your system as gmake. GNU make is available from http://www.gnu.org/software/make/.

A working ANSI C++ compiler. See the description of the FORCE_UNSUPPORTED_COMPILER. option for some guidelines.

The Boost C++ libraries are required to build MySQL (but not to use it). Boost 1.59.0 must be installed. To obtain Boost and its installation instructions, visit the official site. After Boost is installed, tell the build system where the Boost files are located by defining the WITH_BOOST option when you invoke CMake. For example:

shell> cmake . -DWITH_BOOST=/usr/local/boost_1_59_0
Adjust the path as necessary to match your installation. The ncurses library. Sufficient free memory. If you encounter problems such as “internal compiler error” when compiling large source files, it may be that you have too little memory. If compiling on a virtual machine, try increasing the memory allocation. Perl is needed if you intend to run test scripts. Most Unix-like systems include Perl. On Windows, you can use a version such as ActiveState Perl.

  

上面是官网给的例子,我们先需要下载一个Boost C++ 1.59.0(这是一组扩充C++功能的经过同行评审(Peer-reviewed)且开放源代码程序库。大多数的函数为了能够以开放源代码、封闭项目的方式运作,而授权于Boost软件许可协议(Boost Software License)之下。),下载地址:

https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download

  

接下来我们开始进行一些准备工作(安装依赖包,用户以及目录):

yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake
groupadd mysql
useradd -r -g mysql -s /bin/false -M mysql
mkdir -p /home/mysql/{data,log,tmp}
ls /home/mysql/
chown -R mysql:mysql /home/mysql/

  

3:安装

解压两个压缩文件,MySQL和Boost,然后开始进行编译安装:

[root@16-31 mysql-5.7.20]# cmake . -DCMAKE_INSTALL_PREFIX=/home/mysql -DMYSQL_DATADIR=/home/mysql/data -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DMYSQL_TCP_PORT=3306 -DMYSQL_USER=mysql -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DENABLE_DOWNLOADS=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost

  

然后进行make

make

  

这个过程时间会比较久,我这边大概两个小时的样子,然后安装:

make install

  

然后我们先把安装目录添加到环境变量中:

[root@mdw mysql]# echo "export PATH=$PATH:/home/mysql/bin">>/etc/profile
[root@mdw mysql]# source /etc/profile

  

以上步骤完成以后就是初始化数据库了:

[root@mdw datafile]# mysqld --defaults-file=/etc/my.cnf  --initialize --user='mysql' --log_error_verbosity --explicit_defaults_for_timestamp

  

OK,现在我们初始化也完成了,接下来我们配置一下我们的my.cnf文件

[client]
port = 3306
socket = /home/datafile/mysql3306/temp/mysql.sock
[mysqld]
# Skip #
skip_name_resolve = 1
skip-external-locking = 1
symbolic-links= 0 # GENERAL #
user = mysql
default_storage_engine = InnoDB
character-set-server = utf8
socket = /home/datafile/mysql3306/temp/mysql.sock
pid_file =/home/datafile/mysql3306/temp/mysqld.pid
basedir = /home/mysql
port = 3306
bind-address = 0.0.0.0
log-warnings = 2
explicit_defaults_for_timestamp = off
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#read_only=on
sql_mode=NO_ENGINE_SUBSTITUTION
# MyISAM #
key_buffer_size = 32M #size of the buffer used for index blocks#
#myisam_recover = FORCE,BACKUP # SAFETY #
max_allowed_packet = 16M
max_connect_errors = 1000000
sysdate_is_now = 1
#innodb = FORCE
#innodb_strict_mode = 1 # Replice #
server-id = 313306
relay_log = mysqld-relay-bin
gtid_mode = on
enforce-gtid-consistency
log-slave-updates = on
master_info_repository =TABLE
relay_log_info_repository =TABLE
# rpl_semi_sync_master_enabled=1
# rpl_semi_sync_master_timeout=200 # 0.2 second # DATA STORAGE #
datadir = /home/datafile/mysql3306/data/
tmpdir = /home/datafile/mysql3306/temp/ # BINARY LOGGING #
log_bin =/home/datafile/mysql3306/log/mysql-bin
max_binlog_size = 1000M
binlog_format = row
expire_logs_days = 7
# sync_binlog = 1 # CACHES AND LIMITS #
tmp_table_size = 32M
max_heap_table_size = 32M
query_cache_type = 0
query_cache_size = 0
max_connections = 4000
thread_cache_size = 2048
open_files_limit = 65535
table_definition_cache = 4096
table_open_cache = 4096
sort_buffer_size = 20M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
#thread_concurrency = 24
join_buffer_size = 1M
# table_cache = 32768
thread_stack = 512k
max_length_for_sort_data = 16k # INNODB #
innodb_flush_method = O_DIRECT
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 8
innodb_stats_on_metadata = off
innodb_open_files = 8192
innodb_read_io_threads = 8
innodb_write_io_threads = 16
innodb_io_capacity = 20000
innodb_thread_concurrency = 0
innodb_lock_wait_timeout = 60
innodb_old_blocks_time=1000
innodb_use_native_aio = 1
innodb_purge_threads=1
innodb_change_buffering=all
innodb_log_file_size = 128M
innodb_log_files_in_group = 3
innodb_data_file_path = ibdata1:1024M:autoextend # LOGGING #
log_error = /home/datafile/mysql3306/log/mysql-error.log
# log_queries_not_using_indexes = 1
# slow_query_log = 1
slow_query_log_file = /home/datafile/mysql3306/log/slowlog_36215.log # TimeOut #
interactive_timeout = 30
wait_timeout = 30 [mysqldump]
quick
max_allowed_packet = 16M [mysql]
no-auto-rehash [myisamchk]
key_buffer_size = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M [mysqlhotcopy]
interactive-timeout

  

这里要说明下,就是参数要根据自己的机器配置,不能直接照抄使用,然后直接启动mysql:

mysqld_safe --defaults-file=/etc/my.cnf &

  

我们从日志中找到初始密码:

--11T06::.094646Z  [Note] A temporary password is generated for root@localhost: ,fsQ:tkik6un

登录修改密码就好了。 最后,我们将我们的编译包打包,以后可以直接拷贝使用。

4:解压使用编译压缩包

先拷贝:

scp   /home/mysql.tar  sa@172.16.16.34:/home/sa/

解压:

[root@sdw1 home]# mv mysql.tar /home/
[root@sdw1 home]# tar zxvf mysql.tar

然后我们创建MySQL相关的用户和目录以及授权等:

groupadd mysql
useradd -r -g mysql -s /bin/false -M mysql
mkdir -p /home/datafile/mysql3306/{data,log,temp}
ls /home/datafile/mysql3306
chown -R mysql:mysql /home/datafile/mysql3306
echo "export PATH=$PATH:/home/mysql/bin">>/etc/profile
source /etc/profile

  

然后使用刚才配置文件再初始化一下(要修改个别参数):

[root@sdw1 mysql3306]# mysqld --defaults-file=/etc/my.cnf  --initialize --user='mysql' --log_error_verbosity --explicit_defaults_for_timestamp
[root@sdw1 mysql3306]# mysqld_safe --defaults-file=/etc/my.cnf &

然后找到密码初始化搞定。

MySQL5.7.20编译安装的更多相关文章

  1. [转帖]MySQL5.7.20编译安装

    MySQL5.7.20编译安装 尝试一下 想着 我在arm上面最终安装失败了. https://www.cnblogs.com/shengdimaya/p/8027507.html 1:官网下载sou ...

  2. mysql5.7.11编译安装以及修改root密码小结

    系统是cenos6.7 64位的,默认mysql5.7.11下载到/usr/local/src,安装目录在/app/local/mysql目录下,mysql数据放置目录/app/local/data. ...

  3. mysql-5.6.17编译安装和常见问题

    mysql-5.6.17编译安装和常见问题 以前用的是MySQL的5.1版本,且使用的是免编译的包,安装简单.最近换了5.6版本的MySQL,安装过程出现了不少问题. 1. 卸载原来版本的MySQL ...

  4. 安装MYSql Windows7下MySQL5.5.20免安装版的配置

    MySQL Windows安装包说明: 1.mysql-5.5.20-win32.msi:Windows 安装包,图形化的下一步下一步的安装. 2.mysql-5.5.20.zip,这个是window ...

  5. Mapnik 3.0.20编译安装

    1. 确定epel安装 yum install -y epel-release 2. 按照<CentOS7.2部署node-mapnik>一文中的步骤,手动安装 gcc-6.2.0 和 b ...

  6. CentOS6.5内 MySQL5.7.19编译安装

    作为博主这样的Linux菜鸟,CentOS下最喜欢的就是yum安装.但有时候因为特殊情况(例如被墙等),某些软件可能没办法直接通过yum来安装,这时候我们可以使用编译安装或者直接二进制文件安装. 本博 ...

  7. MySQL5.7 的编译安装

    转: 5.7的安装: https://www.insp.top/article/make-install-mysql-5-7 5.6的安装: https://www.chenyudong.com/ar ...

  8. mysql5.7.x 编译安装

    一.卸载mariadb [root@mysql5 ~]# rpm -qa mariadb* mariadb-libs--.el7.centos.x86_64 [root@template tools] ...

  9. mysql5.1的编译安装 ----针对第一次安装mysql的

    由于是第一次安装,不能确定你是否有安装编译和mysql所要依赖的插件,使用我是当做你最原始的安装环境.  1.安装mysql5.1的依赖包 yum install -y gcc gcc-c++ aut ...

随机推荐

  1. 关于Java的权限修饰符(public,private,protected,默认friendly)

    以前对访问修饰符总是模棱两可,让自己仔细解释也是经常说不很清楚.这次要彻底的搞清楚. 现在总结如下: 一.概括总结 各个访问修饰符对不同包及其子类,非子类的访问权限 Java访问权限修饰符包含四个:p ...

  2. Linux下mysq基础命令(二)

    1. 创建数据库相关命令: mysql> STATUS(\s) - 列出当前mysql的相关状态信息 mysql> SHOW DATABASES; - 显示数据库列表 mysql> ...

  3. Jmeter创建一个点对点的 JMS 测试计划

    创建一个点对点的 JMS 测试计划 确保所需的jar文件位于JMeter lib目录中. 如果没有,关闭JMeter,复制jar文件并重新启动JMeter. 参见详细教程 在本节中,将学习如何创建测试 ...

  4. [中英对照]INTEL与AT&T汇编语法对比

    本文首先对文章Intel and AT&T Syntax做一个中英文对照翻译,然后给出一个简单的例子,再用gdb反汇编后,对INTEL与AT&T的汇编语法进行对照从而加深理解. Int ...

  5. angular2自学笔记(二)---路由、服务等八大主要构造块

    angular的思想:总是把数据访问工作委托给一个支持性服务类. Angular 应用的:用 Angular 扩展语法编写 HTML 模板, 用组件类管理这些模板,用服务添加应用逻辑, 用模块打包发布 ...

  6. webstorm中sass编译时目录或内容包含中文字符报错

    ruby版本:ruby 2.3.1p112 (2016-04-26 revision 54768) [x64-mingw32] sass版本:Sass 3.4.22 (Selective Steve) ...

  7. js和jQuery获取各种屏幕或文档的高度和宽度

    1.jQuery获取文档或屏幕的高度 console.log($(window).height());//浏览器页面当前屏幕可见区域的高度 console.log($(document).height ...

  8. synchronized同步锁

    在多线程的情况下,由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问.由于 ...

  9. webpack工具、Vue、react模块化

    一.为什么要有webpack print('hello,world') fsdl fdsf title2 title3 引用 斜体字 加粗 有序列表1 有序列表2 无序列表1 无序列表2 行内code ...

  10. Java调用TSC打印机进行打印

    最近项目中用到了打印机,最开始的完全不懂,现在弄好了,所以做了总结,该篇包括后台的调用打印(两种方式)跟前端的js的打印,但是只有IE现在支持打印,而且如果想远程连接打印机,二维码的生成和直接由打印机 ...