centos7.x编译安装mysql5.7.16

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

对于5.7以后的mysql编译安装,我遇到了不少坑,各种问题。mysql5.7.18编译openssl会出错,环境也神奇地报其他问题,即使我安装成功了,却无法以安装模式登陆mysql修改密码。

最后使用前几个版本就解决问题了。我使用的是5.7.16.


#系统安装条件

1> cmake

MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。安装最新版本即可。


2> make3.75

mysql源代码是由C和C++语言编写,在Linux下使用make对源码进行编译和构建,要求必须安装make 3.75或以上版本


3> gcc4.4.6

GCC是linux下的C语言编译工具,mysql源码编译完全由C和C++编写,要求必须安装GCC4.4.6或以上版本


4> Boost1.59.0

mysql源码中用到了C++的Boost库,要求必须安装boost1.59.0或以上版本


5> bison2.1

Linux下C/C++语法分析器


6> ncurses

字符终端处理库


官网的温馨提示:足够的可用内存 如果在编译大型源文件时遇到诸如“ 内部编译器错误 ”等问题 ,可能是内存太少。如果在虚拟机上编译,请尝试增加内存分配。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#其实这个cmake可以不用升级的。。官网说的是make···又多干活了,多折腾了
yum erase cmake
 
#下载cmake
wget -c https: //cmake .org /files/v3 .7 /cmake-3 .7.2. tar .gz
tar  zxvf cmake-3.7.2. tar .gz -C  /usr/local/src
 
#下载boost
wget -c 
mkdir  -p  /usr/local/boost
cp  boost_1_59_0. tar .gz  /usr/local/boost
 
#下载mysql5.7.16
wget -c  
tar  -zxf  mysql-5.7.16. tar .gz -C  /usr/local/src
 
yum  install  -y apr* autoconf automake bison  bzip2  bzip2 * cloog-ppl  cpp curl curl-devel fontconfig fontconfig-devel freetype freetype* freetype-devel gcc gcc-c++ gtk+-devel gd gettext gettext-devel glibc kernel kernel-headers keyutils keyutils-libs-devel krb5-devel libcom_err-devel libpng libpng-devel libjpeg* libsepol-devel libselinux-devel libstdc++-devel libtool* libgomp libxml2 libxml2-devel libXpm* libxml*?libXaw-devel libXmu-devel libtiff libtiff*  make  mpfr ncurses* ntp openssl openssl-devel patch pcre-devel perl php-common php-gd policycoreutils telnet t1lib t1lib* nasm nasm* wget zlib-devel
1
2
3
4
5
6
7
#编译安装cmkae
 
cd  /usr/local/src/cmake-3 .7.2
. /configure
make
make  install
ln  -sf  /usr/local/bin/cmake  /usr/bin/cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#安装mysql数据库
#添加mysql组
groupadd mysql 
#创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
useradd  -g mysql mysql -s  /bin/false 
#创建MySQL数据库存放目录
mkdir  -p  /data/mysql 
#设置MySQL数据库存放目录权限
chown  -R mysql:mysql  /data/mysql 
#创建MySQL安装目录
mkdir  -p  /usr/local/mysql 
cd  /usr/local/src/mysql-5 .7.18
mkdir  bld
cd  bld
cmake .. -DCMAKE_INSTALL_PREFIX= /usr/local/mysql  -DMYSQL_DATADIR= /data/mysql  -DWITH_INNOBASE_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EMBEDDED_SERVER=OFF -DWITH_BOOST= /usr/local/boost
 
make  -j ` grep  processor  /proc/cpuinfo  wc  -l`
make  install
 
#安装成功
 
