程序自动安装mysql_自动安装mysql脚本

#!/bin/bash

##########################################################################

# Function:                                                              #

#          automatic configure mysql from source code since mysql 5.6.20 #

# Author:                                                                #

#          gfsunny@163.com                                               #

# Create:                                                                #

#   2014/08/20                                                           #

# Update:                                                                #

#   2014/12/24                                                           #

# Notes:   Please edit my.cnf file and db_version,camke_version args     #

# before running the script and put mysql source file and camke file     #

# into the current directory                                             #

##########################################################################

base_dir=/usr/local/mysql

data_root=/opt

data_dir=/opt/mysql/data

logs_dir=/opt/mysql/logs

db_user=root

db_pwd=123456

db_version=mysql-5.6.20

cmake_version=cmake-3.0.2

function JudgeMysqld(){

#If Judging mysqld and mysql directory exists

pid=`ps -ef | grep mysql |grep -v grep |awk '{print $2}'`

if [ "$pid" != "" ];then

kill -9 $pid

echo "mysql has been killed"

fi

# uninstall mysql package

for i in MySQL MySQL-server MySQL-test MySQL-bench MySQL-connector-java MySQL-connector-odbc MySQL-devel MySQL-shared MySQL-client MySQL-shared-compat

do

rpm -q $i &> /dev/null

if [ $? == 0 ]; then

rpm -e $i --nodeps &> /dev/null

fi

done

}

function AddUserGroup(){

grep mysql /etc/group &> /dev/null

if [ $? != 0 ];then

groupadd mysql

fi

grep mysql /etc/passwd &> /dev/null

if [ $? != 0 ];then

useradd -g mysql mysql

fi

echo "check relative user and group done! "

}

function JudgeMysqlDir(){

check=`find / -name mysql | wc -l`

if [ "$check" != 0 ];then

find / -name mysql -print0| xargs -0 rm -fr

fi

# define and create relative directory

if [ ! -d "$base_dir" ];then

mkdir -p "$base_dir"

else

rm -rf "$base_dir"

fi

if [ ! -d "$data_dir" ];then

mkdir -p "$data_dir"

else

rm -rf "$data_dir"

fi

if [ ! -d "$logs_dir" ];then

mkdir -p "$logs_dir"

else

rm -rf "$logs_dir"

fi

cd $data_root

chown -R mysql:mysql *

cd -

echo "check relative directory done!"

}

function DependencyPackage(){

#check and install relative packages"

if [ -d "$cmake_version" ];then

rm -rf "$cmake_version"

fi

cmake --version &> /dev/null

if [ $? == 0 ]; then

echo "cmake already exists"

else

tar -zxvf "$cmake_version".tar.gz

cd "$cmake_version"

./configure

make && make install

fi

yum -y install gcc flex bison autoconf automake ncurses-devel curl-devel make lynx zlib libxml openssl

echo "check relative install packages done! "

}

function SourceInsatll(){

# unzip $db_version"

if [ -d "$db_version" ];then

rm -rf "$db_version"

fi

tar -zxvf "$db_version".tar.gz

cd "$db_version"

if [ -d "project" ];then

rm -rf project;mkdir project

else

mkdir project

fi

cd project

CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"

CXX=g++

CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"

export CFLAGS CXX CXXFLAGS

sleep 2

cmake ..

-DCMAKE_INSTALL_PREFIX:PATH=$base_dir                  \

-DMYSQL_DATADIR=$data_dir                              \

-DSYSCONFDIR:PATH=/etc                                 \

-DMYSQL_UNIX_ADDR=/tmp/mysql.sock                      \

-DCMAKE_BUILD_TYPE:STRING=Release                      \

-DENABLE_PROFILING:BOOL=ON                             \

-DWITH_DEBUG:BOOL=OFF                                  \

-DWITH_VALGRIND:BOOL=OFF                               \

-DENABLE_DEBUG_SYNC:BOOL=OFF                           \

-DWITH_EXTRA_CHARSETS:STRING=all                       \

-DWITH_SSL:STRING=bundled                              \

-DWITH_UNIT_TESTS:BOOL=OFF                             \

-DWITH_ZLIB:STRING=bundled                             \

-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON                \

-DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON                 \

-DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON                  \

-DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON                \

-DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON               \

-DDEFAULT_CHARSET=utf8                                 \

-DDEFAULT_COLLATION=utf8_general_ci                    \

-DWITH_EXTRA_CHARSETS=all                              \

-DENABLED_LOCAL_INFILE:BOOL=ON                         \

-DWITH_EMBEDDED_SERVER=0                               \

-DINSTALL_LAYOUT:STRING=STANDALONE                     \

-DCOMMUNITY_BUILD:BOOL=ON;

echo

echo "cmake compilation done! "

# make && make install"

make -j `cat /proc/cpuinfo | grep processor| wc -l`

make install

echo "mysql installation is over"

# Now,begin to change and set environment variables!!"

echo

cd $base_dir

cd ..

chown -R mysql:mysql mysql

cd -

grep "$base_dir/bin" ~/.bashrc

if [ $? == 1 ];then

echo "export PATH=$PATH:$base_dir/bin" >> ~/.bashrc

else

echo "environment variables has setted"

fi

sleep 1

source ~/.bashrc

echo

echo "Now,to be going to iniatialize data directory"

# add data directory and remove skip-federated

if [ ! -f "/etc/my.cnf" ];then

cp -f $base_dir/support-files/my-default.cnf /etc/my.cnf

sed -i "/\[mysqld\]/a basedir = $base_dir \ndatadir = $data_dir \nlog-error = $logs_dir/alert.log" /etc/my.cnf

sed -i "s/^skip-federated/#skip-federated/g" /etc/my.cnf

fi

if [ $? != 0 ];then

echo "change my.cnf error."

exit 1

fi

# iniatialize data directory

$base_dir/scripts/mysql_install_db --defaults-file=/etc/my.cnf --user=mysql --datadir=$data_dir --basedir=$base_dir

# add mysqld service

alias cp='cp'

\cp -f $base_dir/support-files/mysql.server /etc/init.d/mysqld

chmod 755 /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig mysqld on

echo "change and set environment variables done! "

}

function TestInsatll(){

echo "Now,begin to start mysql server and test it!!"

echo

/etc/init.d/mysqld start

echo

mysqladmin -u$db_user password $db_pwd

mysqladmin -u$db_user -p$db_pwd create rgf

if [ $? == 0 ]; then

echo "mysql server is OK !"

else

echo "mysql server is wrong!Please check errors again!"

exit 2

fi

echo

mysqladmin -u$db_user -p$db_pwd -f drop rgf

echo "set privileges for user"

mysql -u$db_user -p$db_pwd -e "use mysql;delete from user where user!='root' or host!='localhost';GRANT ALL ON *.* TO 'rgf'@'%' identified by '123456' with grant option;flush privileges;"

echo "test and set privileges is over and restart mysql! "

/etc/init.d/mysqld restart

ps -ef |grep -v grep |grep mysqld

if [ $? == 1 ];then

echo "please check mysql!"

else

echo "congratulation!!mysql is running!!"

fi

cd ../../

}

#function main

JudgeMysqld

if [ $? != 0 ];then

exit 3

fi

AddUserGroup

if [ $? != 0 ];then

exit 4

fi

JudgeMysqlDir

if [ $? != 0 ];then

exit 5

fi

DependencyPackage

if [ $? != 0 ];then

exit 6

fi

SourceInsatll

if [ $? != 0 ];then

exit 7

fi

TestInsatll

if [ $? != 0 ];then

exit 8

fi

echo "install mysql OK!!"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值