由于工作需要debug版本的mysql进行调试,尝试使用源码编译并记录分享
环境
docker容器
centos7
步骤
环境准备
yum install cmake make gnu gcc gcc-c++ bison ncurses ncurses-devel openssl
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
(mysql 8.0之后需要c++14编译,即需要gcc5.3以上,以下步骤为升级gcc)
yum install centos-release-scl
yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
(验证版本)which gcc
gcc --version
源码编译
tar zxvf mysql-VERSION.tar.gz
cd mysql-VERSION
mkdir bld
cd bld
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/mysql -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_TCP_PORT=3306 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_DEBUG=1 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/opt/boost/
make
make install
初始化
初始化配置文件/etc/my.cnf
datadir=/opt/mysql-data
socket=/opt/mysql-data/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/opt/mysql-data/mysql-error.log
pid-file=/opt/mysql-data/mysqld.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
/opt/mysql/bin/mysqld --initialize --user=mysql (这一步会生成root密码,需要记录下来)
/opt/mysql/bin/mysql_ssl_rsa_setup
/opt/mysql/bin/mysqld_safe --user=mysql &
登陆mysql
/opt/mysql/bin/mysql -hlocalhost -uroot -p*** -S /opt/mysql-data/mysql.sock
参考