前言
本文适合对于 mysql 有调试需求、或者在国产化平台上通过源码方式安装 mysql 数据库的场景;并且标题虽然指明是 mysql 5.6 版本,5.7 版本也基本适用,只是 cmake 编译参数与初始化数据库时稍有不同。
文中安装过程较为精简,希望对于阅读此文者有所帮助之外,还能适当加以思考;另外,由于本文是个人实践过程所得,纯粹是为了记录,文中如果出现错误之处,或者实践过程中发现问题,还请联系本人修正。
mysql 5.6 源码编译安装
一、mysql 源码编译需要依赖 ncurses 库,需要检查是否已安装 libncurses-devel 包,如果未安装,可以使用 yum 进行安装。此次 Kylin Linux 使用源码包编译安装:
wget http://ftp.gnu.org/gnu/ncurses/ncurses-5.9.tar.gz
tar -zxvf ncurses-5.9.tar.gz
cd ncurses-5.9/
# 一般 linux 系统,--build 参数指定为 x86_64 即可
# 国产系统中,hostnamectl 可以查看CPU架构,如果是 arm64/aarch64,则需要使用以下命令
./configure --with-shared --without-debug --without-ada --enable-overwrite --build=arm-gnu-linux
# 或者是下面这个命令:
# ./configure --with-normal --without-debug --without-ada --enable-overwrite -build=arm
make -j4
make install
# 注意:如果编译过程中出错,则可能需要修改 curses.tail 文件中带 mouse_trafo 的行,去掉注释
二、mysql 一般用 cmake 编译较为方便,所以先源码编译安装 cmake:
wget https://github.com/Kitware/CMake/releases/download/v3.14.6/cmake-3.14.6.tar.gz
tar -zxvf cmake-3.14.6.tar.gz
cd cmake-3.14.6/
./configure && gmake -j4 && gmake install
(以下命令检查是否安装完成)
cmake --version
三、源码安装 mysql-5.6.45.tar.gz + boost:
由于 mysql 5.7 源码包在 Kylin Linux 上编译失败,这里用 mysql 5.6 安装。mysql 源码还依赖于 boost,故需要下载两个包,即 mysql 5.6 + boost。boost 可以从其官网下载,本人偷懒下载了 mysql 官网的 mysql-boost-5.7.27.tar.gz 包,里面包含了 boost,然后拷贝到 mysql-5.6 的解压目录里。
# ---- 创建 mysql 用户(略)
wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.45.tar.gz
tar -zxvf mysql-5.6.45.tar.gz
cp -R mysql-5.7.27/boost/ mysql-5.6.45/ # -------> 从 mysql-boost-5.7.27.tar.gz 的解压缩目录里拷贝过来
cmake -DCMAKE_INSTALL_PREFIX=/var/lib/mysql -DMYSQL_DATADIR=/var/lib/mysql/data -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=boost
make -j8
make install
cd /var/lib/
chown mysql:mysql ./mysql -R
四、创建 my.cnf 配置文件
cd /var/lib/mysql
cp support-files/my-default.cnf /etc/my.cnf
chown mysql:mysql /etc/my.cnf
vi /etc/my.cnf
my.cnf 参考内容如下:
[mysqld]
basedir=/var/lib/mysql
datadir=/var/lib/mysql/data
#bind-address=0.0.0.0
port=3306
socket=/tmp/mysql.sock
innodb_file_per_table=1
default-storage-engine=INNODB
explicit_defaults_for_timestamp=true
symbolic-links=0
max_connections=1000
log-error=/var/lib/mysql/mysql.log
pid-file=/var/lib/mysql/mysql.pid
五、初始化 mysql 数据库与配置
cd /var/lib/mysql
cp support-files/mysql.server /etc/init.d/mysql
chown mysql:mysql /etc/init.d/mysql
cp bin/* /usr/bin/
chkconfig --add mysql
chkconfig mysql on
mkdir data
chown mysql:mysql data/
./scripts/mysql_install_db --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data --defaults-file=/etc/my.cnf --random-passwords
# MySQL 5.7 初始化过程如下:
# ./bin/mysqld --defaults-file='/etc/my.cnf' --initialize --user=mysql
/etc/init.d/mysql start # 正常情况下启动会出现 Success,否则启动失败
# 或者 service mysql start
cat /root/.mysql_secret # ---> 查看随机密码(仅限 5.6 版本,5.7 版本的初始随机密码位于 log-error 指定的日志文件中)
mysql -uroot -pXdRmLO1T1pRRM7Jc # 登陆后需要修改密码
# 最后开放防火墙端口、远程连接权限等
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。