首页 - 技术 - Centos7 mysql-community-5.7.11编译安装

Centos7 mysql-community-5.7.11编译安装

2023-09-30 22:29
-->

安装环境

[root@localhost ~]# cat /etc/centos-release
CentOS Linux 版本 7.0.1406(核心)

0x01 准备工作

1。从mysql官网下载mysql-community-5.7.11-1.el7.src.rpm源码包

rpm -ih mysql-community-5.7.11-1.el7.src.rpm 将在用户目录中生成 rpmbuild。您可以从 SOURCES 文件夹中获取源代码 mysql-5.7.11.tar.gz 并解压。源码目录已经准备好安装了

2。因为mysql需要使用cmake编译,直接从yum光盘的源码中找到cmake

[root@localhost ~]# yum info cmake

名称:cmake
架构:x86_64
版本:2.8.11
发布:4.el7
大小:6.7 M

3。准备开发环境 yum groupinstall 附加开发。之前版本的 yum groupinstall 开发工具包含两个软件包组:开发工具和开发库。我这里没有安装它们,因为我只需要 gcc 和 gcc-c++

0x02 mysql编译选项

一些常用的编译选项

-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库,批量导入数据]
-DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock          [MySQL通讯目录]
-DWITH-LIBWRAP=0                         [是否支持libwrap] 
-DENABLE_DOWNLOADS=1                       [编译时允许独立下载相关文件]
-DDEFAULT_CHARSET=utf8                      [设置默认字符集为utf8]
-DDEFAULT_COLLATION=utf8_general_ci               [设置默认排序字符集规则]
http://www.gsm-guard.net/doc/refman/5.7/en/source-configuration-options.html 官方文档编译选项说明

0x03安装过程(gcc / boost_1_59_0 / CURSES_LIBRARY)

[root@localhost ~]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/mymnt/sqldata -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1  -DWITH_MEMORY_STORAGE_ENGINE= 1 -DWITH_READLINE=1 - DMYSQL_UNIX_ADDR=/var/run/mysql/mysql.sock -DWITH-LIBWRAP=0 -DENABLE_DOWNLOADS=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

-- 运行 cmake 版本 2.8.11
-- 找不到 Git(缺少:GIT_EXECUTABLE)
-- 使用 MAX_INDEXES = 64U 进行配置
-- C 编译器标识未知
- - CXX 编译器标识未知
CMake 错误:您的 C 编译器:未找到“CMAKE_C_COMPILER-NOTFOUND”。请将 CMAKE_C_COMPILER 设置为有效的编译器路径或名称。
CMake 错误:您的 CXX 编译器:未找到“CMAKE_CXX_COMPILER-NOTFOUND”。请将 CMAKE_CXX_COMPILER 设置为有效的编译器路径或名称。
cmake/os/Linux.cmake 处的 CMake 错误:41 (MESSAGE):
不支持的编译器!
调用堆栈(首先是最近的调用):
CMakeLists.txt:162(包括)

这是没有安装gcc和gcc-c++

[root@localhost mysql-5.7.11]# yum install gcc gcc-c++

再cmake一次

-- MySQL 5.7.11
-- 打包为:mysql-5.7.11-Linux-x86_64
-- 查找 boost/version.hpp 和
-- BOOST_INCLUDE_DIR BOOST_INCLUDE_DIR-NOTFOUND
-- LOCAL_BOOST_DIR
-- LOCAL_BOOST_ZIP
-- 找不到 boost(正确版本)。
-- MySQL 目前需要 boost_1_59_0

cmake/boost.cmake:81 处的 CMake 错误 (MESSAGE):
您可以使用 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

下载它

此 CMake 脚本将在 中寻找 boost。如果不存在,
它将为您下载并解压它(在该目录中)。

如果您位于防火墙内,您可能需要使用http代理:

导出http_proxy=http://www.gsm-guard.net:80

调用堆栈(首先是最近的调用):
cmake/boost.cmake:238 (COULD_NOT_FIND_BOOST)
CMakeLists.txt:443 (INCLUDE)

--配置不完整,出现错误!

这已经说明了你可以用-DDOWNLOAD_BOOST=1 -DWITH_BOOST=来下载。 Boost库是一个经过锤炼、可移植、并提供源代码的C++库。作为标准库的备份,它是C++的标准化。流程的引擎之一。

