千家信息网

在CentOS 7上源码编译安装MySQL 5.7

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,1.系统环境[root@szlinux02 ~]# uname -r3.10.0-514.el7.x86_64[root@szlinux02 ~]# cat /etc/redhat-releaseCe
千家信息网最后更新 2025年02月05日在CentOS 7上源码编译安装MySQL 5.7

1.系统环境

[root@szlinux02 ~]# uname -r

3.10.0-514.el7.x86_64


[root@szlinux02 ~]# cat /etc/redhat-release

CentOS Linux release 7.3.1611 (Core)


[root@szlinux02 ~]# rpm -qa | grep mariadb

mariadb-libs-5.5.52-1.el7.x86_64


[root@szlinux02 ~]# rpm -e --nodeps mariadb-libs    [root@szlinux02 ~]#     [root@szlinux02 ~]# yum install -y gcc gcc-c++ perl


2.安装依赖包


相关依赖包的作用

cmake:由于从 MySQL5.5 版本开始弃用了常规的 configure 编译方法,所以需要 CMake 编译器,用于设置 mysql 的编译参数。如:安装目录、数据存放目录、字符编码、排序规则等。
Boost:#从 MySQL 5.7.5 开始 Boost 库是必需的,mysql 源码中用到了 C++的 Boost 库,要求必须安装 boost1.59.0 或以上版本
GCC:是 Linux 下的 C 语言编译工具,mysql 源码编译完全由 C 和 C++编写,要求必须安装GCC
bison:Linux 下 C/C++语法分析器
ncurses:字符终端处理库


1) 安装文件准备


下载 cmake-3.8.1.tar.gz 源码发布包
http://www.cmake.org/download/

wget https://cmake.org/files/v3.8/cmake-3.8.1.tar.gz


下载 ncurses-6.0.tar.gz
ftp://ftp.gnu.org/gnu/ncurses/

wget ftp://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz


下载 m4-1.4.18.tar.gz

wget http://mirrors.kernel.org/gnu/m4/m4-1.4.18.tar.gz


下载 bison-3.0.4.tar.gz
http://ftp.gnu.org/gnu/bison/

wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz


下载 mysql-5.7.18.tar.gz

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.18.tar.gz


下载 Boost_1_59_0.tar.gz

wget https://ncu.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz



2)安装 CMAKE 及必要的软件


安装 cmake

[root@szlinux02 ~]# tar zxvf cmake-3.8.1.tar.gz   [root@szlinux02 ~]# cd cmake-3.8.1    [root@szlinux02 cmake-3.8.1]# ./bootstrap    [root@szlinux02 cmake-3.8.1]# gmake && gmake install    [root@szlinux02 cmake-3.8.1]# cmake -version    [root@szlinux02 cmake-3.8.1]# cd ~


安装m4

[root@szlinux02 ~]# tar zxvf m4-1.4.18.tar.gz   [root@szlinux02 ~]# cd m4-1.4.18    [root@szlinux02 m4-1.4.18]# ./configure    [root@szlinux02 m4-1.4.18]# make && make install    [root@szlinux02 m4-1.4.18]# cd ~


安装 bison(注:需要perl和m4支持)

[root@szlinux02 ~]# tar zxvf bison-3.0.4.tar.gz   [root@szlinux02 ~]# cd bison-3.0.4    [root@szlinux02 bison-3.0.4]# ./configure    [root@szlinux02 bison-3.0.4]# make && make install    [root@szlinux02 bison-3.0.4]# cd ~


安装 ncurses

[root@szlinux02 ~]# tar zxvf ncurses-6.0.tar.gz   [root@szlinux02 ~]# cd ncurses-6.0    [root@szlinux02 ncurses-6.0]# ./configure    [root@szlinux02 ncurses-6.0]# make && make install    [root@szlinux02 ncurses-6.0]# cd ~


安装 boost(注:MySQL 5.7.18需要的boost正确版本为boost_1_59_0)

[root@szlinux02 ~]# tar zxvf boost_1_59_0.tar.gz   [root@szlinux02 ~]# mv boost_1_59_0 /usr/local/boost


3.创建mysql用户、用户组及目录

[root@szlinux02 ~]# groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql   [root@szlinux02 ~]# mkdir /usr/local/mysql    [root@szlinux02 ~]# mkdir -p /data/mysql


4.预编译

[root@szlinux02 ~]# tar zxvf mysql-5.7.18.tar.gz    [root@szlinux02 ~]# cd mysql-5.7.18    [root@szlinux02 mysql-5.7.18]#cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \    -DMYSQL_DATADIR=/data/mysql \    -DWITH_BOOST=/usr/local/boost \    -DSYSCONFDIR=/etc \    -DWITH_INNOBASE_STORAGE_ENGINE=1 \    -DWITH_PARTITION_STORAGE_ENGINE=1 \    -DWITH_FEDERATED_STORAGE_ENGINE=1 \    -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \    -DWITH_MYISAM_STORAGE_ENGINE=1 \    -DENABLED_LOCAL_INFILE=1 \    -DENABLE_DTRACE=0 \    -DDEFAULT_CHARSET=utf8mb4 \    -DDEFAULT_COLLATION=utf8mb4_general_ci \    -DWITH_EMBEDDED_SERVER=OFF


5.编译安装