#如果编译出错, 重新编译前要删除编译失败的文件,重新编译时,需要清除旧的对象文件和缓存信息。
#make clean
#rm -f CMakeCache.txt
#rm -rf /etc/my.cnf #删除系统默认的配置文件(如果默认没有就不用删除)
1
2
3
4
#生成数据库密码
cd  /usr/local/mysql  #进入MySQL安装目录
. /bin/mysqld  --user=mysql --initialize --basedir= /usr/local/mysql  --datadir= /data/mysql  #生成mysql系统数据库 --initialize表示默认生成密码, --initialize-insecure 表示不生成密码, 密码为空。
##2017-07-05T02:52:50.934379Z 1 [Note] A temporary password is generated for root@localhost: x5fujvwK25:y
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#设置开机启动
cp  /usr/local/mysql/support-files/my-default .cnf  /usr/local/mysql/my .cnf
ln  -s  /usr/local/mysql/my .cnf  /etc/my .cnf  #添加到/etc目录的软连接
cp  /usr/local/mysql/support-files/mysql .server  /etc/rc .d /init .d /mysqld  #把Mysql加入系统启动
chmod  755  /etc/init .d /mysqld  #增加执行权限
chkconfig mysqld on  #加入开机启动
vi  /etc/rc .d /init .d /mysqld  #编辑
basedir= /usr/local/mysql  #MySQL程序安装路径
datadir= /data/mysql  #MySQl数据库存放目录
:wq!  #保存退出
service mysqld start  #启动
vi  /etc/profile  #把mysql服务加入系统环境变量:在最后添加下面这一行
export  PATH=$PATH: /usr/local/mysql/bin
:wq!  #保存退出
source  /etc/profile  #使配置立刻生效
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#下面这两行把myslq的库文件链接到系统默认的位置,这样你在编译类似PHP等软件时可以不用指定mysql的库文件地址。
ln  -s  /usr/local/mysql/lib/mysql  /usr/lib/mysql
ln  -s  /usr/local/mysql/include/mysql  /usr/include/mysql
mkdir  /var/lib/mysql  #创建目录
ln  -s  /tmp/mysql .sock  /var/lib/mysql/mysql .sock  #添加软链接
mysql_secure_installation  #修改Mysql密码,输入之前生成的密码回车,根据提示操作。
Press y|Y  for  Yes, any other key  for  No: y  #是否安装密码安全插件?选择y
There are three levels of password validation policy:  #有以下几种密码强度选择
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed  case , and special characters
STRONG Length >= 8, numeric, mixed  case , special characters and dictionary  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0  #选择0,只要8位数字即可,选1要有大写,小写,特殊字符等
UNINSTALL PLUGIN validate_password ;  #卸载密码强度插件
use mysql;
update mysql.user  set  authentication_string=password( '123456' ) where user= 'root'  #登录mysql控制台修改
ALTER USER  'root' @ 'localhost'  IDENTIFIED WITH mysql_native_password AS  '123456' #修改密码
1
2
3
4
5
#上面登陆mysql控制台和修改密码太过麻烦了,使用下面一条命令即可
#授权root远程访问,密码为root
mysql -uroot -proot
GRANT ALL PRIVILEGES ON *.* TO  'root' @ '%'  IDENTIFIED BY  'root'  WITH GRANT OPTION;
FLUSH PRIVILEGES;



附官网编译安装mysql步骤

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Preconfiguration setup
shell> groupadd mysql
shell>  useradd  -r -g mysql -s  /bin/false  mysql
# Beginning of source-build specific instructions
shell>  tar  zxvf mysql-VERSION. tar .gz
shell>  cd  mysql-VERSION
shell>  mkdir  bld
shell>  cd  bld
shell> cmake ..
shell>  make
shell>  make  install
# End of source-build specific instructions
# Postinstallation setup
shell>  cd  /usr/local/mysql
shell>  chown  -R mysql .
shell>  chgrp  -R mysql .
shell> bin /mysql_install_db  --user=mysql     # Before MySQL 5.7.6
shell> bin /mysqld  --initialize --user=mysql  # MySQL 5.7.6 and up
shell> bin /mysql_ssl_rsa_setup               # MySQL 5.7.6 and up
shell>  chown  -R root .
shell>  chown  -R mysql data
shell> bin /mysqld_safe  --user=mysql &
# Next command is optional
shell>  cp  support-files /mysql .server  /etc/init .d /mysql .server


