生成定制的 mysql的rpm 包
mysql 5.6
centos 6.8 minimal
下载 src.rpm 后缀的包
安装所需软件
yum install rpm-build
切换到普通用户
su - jin
创建rmpbuild目录
mkdir rembuild
解压rpm包文件
rpm -ivh MySQL-5.6.33-1.el6.src.rpm
进入 rpmbuild 目录
vim SPECS/mysql.spec
找到 Build full release ,在修改自定义的编译参数,这里以修改数据库支持的字符集为例,如下
${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \
-DWITH_INNODB_MEMCACHED=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \
-DFEATURE_SET="%{feature_set}" \
%{ssl_option} \
-DCOMPILATION_COMMENT="%{compilation_comment_release}" \
-DMYSQL_SERVER_SUFFIX="%{server_suffix}"
改成下面的
${CMAKE} ../%{src_dir} -DBUILD_CONFIG=mysql_release -DINSTALL_LAYOUT=RPM \
-DWITH_INNODB_MEMCACHED=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DMYSQL_UNIX_ADDR="%{mysqldatadir}/mysql.sock" \
-DFEATURE_SET="%{feature_set}" \
%{ssl_option} \
-DCOMPILATION_COMMENT="%{compilation_comment_release}" \
-DMYSQL_SERVER_SUFFIX="%{server_suffix}" \
-DWITH_EXTRA_CHARSETS=all
或者直接修改最上面变量声明的位置,这里以修改运行用户为例,
%global mysqld_user mysql
修改为
%global mysqld_user mysql1
构建 rpm 包
cd SPECS/
rpmbuild -bb mysql.spec
报错了
gperf is needed by MySQL-5.6.33-1.linux_glibc.x86_64
time is needed by MySQL-5.6.33-1.linux_glibc.x86_64
zlib-devel is needed by MySQL-5.6.33-1.linux_glibc.x86_64
缺什么安装即可
sudo yum install -y gperf time zlib-devel
重新构建
rpmbuild -bb mysql.spec
报错
CMake Error at cmake/build_configurations/mysql_release.cmake:46 (MESSAGE):
aio is required on Linux, you need to install the required library:
Debian/Ubuntu: apt-get install libaio-dev
RedHat/Fedora/Oracle Linux: yum install libaio-devel
SuSE: zypper install libaio-devel
If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
Call Stack (most recent call first):
CMakeLists.txt:134 (INCLUDE)
按照提示执行即可
sudo yum install libaio-devel
重新构建
rpmbuild -bb mysql.spec
报了个这个错
-DWITH_EXTRA_CHARSETS=all: command not found
犯二了,加的选项没加 \
重新构建
rpmbuild -bb mysql.spec
出现以下的,就ok了
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-server-5.6.33-1.linux_glibc.x86_64.rpm
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-client-5.6.33-1.linux_glibc.x86_64.rpm
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-test-5.6.33-1.linux_glibc.x86_64.rpm
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-devel-5.6.33-1.linux_glibc.x86_64.rpm
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-shared-5.6.33-1.linux_glibc.x86_64.rpm
Wrote: /home/jin/rpmbuild/RPMS/x86_64/MySQL-embedded-5.6.33-1.linux_glibc.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.0k7Cbk
+ umask 022
+ cd /home/jin/rpmbuild/BUILD
+ cd mysql-5.6.33
+ '[' /home/jin/rpmbuild/BUILDROOT/MySQL-5.6.33-1.linux_glibc.x86_64 '!=' / ']'
+ '[' -d /home/jin/rpmbuild/BUILDROOT/MySQL-5.6.33-1.linux_glibc.x86_64 ']'
+ rm -rf /home/jin/rpmbuild/BUILDROOT/MySQL-5.6.33-1.linux_glibc.x86_64
+ exit 0
测试能否安装
yum install MySQL-server-5.6.33-1.linux_glibc.x86_64.rpm
报错
file /usr/share/mysql/czech/errmsg.sys from install of MySQL-server-5.6.33-1.linux_glibc.x86_64 conflicts with file from package mysql-libs-5.1.73-7.el6.x86_64
是已经安装的 mysql-libs 的版本太低,先删除,在安装
yum remove mysql-libs
yum install MySQL-server-5.6.33-1.linux_glibc.x86_64.rpm
复制配置文件
scp /usr/share/mysql/my-default.cnf /etc/my.cnf
因为在生成 rpm 包的时候,把默认的用户和用户组改成了 mysql1 , 所以在 yum 安装的时候创建了 mysql 的用户,直接启动的时候还是会以 mysql 的身份启动,所以在 my.cnf 中手动指定下 用户
在
[mysqld]
下加一行
user=mysql1
启动
service mysql start
看到下面的就 ok 了
Starting MySQL.. SUCCESS!
安装客户端
yum install MySQL-client-5.6.33-1.linux_glibc.x86_64.rpm
在这里查看默认密码
cat /root/.mysql_secret
登录,登录之后需要修改密码才能做其他操作
mysql -u root -p
设置密码
SET PASSWORD = PASSWORD('123456');
允许远程登录
update user set password=password('123456') where user='root';
update user set host='%' where user='root' and host='localhost';
flush privileges;