[root@szlinux02 mysql-5.7.18]# make -j `grep processor /proc/cpuinfo | wc -l`   [root@szlinux02 mysql-5.7.18]# make install

-j 参数表示根据 CPU 核数指定编译时的线程数,可以加快编译速度。默认为 1 个线程编译。


6.设置权限并初始化 MySQL 系统授权表

[root@szlinux02 mysql-5.7.18]# cd /usr/local/mysql   [root@szlinux02 mysql]# chown -R mysql:mysql .    [root@szlinux02 mysql]# mkdir temp    [root@szlinux02 mysql]# chmod 777 ./temp    [root@szlinux02 mysql]# cd /data/mysql    [root@szlinux02 mysql]# chown -R mysql:mysql .


MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库

./bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql


5.7.6之后版本初始系统数据库脚本

[root@szlinux02 mysql]# cd /usr/local/mysql    [root@szlinux02 mysql]# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql


注意:
MySQL之前版本mysql_install_db是在mysql_basedir/script下,MySQL 5.7直接放在了mysql_basedir/bin目录下。
"--initialize"已废弃,生成一个随机密码(~/.mysql_secret)
"--initialize-insecure"不会生成密码
"--datadir"目录下不能有数据文件

[root@szlinux02 mysql]# ./bin/mysql_ssl_rsa_setup


7.创建配置文件

[root@szlinux02 mysql]# cat > /etc/my.cnf << EOF


[client]
port=3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci

skip-external-locking
skip-name-resolve

user=mysql
port=3306
basedir=/usr/local/mysql
datadir=/data/mysql
tmpdir=/usr/local/mysql/temp
# server_id = .....
socket=/usr/local/mysql/mysql.sock
log-error=/usr/local/mysql/logs/mysql_error.log
pid-file=/usr/local/mysql/mysql.pid
open_files_limit=10240
back_log=600
max_connections=500
max_connect_errors=6000
wait_timeout=605800
#open_tables=600
#table_cache = 650
#opened_tables = 630

max_allowed_packet=32M
sort_buffer_size=4M
join_buffer_size=4M
thread_cache_size=300
query_cache_type=1
query_cache_size=256M
query_cache_limit=2M
query_cache_min_res_unit=16k

tmp_table_size=256M
max_heap_table_size=256M

key_buffer_size=256M
read_buffer_size=1M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M

lower_case_table_names=1

default-storage-engine=INNODB

innodb_buffer_pool_size=2G
innodb_log_buffer_size=32M
innodb_log_file_size=128M
innodb_flush_method=O_DIRECT
#####################
thread_concurrency=32
long_query_time=2
slow-query-log=on
slow-query-log-file=/usr/local/mysql/logs/mysql-slow.log

[mysqldump]
quick
max_allowed_packet=32M

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
EOF


8.配置MySQL服务

[root@szlinux02 mysql]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld   [root@szlinux02 mysql]# chkconfig --add mysqld    [root@szlinux02 mysql]# chkconfig mysqld on


9.启动服务

[root@szlinux02 mysql]# service mysqld start   [root@szlinux02 mysql]# netstat -anpt | grep mysqld


10. 配置MySQL环境变量

[root@szlinux02 mysql]# echo -e '\n\nexport PATH=/usr/local/mysql/bin:$PATH\n' >> /etc/profile && source /etc/profile


11.设置数据库root用户密码

[root@szlinux02 mysql]# ./bin/mysql_secure_installation


12.创建其他MySQL数据库用户

[root@szlinux02 mysql]# mysql -uroot -p   mysql> CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;    mysql> grant all privileges on testdb.* to 'ryanxu'@'%' identified by 'ABCabc123!@#';    mysql> flush privileges;    myqsl> exit

错误汇总:

1.如果中途编译失败了,需要删除cmake生成的预编译配置参数的缓存文件和make编译后生成的文件,再重新编译。

[root@szlinux02 mysql-5.7.18]# make clean    [root@szlinux02 mysql-5.7.18]# rm -f CMakeCache.txt


2.如果报错

make[2]: *** [libmysqld/examples/mysql_client_test_embedded] 错误 1
make[1]: *** [libmysqld/examples/CMakeFiles/mysql_client_test_embedded.dir/all] 错误 2

加上

-DWITH_EMBEDDED_SERVER=OFF



编译 数据 版本 文件 目录 数据库 用户 系统 配置 源码 参数 密码 错误 生成 字符 环境 线程 脚本 C++ 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库是干嘛用的 软件开发工具分类 本地网络技术厂家供应 华为售后服务器打几折 金铲铲之战一个服务器有多少人 达内教育网络安全工程师怎么样 2019年网络安全员 计算机网络技术女生学习的多吗 sql数据库相关面试知识点 筛选命令下怎么添加数据库 广州软件开发公司电话 微信为什么一直要修复数据库 广东综合软件开发销售价格 饥荒联机版服务器模组怎么删除 软件开发版本中临时版本编号 金华市恒信网络技术工程有限公司 车载电脑软件开发 达利集团网络安全岗位 网络技术专业属于什么专业 新罗区露品晟网络技术工作室 中国航油网络安全 搞软件开发一般工资多少 学校网络安全从我做起作文 基于网络技术的改进港口船闸 软件开发外包公司诈骗 如何删除游戏里的服务器的角色 烽火通信的服务器架构 数据库数据超出长度怎么设置 数据库中的水平和垂直分解 德勤 网络安全法
0