MySQL 源码编译安装
脚本须知:
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 源码编译安装的更多相关文章
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- Mysql源码编译安装&主从复制
一)camke源码编译安装mysql 1)创建软件安装目录software [root@master software]# ls cmake-2.8.8.tar.gz mysql-5.5.32.tar ...
- ubuntu下mysql源码编译安装
建议:cpu4核以上,内存4G以上 1. 安装环境:Ubuntu Server 14.10MySQL-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make ...
- mysql源码编译安装
首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...
- MySQL 源码编译安装脚本
cat mysql_init.shmysql_init.sh mysql_init.sh.20190401 mysql_init.sh.back20171030 ...
- Mysql 源码编译安装 ( 5.5 、5.6 共存 )
简介: 如何在一台服务器同时运行两 ( 多 ) 个 MySQL 服务. 1.MySQL 5.6 shell > useradd -r -s /sbin/nologin mysql shell & ...
- 源码编译安装 MySQL 5.5.x 实践
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
- 总结源码编译安装mysql
最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...
- 源码编译安装 MySQL 5.5.x 实践(转)
1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...
随机推荐
- NOIP2013 乌龟棋
描述 小明过生日的时候,爸爸送给他一副乌龟棋当作礼物. 乌龟棋的棋盘是一行N个格子,每个格子上一个分数(非负整数).棋盘第1格是唯一的起点,第N格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点 ...
- nginx日志相关优化安全
一.编写脚本实现nginx access日志轮询 配置日志切割脚本,如下: [root@nginx shell]# cat cut_nginx_log.sh #!/bin/bash #Author:M ...
- 配置wamp开发环境之mysql的配置
此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...
- Ubuntu 16.04系统安装步骤
1.安装系统 2.设置更新源,自动检测最优更新源 3.关闭自动更新 4.设置终端样式 5.设置终端快捷键 6.安装vim,配置.vimrc 7.修改.bashrc第62行,小写w为大写W,设置终端不显 ...
- leetcode-11-dfs
DFS算法: explore(G, v) visited(v) = trueprevisit(v) for each edge(v, u) in E: if not visited(u): explo ...
- Python虚拟机函数机制之位置参数(四)
位置参数的传递 前面我们已经分析了无参函数的调用过程,我们来看看Python是如何来实现带参函数的调用的.其实,基本的调用流程与无参函数一样,而不同的是,在调用带参函数时,Python虚拟机必须传递参 ...
- A+B问题的异常解法
先%XZZ为敬 http://www.cnblogs.com/xzz_233/p/a-plus-b-problem.html 万恶之源:https://www.luogu.org/discuss/sh ...
- 用上GIT你一定会爱上他
前言 Git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控 ...
- 【转】Linux多命令顺序执行连接符(; || && |)
当我们需要一次执行多个命令的时候,命令之间需要用连接符连接,不同的连接符有不同的效果.下面我们总结一下,加以区分. (1) ; 分号,没有任何逻辑关系的连接符.当多个命令用分号连接时,各命令之间的 ...
- Timer和TimerTask详解
1.概览 Timer是一种定时器工具,用来在一个后台线程计划执行指定任务.它可以计划执行一个任务一次或反复多次.TimerTask一个抽象类,它的子类代表一个可以被Timer计划的任务. 简单的一个例 ...