脚本须知:

  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. cnpm 莫名奇妙bug 莫名奇妙的痛

    cnpm 莫名奇妙bug 莫名奇妙的痛 最近想搭建react@v16 和 react-router@v4,搭建过程打算用vue脚手架webpack模板那套配置方法(webpack3). 由于我之前安装 ...

  2. c++ 函数指针应用,定义一个方法,传入两个参数和一个函数指针,并返回结果

    #include <iostream> #include <string> using namespace std; double add(double x, double y ...

  3. python面向对象之抽象工厂设计模式

    class truck: def use(self): return "拉货" def __str__(self): return "大卡车" class mi ...

  4. Golang ioutil读写文件测试

    运用 ioutil.ReadFile .ioutil.WriteFile package main import ( "io/ioutil" "log" &qu ...

  5. 拓展jQuery的serialize(),将form表单转化为json对象

    jQuery 的 serialize() 方法经常会报 Uncaught TypeError: JSON.serializeObject is not a function 的错误, 原装的方法真的一 ...

  6. 在使用sql语句的一些注意事项(sql语句)

    版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址: https://www.cnblogs.com/poterliu/p/4925483.html ①如果插入字段包含对应的表的所有字段, ...

  7. 【laravel】Disabling CSRF for Specific Routes - Laravel 5

    原文 http://www.camroncade.com/disable-csrf-for-specific-routes-laravel-5/ Disabling CSRF for Specific ...

  8. 在windows7 32ibt安装MongoDB数据库的方法及连接失败解决方案

    参考 https://www.cnblogs.com/cnblogs-jcy/p/6734889.html http://yunkus.com/mongodb-install-config-in-wi ...

  9. C与C++接口相互调用

    转载于:http://blog.csdn.net/lincoln_2012/article/details/50801080 项目中经常使用C和C++混合编程,那么,在调用对方接口时,总是不可避免地出 ...

  10. Eclipse设置C++自动补全变量名快捷键

    用快捷键:Alt+/ 要是还是有些场合不能提示,按照下列步骤 Window-Preferences-c/c++-Editor-Content Assist-Advanced 将未勾选的全部勾选