首先从boost官网下载这个库boost_1_59_0.tar.gz

解压后,将目录添加到-DWITH_BOOST编译选项

继续编译,错误如下

-- 找不到 Curses(缺少:CURSES_LIBRARY CURSES_INCLUDE_PATH)
cmake/readline.cmake:64 处发生 CMake 错误(消息):
未找到 Curses 库。请安装适当的软件包,

删除 CMakeCache.txt 并重新运行 cmake。在 Debian/Ubuntu 上,软件包名称为 libncurses5-dev,在 Redhat 及其衍生版本上为 ncurses-devel。
调用堆栈(首先是最近调用):
cmake/ readline.cmake:107 (FIND_CURSES)
cmake/readline.cmake:181 (MYSQL_USE_BUNDLED_EDITLINE)
CMakeLists.txt:471 (MYSQL_CHECK_EDITLINE)

此错误表示 Curses 库 yum install ncurses-devel 丢失。需要注意的是,对于每个编译错误,都必须删除 CMakeCache.txt。最后,Build文件已写入成功

CMake 警告:
项目未使用手动指定的变量:

DOWNLOAD_BOOST
WITH-LIBWRAP
WITH_MEMORY_STORAGE_ENGINE
WITH_READLINE

-- 构建文件已写入:/root/mysql-5.7.11

使用make编译大约花了两个小时,到了50%以上的时候就停留了很长一段时间。

安装

会出现一堆安装信息,安装完成

-- 安装:/usr/local/mysql/mysql-test/./cmake_install.cmake
-- 安装:/usr/local/mysql/mysql-test/./CTestTestfile.cmake
- - 最新:/usr/local/mysql/mysql-test/mtr
-- 最新:/usr/local/mysql/mysql-test/mysql-test-run
- - 安装:/usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- 最新:/usr/local/mysql/mysql-test/lib/My/SafeProcess/my_safe_process
-- 安装:/usr/local/mysql/mysql-test/lib/My/SafeProcess/www.gsm-guard.net
-- 安装:/usr/local/mysql/support-files/my-default.cnf
-- 安装:/usr/local/mysql/support-files/mysqld_multi.server
-- 安装:/usr/local/mysql/support-files/mysql-log-rotate
-- 安装: /usr/local/mysql/support-files/magic
-- 安装: /usr/local/mysql/share/aclocal/mysql.m4
-- 安装: /usr/local/mysql/support-文件/mysql.server
[root@localhost mysql-5.7.11]#

0x04安装后目录创建

socket=/var/run/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /mymnt/sqldata
socket=/var/run/mysql/mysql.sock
日志错误 = /var/log/mysql/error.log
pid 文件 = /var/log/mysql/www.gsm-guard.net

配置文件中与目录相关的部分,我们需要创建/var/run/mysql、/mymnt/sqldata、/var/log

创建mysql用户和组,并将数据目录/mymnt/sqldata和安装目录/var/run/mysql的所有者(组)更改为mysql

[root@localhost mysql]# groupadd -r mysql
[root@localhost mysql]# useradd -r -g mysql -s /sbin/nologin mysql

[root@localhost mysql]# mkdir /var/run/mysql
[root@localhost mysql]# mkdir /var/log/mysql
[root@localhost mysql]# chown mysql:mysql /var /run/mysql/
[root@localhost mysql]# chown mysql:mysql /var/log/mysql/
[root@localhost mysql]# chown mysql:mysql /mymnt/sqldata/
[root @localhost mysql]# chown -R mysql:mysql /usr/local/mysql

0x05初始化

1。 mysql-5.7版本的my.cnf文件在support-files/下没有模板文件。自己添加配置文件

2。将安装目录下的support-files/mysql.server启动脚本复制到/etc/init.d/mysqld下启动。也可以使用 [root@localhost mysql]# ./support-files/mysql.server start 临时启动

未启动时执行mysql命令会报如下错误:

[root@localhost mysql]# mysql
错误 2002 (HY000): 无法通过套接字 '/var/run/mysql/mysql.sock' 连接到本地 MySQL 服务器 (2)

3。添加环境变量以使用初始化命令export PATH=/usr/local/mysql/bin:$PATH

4。初始化

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/mymnt/sqldata

0x06 其他

1,mysqld_safe

  mysqld和mysqld_safe都可以启动mysql。直接运行mysqld程序来启动MySQL服务的情况很少见。 mysqld_safe脚本将在启动后继续监视MySQL服务器的运行情况,如果崩溃则重新启动它。

