源码编译安装mysql5.7.30

源码编译安装mysql5.7.30

  • 1、环境准备
  • 2、先卸载本机版本安装过的mysql软件
  • 3. 下载mysql包
  • 4.安装mysql-boost
  • 5、安装依赖包
  • 6、添加mysql用户和用户组
  • 7、解压及规划安装目录
  • 8、开始编译mysql
  • 7、编辑mysql配置文件
    • 7.1、my.cnf 默认是没有的,需要手动输入
    • 7.2添加path路径,让系统能够读到mysql命令
    • 7.3生成启动脚本并做成服务
    • 7.4创建软链接
  • 8、修改权限并初始化数据库
  • 9、启动mysql测试
  • 10、查看初始密码并修改
  • 一键部署脚本

1、环境准备

[root@localhost conf]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core) 
[root@localhost conf]# uname -r
3.10.0-957.el7.x86_64
[root@localhost conf]# 

2、先卸载本机版本安装过的mysql软件

#查看是否安装过mysql和mariadb
  rpm -qa | grep mysql
  rpm -qa | grep mariadb
#卸载历史版本
rpm -e --nodeps mariadb-libs

3. 下载mysql包

https://downloads.mysql.com/archives/community/
源码编译安装mysql5.7.30_第1张图片
wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.30.tar.gz
wget -c https://cdn.mysql.com/archives/mysql-5.7/mysql-boost-5.7.30.tar.gz

4.安装mysql-boost

MySQL从5.7版本之后,boost是必须的,这里需要解压到相应的安装目录,后面Cmake会用到

mkdir -p /usr/local/mysql-boost
tar xvf mysql-boost-5.7.30.tar.gz -C /usr/local/mysql-boost

5、安装依赖包

yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel libaio autoconf

6、添加mysql用户和用户组

 groupadd mysql
 useradd -M -s /sbin/nologin -r -g mysql mysql
 #注释 -M 不创建家目录 -s 指定默认登录shell -r创建系统账户 -g指定用户登录组的GID或组名

7、解压及规划安装目录

解压下载的源文件

tar xvf mysql-5.7.30.tar.gz
cd mysql-5.7.30

规划安装目录

#安装目录
mkdir -p /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql

#数据目录
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql

8、开始编译mysql

进入解压后的源文件目录

cd mysql-5.7.30

cmake:

cmake -DMYSQL_USER=mysql \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_MEMORY_STORAGE_ENGINE=1 \
 -DWITH_READLINE=1 \
 -DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \
 -DMYSQL_TCP_PORT=3306 \
 -DENABLED_LOCAL_INFILE=1 \
 -DDOWNLOAD_BOOST=1 \
 -DWITH_PARTITION_STORAGE_ENGINE=1 \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_BOOST=/usr/local/mysql-boost/mysql-5.7.30/boost

注:-DWITH_BOOS参数就是第四步骤的解压后路径,注意要写到boost目录
说明:如果编译出错,没有通过,检测参数后重新运行配置,需要删除CMakeCache.txt文件
#make clean
#rm -f CMakeCache.txt

参数从哪里找:
http://www.mysql.com→→Documentation→→选择对应的版本(5.7)Installation & Upgrades→→Installing MySQL from Source →→MySQL Source-Configuration Options
直接点击url: https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html

编译安装

make -j 4&&make install

7、编辑mysql配置文件

7.1、my.cnf 默认是没有的,需要手动输入

/etc/my.cnf 
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/data/mysql/mysqld.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
character-set-server=utf8

7.2添加path路径,让系统能够读到mysql命令

#把mysql的bin路径加入PATH
echo "export PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
#让PATH变量修改立即生效 
source /etc/profile   

7.3生成启动脚本并做成服务

#设置服务自动启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
#设置服务自动启动
chkconfig mysql on 

7.4创建软链接

由于系统默认会查找/usr/bin下的命令,如果这个命令不在这个目录下,当然会找不到命令,我们需要做的就是映射一个链接到/usr/bin目录下,相当于建立一个链接文件。

ln -s /usr/local/mysql-5.7.30/bin/mysql /usr/bin

8、修改权限并初始化数据库

chown -R mysql:mysql /usr/local/mysql
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

9、启动mysql测试

/etc/init.d/mysql start

10、查看初始密码并修改