附网上的参数配置参考,但是我使用网友这个编译安装是不成功的。这里只是为了参考他备注的参数,备注参数感觉还是可以的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#
  cmake \
-DWITH_BOOST= /usr/local/boost_1_59_0  \                  [boost目录]
-DCMAKE_INSTALL_PREFIX= /usr/local/mysql   \              [MySQL安装的根目录]
-DMYSQL_DATADIR= /mydata/mysql/data   \                   [MySQL数据库文件存放目录]
-DSYSCONFDIR= /etc  \                                     [MySQL配置文件所在目录]
-DMYSQL_USER=mysql \                                    [MySQL用户名]      
-DWITH_MYISAM_STORAGE_ENGINE=1 \                        [MySQL的数据库引擎]
-DWITH_INNOBASE_STORAGE_ENGINE=1 \                      [MySQL的数据库引擎]
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \                       [MySQL的数据库引擎]
-DWITH_MEMORY_STORAGE_ENGINE=1 \                        [MySQL的数据库引擎]
-DWITH_READLINE=1 \                                     [MySQL的readline library]
-DMYSQL_UNIX_ADDR= /var/run/mysql/mysql .sock \           [MySQL的通讯目录]
-DMYSQL_TCP_PORT=3306 \                                 [MySQL的监听端口]
-DENABLED_LOCAL_INFILE=1 \                              [启用加载本地数据]
-DENABLE_DOWNLOADS=1 \                                  [编译时允许自主下载相关文件]
-DWITH_PARTITION_STORAGE_ENGINE=1  \
-DEXTRA_CHARSETS=all \                                  [使MySQL支持所有的扩展字符]
-DDEFAULT_CHARSET=utf8 \                                [设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci \                   [设置默认字符校对]
-DWITH_DEBUG=0 \                                        [禁用调试模式]
-DMYSQL_MAINTAINER_MODE=0 \
-DWITH_SSL:STRING=bundled \                             [通讯时支持ssl协议]
-DWITH_ZLIB:STRING=bundled                              [允许使用zlib library]



#

文档参考:https://dev.mysql.com/doc/refman/5.7/en/source-installation.html

支持平台 https://www.mysql.com/support/supportedplatforms/database.html




本文转自 yanconggod 51CTO博客,原文链接:http://blog.51cto.com/yanconggod/1945644
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
安全 关系型数据库 MySQL
CentOS7仅安装部署MySQL80客户端
通过上述步骤,你可以在CentOS 7上成功安装并配置MySQL 8.0客户端。这个过程确保你能够使用MySQL客户端工具连接和管理远程的MySQL数据库,而不需要在本地安装MySQL服务器。定期更新MySQL客户端可以确保你使用的是最新的功能和安全修复。
126 16
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。通过具体案例,读者可以了解如何准备环境、下载源码、编译安装、配置服务及登录 MySQL。编译源码安装虽然复杂,但提供了更高的定制性和灵活性,适用于需要高度定制的场景。
191 3
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。
本文介绍了在 CentOS 7 中通过编译源码安装 MySQL 数据库的详细步骤,并与使用 RPM 包安装进行了对比。内容涵盖准备工作、下载源码、编译安装、配置服务、登录设置及实践心得,帮助读者根据需求选择最适合的安装方法。
202 2
|
3月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
288 2
|
4月前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置服务等,并与使用 RPM 包安装进行了对比,帮助读者根据需求选择合适的方法。编译源码安装虽然复杂,但提供了更高的定制性和灵活性。
324 2
|
16天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
2天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
65 42
|
20天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
157 0
|
2月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
67 3
|
2月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
106 3