mysql编译安装
1.下载mysql源码包
2.使用cmake进行预编译
yum install cmake -y
#编译参数
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DMYSQL_USER=mysql \
-DMYSQL_TCP_PORT=3306 \
-DWITH_XTRADB_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=1 \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DWITH_BIG_TABLES=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost
备注:mysql5.7的编译需指定boost,即:DWITH_BOOST=/usr/local/boost或者-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DMYSQL_DATADIR=/data/mysql/ -DSYSCONFDIR=/etc -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITH_XTRADB_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DEXTRA_CHARSETS=all -DWITH_BIG_TABLES=1 -DWITH_DEBUG=0 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
预编译过程错误处理:
CMake Error at cmake/boost.cmake:88 (MESSAGE):
You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=
解决办法是:
1).在/usr/local下创建一个名为boost的文件夹
mkdir -p /usr/local/boost
2).进入这个新创建的文件夹然后下载boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
3).解压
tar -xvzf boost_1_59_0.tar.gz
再次预编译即可
2.Cannot find appropriate system libraries for WITH_SSL=system.
Make sure you have specified a supported SSL version.
CMake Error at cmake/ssl.cmake:63 (MESSAGE):
Please install the appropriate openssl developer package.
解决办法:
yum install openssl -y
3.-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:71 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
解决办法:
1)删除
rm -f CMakeCache.txt
2)安装
yum install ncurses-devel -y
4.CMake Error at extra/libevent/libevent-2.1.11-stable/CMakeLists.txt:22 (cmake_minimum_required):
CMake 2.8.12.2 or higher is required. You are running version 2.8.11
解决办法:
需要升级cmake 版本
下载能满足需求的cmake版本
cmake-3.18.1.tar.gz
将原来yum安装的cmake卸载
yum remove cmake -y
将cmake-3.18.1.tar.gz移动的/usr/local/目录下
tar -xzvf cmake-3.18.1.tar.gz
解压之后将cmake目录下的bin
vim /etc/profile
export PATH=$PATH:/usr/local/cmake/bin
source /etc/profile
cmake --version
ccmaek --version
即可使用高版本的camke
编译和安装
make && make install
三、创建目录
## mysql数据文件所在目录
mkdir -p /usr/local/mysql/data
## 日志目录
mkdir -p /usr/local/mysql/log/
## redolog目录
mkdir -p /usr/local/mysql/redolog/
## undoLog目录
mkdir -p /usr/local/mysql/undolog/
四、权限设置
## 先创建mysql组和mysql用户
groupadd mysql
useradd -g mysql mysql -M
## 对mysql文件和目录授权
chown -R mysql:mysql /usr/local/mysql/*
chown -R mysql:mysql /etc/my.cnf
五、初始化
mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql' --log_error_verbosity --explicit_defaults_for_timestamp
备注在data目录下执行该命令,且保证data目录为空
执行过程中的报错
执行成功截图(看到密码则表示成功)
编辑配置文件/etc/my.cnf
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
# 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
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port=3306
socket=/tmp/mysql.sock
bind-address=localhost
pid-file=/usr/local/mysql/data/mysql.pid
skip-external-locking
[mysqld_safe]
log-error=/usr/local/mysql/log/mysql.log
pid-file=/usr/loacl/mysql/data/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
给mysql增加执行权限并加入开机自动启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
cd /etc/init.d/
chmod +x mysqld
chkconfig --add mysql
如果有报错“bash: mysqld: command not found..”
解决办法:
按照截图检查配置文件
/etc/profile中增加如下内容:
export PATH=$PATH:/usr/local/mysql/bin
## mysql启动
service mysqld start
登录mysql
mysql -uroot -p