#查看临时密码
grep password /data/mysql/mysql.err
#使用临时密码登录后修改密码
SET PASSWORD = PASSWORD('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;  

一键部署脚本

#!/bin/bash
#auto install MYSQL
#by MR.xu 2020-07
#MYSQL define path variable
#auto install mysql

#mysql define path variable
M_FILES=mysql-5.7.30.tar.gz
M_FILES_DIR=mysql-5.7.30
M_URL=https://cdn.mysql.com/archives/mysql-5.7/
M_PREFIX=/usr/local/mysql
BOOST_FILES=mysql-boost-5.7.30.tar.gz


#安装环境的检查
##卸载系统自带的mysql|mariadb
rpm -qa | grep mysql;
if [ $? -eq 0 ];then
	echo -e "\033[32mMySQL has been installed on the system and will be uninstalled!!!\033[0m"
	mv /etc/my.cnf /etc/my.cnf`date +%Y-%m-%d-%H-%M-%S`;
	mv /etc/my.cnf.d /etc/my.cnf.d`date +%Y-%m-%d-%H-%M-%S`;
	rpm -e --nodeps mariadb-libs;
else
	echo -e "\033[32mMySQL is not installed in the system!!\033[0m"
	rpm -qa | grep mariadb;
	if [ $? -eq 0 ];then
		mv /etc/my.cnf /etc/my.cnf`date +%Y-%m-%d-%H-%M-%S`;
		mv /etc/my.cnf.d /etc/my.cnf.d`date +%Y-%m-%d-%H-%M-%S`;
		echo -e "\033[32mMariadb has been installed on the system and will be uninstalled!!!\033[0m"
		rpm -e --nodeps mariadb-libs;
	else
		echo -e "\033[32mMariadb is not installed in the system!!\033[0m"
	fi
fi
#安装mysql-boost
#安装路径/usr/local/mysql-boost,CMAKE的-DWITH_BOOS参数要用到解压后路径,注意要写到boost目录
wget -c $M_URL/$BOOST_FILES&&mkdir -p /usr/local/mysql-boost&&tar xvf $BOOST_FILES -C /usr/local/mysql-boost
	if [ $? -eq 0 ];then
		echo -e "\033[32mThe mysql-boost path is /usr/local/mysql-boost\033[0m"
	else
		echo -e "\033[32mThe mysql-boost path is faild to create,please check it!\033[0m"
		 exit
	fi
#安装依赖包
yum install -y cmake make gcc gcc-c++ bison ncurses ncurses-devel libaio autoconf
#添加mysql用户和用户组
groups mysql;
if [ $? -eq 0 ];then
	echo -e "\033[32mThe MySQL user already exists! \033[0m"
else
	groupadd mysql&&useradd -M -s /sbin/nologin -r -g mysql mysql
	echo -e "\033[32mThe MySQL user created successfully \033[0m"
fi

if [ $? -eq 0 ];then
		echo -e "\033[32m添加mysql用户和用户组成功\033[0m"
	else
		echo -e "\033[32m添加mysql用户和用户组faild,please check it!\033[0m"
		 exit
	fi
#创建安装目录和数据目录
mkdir -p $M_PREFIX&&chown -R mysql:mysql $M_PREFIX;
mkdir -p /data/mysql&&chown -R mysql:mysql /data/mysql;
#下载mysql安装包并编译
if [ $? -eq 0 ];then
    wget -c $M_URL/$M_FILES &&tar -zxvf $M_FILES &&cd $M_FILES_DIR ;cmake -DMYSQL_USER=mysql \
-DCMAKE_INSTALL_PREFIX=$M_PREFIX \
-DMYSQL_DATADIR=/data/mysql/ \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
 -DWITH_MEMORY_STORAGE_ENGINE=1 \
 -DWITH_READLINE=1 \
 -DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock \
 -DMYSQL_TCP_PORT=3306 \
 -DENABLED_LOCAL_INFILE=1 \
 -DDOWNLOAD_BOOST=1 \
 -DWITH_PARTITION_STORAGE_ENGINE=1 \
 -DEXTRA_CHARSETS=all \
 -DDEFAULT_CHARSET=utf8 \
 -DDEFAULT_COLLATION=utf8_general_ci \
 -DWITH_BOOST=/usr/local/mysql-boost/$M_FILES_DIR/boost

    if [ $? -eq 0 ];then
		echo -e "\033[32mThe $M_FILES_DIR Cmake successfully!\033[0m"
		echo -e "\033[32mStart to make install. It will be finished in about half an hour. Please wait patiently!\033[0m"
        make&&make install;
        echo -e "\033[32mThe $M_FILES_DIR sever install successfully!\033[0m"
		##开始配置mysql的my.cnf
		cat >/etc/my.cnf <<EOF
[mysqld]
port=3306
user=mysql
basedir=/usr/local/mysql
datadir=/data/mysql
socket=/data/mysql/mysqld.sock
log-error=/data/mysql/mysql.err
pid-file=/data/mysql/mysql.pid
character-set-server=utf8
EOF
			##添加path路径,让系统能够读到mysql命令
			echo "export PATH=$PATH:$M_PREFIX/bin">>/etc/profile&&source /etc/profile;
			##Linux启动时,会寻找/etc/init.d/目录中的服务启动脚本
			cp $M_PREFIX/support-files/mysql.server /etc/init.d/mysql&&chmod +x /etc/init.d/mysql
			##创建软连接做成mysql服务
			ln -s $M_PREFIX/bin/mysql /usr/bin
			##修改权限并初始化数据库
			chown -R mysql:mysql $M_PREFIX;
			$M_PREFIX/bin/mysqld --initialize-insecure --user=mysql --basedir=$M_PREFIX --datadir=/data/mysql
			##启动数据库
			/etc/init.d/mysql start;
			if [ $? -eq 0 ];then
				ps -ef|grep mysql;
				echo -e "\033[32mThe mysql start successfully!\033[0m"
				echo -e "\033[32mView mysql temporary password!\033[0m"
				grep password /data/mysql/mysql.err
			else
				echo -e "\033[32mThe mysql start faild!\033[0m"
			fi
			
    else
        echo -e "\033[32mThe $M_FILES_DIR sever install failed,please check...!\033[0m"
		#CMake失败的情况下要再次CMake需要删除CMakeCache.txt,这里做了备份防止下次跑脚本报错
		mv CMakeCache.txt CMakeCache.txt`date +%Y-%m-%d-%H-%M-%S`
        exit
    fi
	
fi

你可能感兴趣的:(mysql,linux,mysql)