生成定制的 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;

标签: linux, mysql

添加新评论