一、下载安装包
(一)、先下载MySQL源码,网址为:https://dev.mysql.com/downloads/mysql/ :
1.在Select Operationg System中选择Source Code;
2.在下面的Select OS Version选择Generic Linux(Architecture Independent);
3.然后再下面的部分可以看到Compressed TAR Archive,单击后面的Download;
4.在弹出的界面中选择最下面的No thanks, just start my download就可以开始下载了。
下载完成后将文件复制到服务器的/usr/local/src目录下即可。
也可以使用下面的方法直接在Linux中下载源码包,在/usr/local/src目录下直接用wget进行下载:
cd /usr/local/src
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.25.tar.gz
或者直接下载mysql-boost.5.7.25.tar.gz,这样可以免去单独下载boost
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.25.tar.gz
(二)、下载 boost
下载网址为:http://www.boost.org/users/download/
这个版本的MySQL要求boost的版本是1.59,链接为:
http://www.boost.org/users/history/version_1_59_0.html
下面给出boost 1.59.0的链接,在/usr/local/src
目录下直接用wget
进行下载
wget --no-check-certificate http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
二、编译安装
(一)、安装必要的软件依赖:
yum install -y cmake bison bison-devel libaio libaio-devel gcc gcc-c++ ncurses ncurses-devel
(二)、解压MySQL源文件:
tar -zxvf mysql-boost-5.7.25.tar.gz
(三)、进入MySQL源文件目录,新建configure做为编译目录,并进入该目录:
cd mysql-5.7.20
mkdir configure
cd configure
(四)、使用cmake进行生成编译环境:
参数 | 说明 |
---|---|
-DCMAKE_INSTALL_PREFIX=dir_name | 基础的文件夹,对应mysqld的--basedir参数 |
-DMYSQL_DATADIR=dir_name | 数据存放目录 |
-DSYSCONFDIR=dir_name | 默认配置my.cnf目录 |
-DWITH_MYISAM_STORAGE_ENGINE | 添加MYISAM引擎支持 |
-DWITH_INNOBASE_STORAGE_ENGINE | 添加InnoDB引擎支持 |
-DWITH_ARCHIVE_STORAGE_ENGINE | 添加ARCHIVE引擎支持 |
-DMYSQL_UNIX_ADDR | 指定mysql.sock位置 |
-DWITH_PARTITION_STORAGE_ENGINE | 安装支持数据库分区 |
-DINSTALL_BINDIR=dir_name | bin目录位置 |
-DINSTALL_DOCDIR=dir_name | 文档目录位置 |
-DINSTALL_DOCREADMEDIR=dir_name | Readme文件位置 |
-DINSTALL_INCLUDEDIR=dir_name | Include目录位置 |
-DINSTALL_LAYOUT=name | 布局选项,包括Standalone、RPM、SRV4、DEB |
-DWITH-SYSTEMD | 可以使用systemd控制mysql服务 |
-DEXTRA_CHARSETS | 使mysql支持所有的扩展字符 |
-DCMAKE_BUILD_TYPE | RelWithDebInfo: 默认值,启用optimizations,同时生成调试信息 ,Debug: 禁用optimizations, 同时生成调试信息 |
-DENABLE_DTRACE | 是否启用dtrace |
-DWITH_EMBEDDED_SERVER | 是否构建libmysqld嵌入式服务器库 |
-DWITH_INNODB_MEMCACHED | 是否生成memcached共享库 |
-DWITH_SSL | 加载SSL库 •bundled:使用与分发捆绑的库。•system:使用系统库。这是默认设置 |
-DWITH_ZLIB | 某些功能要求使用压缩库支持构建服务器,例如 compress()和uncompress()函数,以及客户端/服务器协议的压缩, 这个使用_zlib表示zlib支持的来源: •bundled:使用与分发捆绑的zlib库。•system:使用系统zlib库。这是默认设置 |
-DINSTALL_PLUGINDIR | 插件目录 |
-DDEFAULT_CHARSET | 设置mysql的默认字符集 |
-DDEFAULT_COLLATION | 设置默认字符集校对规则 |
-DWITH_EDITLINE | 加载libedit/editline库 •bundled:使用与分发捆绑的库。 •system:使用系统库。这是默认设置 |
-DCOMPILATION_COMMENT | 编译信息,后面启动的时候会看到 |
-DWITH_DEBUG | 支持启用调试 |
-DWITH_BOOST | 指向boost库所在目录 |
编译参数选项参考表格说明
cmake .. -DBUILD_CONFIG=mysql_release \
-DINSTALL_LAYOUT=STANDALONE \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DSYSCONFDIR=/usr/local/mysql5.7/etc/my.cnf \
-DENABLE_DTRACE=OFF \
-DWITH_EMBEDDED_SERVER=OFF \
-DWITH_INNODB_MEMCACHED=ON \
-DWITH_SSL=bundled \
-DWITH_ZLIB=system \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7/ \
-DINSTALL_PLUGINDIR="/usr/local/mysql5.7/lib/plugin" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EDITLINE=bundled \
-DFEATURE_SET=community \
-DCOMPILATION_COMMENT="MySQL Server (GPL)" \
-DWITH_DEBUG=OFF \
-DWITH_BOOST=../boost
如果编译出现错误,请先删除CMakeCache.txt后,再重新编译:
rm -rf CMakeCache.txt
如果出现下面的提示就表示成功生成了编译环境:
-- Configuring done
-- Generating done
(五)、使用make进行编译:
make
编译完成后,会出现如下信息:
[100%] Building CXX object sql/CMakeFiles/udf_example.dir/udf_example.cc.o
Linking CXX shared module udf_example.so
[100%] Built target udf_example
[100%] Built target my_safe_process
(六)、安装MySQL:
make install
三、初始化数据库
(一)、添加mysql用户给MySQL专用,禁止登陆
useradd -s /sbin/nologin mysql
(二)、新建数据库文件夹及日志文件夹,并更改用户为mysql:
mkdir /mysql_data
mkdir /var/mysql/log
chown -R mysql:mysql /mysql_data/
chown -R mysql:mysql /var/mysql/log
(三)、修改配置文件
vim /etc/my.cnf
内容替换为:
[mysqld]
port=3306
user=mysql
datadir=/data/mysql/data
log_error=/data/mysql/log/error.log
basedir=/usr/local/mysql5.7
socket=/usr/local/mysql5.7/mysql.sock
pid-file=/usr/local/mysql5.7/mysqld.pid
default-storage-engine=INNODB
max_connections=200
character-set-server=utf8
[mysql]
port=3306
default-character-set=utf8
socket=/usr/local/mysql5.7/mysql.sock
[client]
port=3306
default-character-set=utf8
socket=/usr/local/mysql5.7/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=/var/log/mariadb/mariadb.log
#pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
(四)、初始化数据库:
/usr/local/mysql5.7/bin/mysqld --initialize --user=mysql
查看数据文件是否生成:
[root@tony local]# ll /data/mysql/data/
total 110628
-rw-r-----. 1 mysql mysql 56 May 27 15:42 auto.cnf
-rw-r-----. 1 mysql mysql 419 May 27 15:42 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 May 27 15:42 ibdata1
-rw-r-----. 1 mysql mysql 50331648 May 27 15:42 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 May 27 15:42 ib_logfile1
drwxr-x---. 2 mysql mysql 4096 May 27 15:42 mysql
drwxr-x---. 2 mysql mysql 8192 May 27 15:42 performance_schema
drwxr-x---. 2 mysql mysql 8192 May 27 15:42 sys
查看日志文件是否生成:
[root@tony local]# ll /data/mysql/log/
total 4
-rw-r-----. 1 mysql mysql 802 May 27 15:42 error.log
四、配置启动文件及环境变更
(一)、配置启动文件
1. 从模板文件中复制启动文件:
cp /usr/local/mysql5.7/support-files/mysql.server /etc/init.d/mysqld
2. 修改启动文件:
vim /etc/init.d/mysqld
找到如下二行:
basedir=
datadir=
修改为:
basedir=/usr/local/mysql5.7
datadir=/data/mysql/data
3. 启动mysql:
[root@tony local]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
可以看到提示,已经成功启动。当然你也可以使用systemctl来启动MySQL,但执行后,不会有任何提示。
[root@tony local]# service mysqld start
(二)、设置MySQL开机自动启动:
[root@tony local]# chkconfig mysqld on
(三)、配置MySQL环境变量:
vim /etc/profile
在最底层添加
PATH=$PATH:/usr/local/mysql5.7/bin
(四)、修改root的初始密码
1. 查看root的初始密码
MySQL从5.7开始不支持安装后使用空密码进行登录,因此在这里需要先查询程序生成的临时密码:
[root@tony tony]# cat /data/mysql/log/error.log | grep 'password'
2019-05-27T07:42:31.049551Z 1 [Note] A temporary password is generated for root@localhost: dfZsY7diI2%A
最后一行冒号后面的部分dfZsY7diI2%A就是初始密码。
2. 登录MySQL并修改初始密码:
使用初始密码登录MySQL:
[root@tony local]# mysql -uroot -p
Enter password:
登录后立即修改root密码,将密码改为'ilovemysql'
mysql> alter user 'root'@'localhost' identified by 'ilovemysql';
Query OK, 0 rows affected (0.00 sec)
其中your_password是你设置的新密码。新密码应是强密码,要求密码包含大小写字母、数字及标点符号,长度应该在6位以上。
(五)、测试
设置好以后,重新启动服务器,查看MySQL是否自动启动:
[root@tony tony]# ps -aux | grep mysql
root 1161 0.0 0.0 115436 1712 ? S 16:20 0:00 /bin/sh /usr/local/mysql5.7/bin/mysqld_safe --datadir=/data/mysql/data --pid-file=/usr/local/mysql5.7/mysqld.pid
mysql 1511 1.3 9.3 1117208 175728 ? Sl 16:20 0:01 /usr/local/mysql5.7/bin/mysqld --basedir=/usr/local/mysql5.7 --datadir=/data/mysql/data --plugin-dir=/usr/local/mysql5.7/lib/plugin --user=mysql --log-error=/data/mysql/log/error.log --pid-file=/usr/local/mysql5.7/mysqld.pid --socket=/usr/local/mysql5.7/mysql.sock --port=3306
root 2136 0.0 0.0 112708 976 pts/0 R+ 16:22 0:00 grep --color=auto mysql
出现以上信息就表示已经完成在CentOS7.4上手工编译、安装MySQL5.7.25全部过程