脚本须知:

  1. 该脚本目前只测试过mysql版本为5.6.x的源码,其他源码可以对本脚本稍作修改即可

  2. 本脚本也可以使用wget mysql源码的方式进行,但考虑到后期提供源码的地址不可用,所以需要手动下载mysql 5.6.x的源码包并放入到/usr/local/src

  3. 此脚本在编译安装过程中禁用了iptables和SElinux策略,如果你在使用iptalbes相关功能请先完成相关配置。

  4. 该脚本主要是对此前尚未装过mysql的linux系统环境而写的,如果此前装过mysql请根据脚本适当修改,主要是在脚本添加判断语句,或者你也可以移除之前的mysql

      版本 (mysql安装路径 配置文件)

5. 本脚本实现的主要功能是mysql 安全初始化安装;提供sysv风格的启动脚本;最基本的配置文件(你可以根据功能需要通过配置然后覆盖/etc/my.cnf实现定制)

  6. mysql 5.6.30源码编译安装 默认没有开启查询缓存,你可以在my.cnf 通过此选项 query_cache_type = ON 来启用

 #!/bin/bash
#
# Description: Automated Deployment compilation MySQL
# Author: jiajunwei
# Version: ---
# Environment:
# . Mysql-Version: mysql-5.6.x
# . Operating system: CentOS .x
# Advise: The MySQL data directory on a logical volume
# Preparation: Need to put the source package mysql-5.6.x.tar.gz to /usr/local/src #####################[Preparatory work before compiling]###################### # . Provide the compiler environment
echo -e "\033[31mThe First step:Check and Configure compile environment ......\033[0m" #if ! ping -c2 -w3 www.baidu.com &> /dev/null;then
# mkdir -p /etc/yum.repos.d/repo
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo
# cat << EOF > /etc/yum.repos.d/CentOS-Media.repo
# [c6-media]
# name=CentOS-$releasever - Media
# baseurl=file:///media/cdrom/
# gpgcheck=1
# enabled=1
# gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
#EOF
# mkdir -p /media/cdrom
# if od -ax /dev/cdrom | head -1 &> /dev/null;then
# umount /dev/cdrom &> /dev/null
# mount -r /dev/cdrom /media/cdrom
# else
# echo "Please mount the disk and load the system image"
# exit 2
# fi
#fi
yum -y groupinstall "Development Tools" &> /dev/null
yum -y install cmake bison ncurses-devel openssl-devel &> /dev/null
if [ $? -eq 0 ];then
echo "--------->Enviroment is ok "
else
echo "--->Failed to compile environment testing, please check"
exit 3
fi # 2. Add the operation of database users
echo -e "\033[31mThe second step:Add the operation of database users with user mysql......\033[0m"
[ ! `grep "mysql" /etc/group` ] && groupadd -r mysql
[ ! `grep "mysql" /etc/passwd` ] && useradd -r -d /mydata/data -g mysql -s /bin/false mysql
if id mysql &> /dev/null;then
echo "--------->Add user complete "
else
echo "--->Add user failed "
exit 4
fi
#[ -f /etc/yum.repos.d/repo/CentOS-Base.repo ] && mv /etc/yum.repos.d/repo/*.repo /etc/yum.repos.d/
# 3. To determine the database directory and modify it belongs to the main group
echo -e "\033[31mThe third step:Determine the data directory and modify the permissions......\033[0m"
mkdir -p /mydata/data
chown -R mysql.mysql /mydata/data
echo "--->OK" ################################[Compile and install MySQL]####################### echo -e "\033[31mThe forth step:Compile and install MySQL......\033[0m"
if ! ls -l /usr/local/src/mysql*.tar.* &> /dev/null;then
echo " Copy your source package to this path:/usr/local/src"
exit 5
fi
tar xf /usr/local/src/mysql*.tar.* -C /usr/local/src
dir_count=`find /usr/local/src/ -maxdepth 1 -type d -name "mysql*" | wc -l`
if [ $dir_count -eq 1 ];then
dir=`find /usr/local/src/ -maxdepth 1 -type d -name "mysql*"`
else
echo "This path cannot have two MySQL directories at the same time"
exit 5
fi
cd $dir
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data/ \
-DSYSCONFDIR=/etc/ -DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/mydata/data/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_TCP_PORT=3306 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_DEBUG=0 -DENABLED_PROFILING=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNODB_MEMCACHED=1
cpu_count=`cat /proc/cpuinfo | grep "processor" |wc -l`
make -j $cpu_count && make install
if [ $? -eq 0 ];then
echo "------->installation is complete"
else
echo "--->Compile failed, please check"
exit 6
fi ############################[boot startup script]#######################
echo -e "\033[31mThe Fifth step:Provide configuration files and sysV boot startup script for MySQL......\033[0m"
[ -f /etc/my.cnf ] && \mv -f /etc/my.cnf{,.bak}
cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf
sed -i '/^\[mysqld\]/ a \datadir=/mydata/data\nsocket=/mydata/data/mysql.sock\n \
pid-file=/var/run/mysqld/mysqld.pid\n \
log-error=/var/log/mysqld.log\n \
user=mysql\n \
innodb_file_per_table=ON\n \
skip_name_resolve=ON\n \
log-bin=/mydata/log-bin/mysql-bin' /etc/my.cnf
mkdir -p /var/run/mysqld
chown -R mysql.mysql /var/run/mysqld
mkdir -p /mydata/log-bin
chown -R mysql.mysql /mydata/log-bin
[ -f /etc/init.d/mysqld ] && \mv -f /etc/init.d/mysqld{,.bak}
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --level 35 mysqld on
echo "------->OK" #############################[Export binary files]########################
echo -e "\033[31mThe sixth step:Export MySQL related binary files......\033[0m"
echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql-5.6.sh
#source /etc/profile
exec bash
if which mysqld_safe &> /dev/null;then
echo "------>export is successful"
else
echo "--->export is faild"
fi ###########################[MySQL database initialization]##################
echo -e "\033[31mThe seventh step:MySQL database initialization .......\033[0m"
cd /mydata/data
tar -jcf mydata-data.tar.bz2 *
unalias mv -f mydata-data.tar.bz2 /tmp/
rm -rf *
/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf \
--basedir=/usr/local/mysql \
--datadir=/mydata/data/ \
--user=mysql
if [ $? -eq 0 ];then
echo "--->initiate is finished "
else
echo "------->initiate is failed "
exit 7
fi ###########################[Database Startup Test]####################
echo -e "\033[31mThe eighth step:Database Startup Test......\033[0m"
# 1. Set firewall and SELinux
service iptables stop
setenforce 0
# 2. Run mysql service
service mysqld start
if netstat -lntp | grep "mysql" &> /dev/null;then
echo "------->Service startup normal "
else
echo "---->Service startup failed "
exit 8
fi ########################[Run security setup script]#####################
echo -e "\033[31mThe last step: Run security setup script......\033[0m"
echo -e "\ny\nmysqldba\nmysqldba\ny\nn\ny\ny\n" | mysql_secure_installation
if [ ! $? -eq 0 ];then
echo "Security initialization failed, please run manually"
fi
echo -e "\033[31mPlease re check and configure the firewall policy and selinux, now they are disabled.\033[0m"