我们可以发现这是一个shell脚本。推荐使用 mysqld_safe 在 Unix 和 NetWare 中启动 mysqld 服务器。 mysqld_safe 添加了一些安全功能,例如发生错误时重新启动服务器以及将运行时信息写入错误日志文件。

[root@localhost mysql]# file bin/mysqld
bin/mysqld:ELF 64 位 LSB 可执行文件,x86-64,版本 1 (GNU/Linux),动态链接(使用共享库),适用于 GNU /Linux 2.6.32,BuildID[sha1]=0x772828c9d330090391cd89dbe699f041a378944d,未剥离
[root@localhost mysql]# file bin/mysqld_safe
bin/mysqld_safe:POSIX shell 脚本,ASCII 文本可执行文件

2、mysql_secure_installation

MySQL 安全配置向导,运行 mysql_secure_installation 会进行多项设置:
a) 设置 root 用户的密码
b) 删除匿名帐户
c) 取消 root 用户的远程登录
d) 删除测试库以及测试库的访问权限
e) 刷新授权表,使修改生效
通过这些设置,可以提高mysql库的安全性。建议在生产环境,mysql安装完成后一定要运行一次mysql_secure_installation

3。为了方便其他程序调用(如php),将MySQL数据库的动态链接库目录添加到系统链接库中,echo "/usr/local/mysql/lib" > /etc/ld.so.conf。 d/mysql.conf

0x07 附:my.cnf 示例

百度到一个mysql配置文件示例:

  • 作者:vfhky
# 有关如何更改设置的建议,请参阅
# http://www.gsm-guard.net/doc/refman/5.7/en/server-configuration-defaults.html
# *** 不要编辑此文件。这是一个模板,将被复制到
# *** 安装时的默认位置,如果您
,将会被替换 # *** 升级到较新版本的 MySQL。 [客户]
端口=3306
套接字=/var/run/mysql/mysql.sock [mysqld] # 删除前导 # 并设置为最重要数据的 RAM 量
# MySQL 中的缓存。从专用服务器总 RAM 的 70% 开始,其他为 10%。
# innodb_buffer_pool_size = 128M # 删除前导 # 以打开非常重要的数据完整性选项:日志记录
# 备份之间二进制日志的更改。
# 日志_bin # 这些是常用设置,去掉#,根据需要设置。
用户=mysql
basedir = /usr/local/mysql
数据目录 = /mydata/mysql/data
端口=3306
服务器 ID = 1
套接字=/var/run/mysql/mysql.sock 字符集服务器 = utf8
日志错误 = /var/log/mysql/error.log
pid 文件 = /var/log/mysql/www.gsm-guard.net
一般日志 = 1
跳过名称解析
#跳过网络
积压日志 = 300 最大连接数 = 1000
最大连接错误数 = 6000
open_files_limit = 65535
表_open_cache = 128
最大允许数据包 = 4M
binlog_cache_size = 1M
最大堆表大小 = 8M
tmp_表_大小 = 16M 读取缓冲区大小 = 2M
read_rnd_buffer_size = 8M
排序缓冲区大小 = 8M
join_buffer_size = 28M
密钥缓冲区大小 = 4M 线程缓存大小 = 8 查询缓存类型 = 1
query_cache_size = 8M
查询缓存限制 = 2M ft_min_word_len = 4 log_bin = mysql-bin
binlog_format = 混合
过期日志天数 = 30 性能架构 = 0
时间戳的显式默认值 #lower_case_table_names = 1 myisam_sort_buffer_size = 8M
myisam_repair_threads = 1 交互超时= 28800
等待超时= 28800 # 删除前导 # 以设置主要对报告服务器有用的选项。
# 服务器默认设置对于事务和快速 SELECT 来说更快。
# 根据需要调整大小,尝试找到最佳值。
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M # 建议禁用符号链接以防止各种安全风险
符号链接=0 # 推荐在标准 MySQL 设置中
sql_mode=NO_ENGINE_SUBSTITUTION、NO_AUTO_CREATE_USER、STRICT_TRANS_TABLES [mysqldump]

最大允许数据包 = 16M [myisamchk]
key_buffer_size = 8M
排序缓冲区大小 = 8M
读取缓冲区 = 4M
write_buffer = 4M -->