MySQL是最流行的关系型数据库管理系统之一。本文就来带大家自定义版本编译安装MySQL。

  • 使用系统:CentOS 7.9.2009

MySQL安装

此为MySQL的自定义版本的源码编译安装教程(测试安装的数据版本为MySQL-5.6.50),若需要其他的安装版本可前往官方下载:https://downloads.mysql.com/archives/community/,同时若MySQL源码中用到了C++的Boost库,则要求必须安装boost1.59.0或以上版本,可前往官方下载安装:https://sourceforge.net/projects/boost/files/boost/

本文MySQL的安装目录为:/usr/local/mysql/etc

1、安装所需依赖库

yum -y install gcc gcc-c++ ncurses ncurses-devel bison libgcrypt perl make cmake openssl openssl-devel autoconf wget git

2、下载数据库二进制文件

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.50.tar.gz

boost为可选下载,若您的数据库包含了boost文件,可不需下载,若无则下载,命令如下:

wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

3、解压相关文件

解压数据库

tar -zxvf mysql-5.6.50.tar.gz 

解压 boost并拷贝 boost 到/usr/local/boost目录

tar -zxvf boost_1_59_0.tar.gz
cp -r boost_1_59_0 /usr/local/boost

4、添加MySQL用户及用户组

groupadd mysql
useradd -r -g mysql -s /sbin/nologin -M mysql

5、新建MySQL安装所需要目录和创建数据存储目录

mkdir -p /usr/local/mysql /usr/local/mysql/{data,logs,pids}
mkdir -p /var/lib/mysql

6、编译安装MySQL

cd mysql-5.6.50

# 预编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/usr/local/mysql/etc \
-DMYSQL_DATADIR=/var/lib/mysql \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DENABLE_DOWNLOADS=1

#注:若安装需要boost库,可在后面追加一个 -DWITH_BOOST=/usr/local/boost,
若您的数据库含有boost库,则将其替换成 -DWITH_BOOST=./boost即可

make -j `grep processor /proc/cpuinfo | wc -l`
make install

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

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

cd mysql-5.6.50
rm -f CMakeCache.txt
make clean

7、设置权限

cd /usr/local/mysql
chown -R mysql:mysql .
chown -R mysql:mysql /var/lib/mysql

8、将MySQL添加到环境变量

vim /etc/profile

# 添加如下内容
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
source /etc/profile

9、配置参数及参数优化

cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
vim /etc/my.cnf

#修改为如下内容:
[mysqld]
port=3306
bind-address=0.0.0.0
datadir=/var/lib/mysql
basedir=/usr/local/mysql
socket=/tmp/mysql.sock
character_set_server = utf8mb4
collation-server = utf8mb4_general_ci
default_storage_engine = InnoDB
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
performance_schema_max_table_instances = 400
table_definition_cache = 400
key_buffer_size = 32M
tmp_table_size = 32M
max_connections = 500
max_connect_errors = 100
open_files_limit = 65535
innodb_data_file_path=ibdata1:12M;ibdata2:10M:autoextend
innodb_buffer_pool_size=256M
innodb_log_buffer_size=32M
innodb_log_file_size=128M
#innodb_flush_method=O_DIRECT
#innodb_force_recovery=1

skip-external-locking
#skip-name-resolve


[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/usr/local/mysql/pids/mysqld.pid

symbolic-links=0

[client]
socket=/tmp/mysql.sock
port=3306

[mysql]
port=3306
socket=/tmp/mysql.sock

[mysqldump]
quick
max_allowed_packet = 500M

10、初始化系统数据库

cd /usr/local/mysql

# 注意:MySQL 5.7.6之前的版本执行这个脚本初始化系统数据库(本文使用此方式初始化)
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

# 5.7.6之后版本初始系统数据库脚本
./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/var/lib/mysql

# 注意:如果使用–initialize参数初始化系统数据库之后,会在~/.mysql_secret文件中生成root用户的一个临时密码,同时也在初始化日志中打印出来了

# 不管哪个初始化时无ERROR报错方为初始化成功!!!

MySQL设置自启动

1、设置开机自启

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

# 添加到系统服务
chkconfig --add mysqld

# 开机启动
chkconfig mysqld on

启动服务相关命令

# 启动mysql服务
service mysqld start

# 停止mysql服务
service mysqld stop

# 重新启动mysql服务
service mysqld restart

启动成功后初始化数据库操作:/usr/local/mysql/bin/mysql_secure_installation

接下来的操作可看博文:https://www.yfriend.xyz/886.html中的MySQL相关部分进行数据库的初始化,权限及用户的操作可看博文:https://www.yfriend.xyz/917.html

2、后续问题及解决

  • 启动数据库时报错mysqld_safe error: log-error set to '/var/log/mysqld.log', however file don't exists. Create writable for user 'mysql'.

解决:日志文件的缺失导致的,创建一个该文件并即可。命令如下:

touch /var/log/mysqld.log

MySQL5.6添加sys库教程

MySQL5.7引入的sys库可以看作是由information_schema引出的一套视图,更便于获取一些性能数据。
1、从github上克隆项目到本地

cd ~
yum install -y git
git clone https://github.com/mysql/mysql-sys.git

2、导入sys库

cd mysql-sys
mysql -u root -p -S /tmp/mysql.sock < ./sys_56.sql
文章名: 《CentOS编译安装MySQL》

文章链接:https://www.yfriend.xyz/959.html

除特别注明外,文章均为深度博客所创,转载时请注明本文出处及文章链接
Last modification:February 15th, 2021 at 10:08 pm
如果觉得我的文章对你有用,请随意赞赏