MySQL 源码编译安装的更多相关文章

  1. Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置

    文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...

  2. Mysql源码编译安装&主从复制

    一)camke源码编译安装mysql 1)创建软件安装目录software [root@master software]# ls cmake-2.8.8.tar.gz mysql-5.5.32.tar ...

  3. ubuntu下mysql源码编译安装

    建议:cpu4核以上,内存4G以上 1. 安装环境:Ubuntu Server 14.10MySQL-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make ...

  4. mysql源码编译安装

    首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...

  5. MySQL 源码编译安装脚本

    cat mysql_init.shmysql_init.sh               mysql_init.sh.20190401      mysql_init.sh.back20171030  ...

  6. Mysql 源码编译安装 ( 5.5 、5.6 共存 )

    简介: 如何在一台服务器同时运行两 ( 多 ) 个 MySQL 服务. 1.MySQL 5.6 shell > useradd -r -s /sbin/nologin mysql shell & ...

  7. 源码编译安装 MySQL 5.5.x 实践

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  8. 总结源码编译安装mysql

    最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...

  9. 源码编译安装 MySQL 5.5.x 实践(转)

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

随机推荐

  1. nodejs写一个简单的Web服务器

    目录文件如 httpFile.js如下: const httpd = require("http"); const fs = require("fs"); // ...

  2. 基于matlab的蓝色车牌定位与识别---定位

    接着昨天的工作继续.定位的过程有些是基于车牌的颜色进行定位的,自己则根据数字图像一些形态学的方法进行定位的. 合着代码进行相关讲解. 1.相对彩色图像进行灰度化,然后对图像进行开运算.再用小波变换获取 ...

  3. RabbitMQ学习(二):Java使用RabbitMQ要点知识

    转  https://blog.csdn.net/leixiaotao_java/article/details/78924863 1.maven依赖 <dependency> <g ...

  4. java中的jdbc操作

    package demo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedSta ...

  5. 05tar命令详解

    tar 命令用于对文件进行打包压缩或解压,格式为"tar [选项][文件]". ​ 在Linux 系统中,常见的文件格式比较多,其中主要使用的是 .tar 或者 .tar.gz 或 ...

  6. Vim编辑器基础

    Vim编辑器基础 vi:Visual Interface vim:VI iMproved Vim模式 1.编辑模式(命令模式) 只能下达命令,不能键入字符 2.输入模式 键入字符 3.末行模式 左下角 ...

  7. python将excel数据写入数据库,或从库中读取出来

    首先介绍一下SQL数据库的一些基本操作: 1创建 2删除 3写入 4更新(修改) 5条件选择 有了以上基本操作,就可以建立并存储一个简单的数据库了. 放出python调用的代码: 此处是调用dos 操 ...

  8. 大意了,这几道Python面试题没有答对,Python面试题No13

    第1题: Python如何爬取 HTTPS 网站? 这类问题属于简单类问题 在使用 requests 前加入:requests.packages.urllib3.disable_warnings(). ...

  9. LeetCode(275)H-Index II

    题目 Follow up for H-Index: What if the citations array is sorted in ascending order? Could you optimi ...

  10. 安装repo

    $ sudo apt-get install curl -y$ curl "http://android.git.linaro.org/gitweb?p=tools/repo.git;a=b ...