设为首页 收藏本站
查看: 397|回复: 0

[经验分享] 自动安装mysql脚本

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-9-18 09:17:03 | 显示全部楼层 |阅读模式
                      #!/bin/bash
############################################
# automatic configure mysql from source code since mysql 5.5.37      #
# edit by rgf in 2014/08/20                                                                 #
# e-mail gfsunny@163.com                                                                 #
############################################
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.5.37
echo
echo "No.1: create group && user for mysql"
echo
grep mysql /etc/group &> /dev/null
if [ $? == 0 ]; then
        echo "group: mysql already exists"
else
        groupadd mysql
fi
grep mysql /etc/passwd &> /dev/null
if [ $? == 0 ]; then
        echo "user: mysql already exists"
else
        useradd -g mysql mysql
fi
echo "check relative user and group done! "

echo
echo "No.2:define and create relative directory"

if [ ! -d "$base_dir" ];then
        mkdir -p "$base_dir"
        echo ""$base_dir" has been created"
else
        echo ""$base_dir" directory already exists"
fi
if [ ! -d "$data_dir" ];then
        mkdir -p "$data_dir"
        echo ""$data_dir" has been created"
else
        echo ""$data_dir" directory already exists"
fi
if [ ! -d "$logs_dir" ];then
        mkdir -p "$logs_dir"
        echo ""$logs_dir" has been created"
else
        echo ""$logs_dir" directory already exists"
fi
cd $data_root
chown -R mysql:mysql *
cd -
echo "check relative directory done!"

echo "No.3: check whether mysql is already installed?"
echo
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
                echo "$i was uninstalled!!"
        else
                echo "$i had been uninstalled!!"
        fi
done

echo
echo "No.4: check and install relative packages"
echo
rpm -qa |grep gcc &> /dev/null
if [ $? == 0 ]; then
        echo "gcc already exists"
else
        yum -y install gcc
fi
echo
rpm -qa |grep flex &> /dev/null
if [ $? == 0 ]; then
        echo "flex already exists"
else
        yum -y install flex
fi
echo
rpm -qa |grep bison &> /dev/null
if [ $? == 0 ]; then
        echo "bison already exists"
else
        yum -y install bison
fi
echo
echo
rpm -qa |grep autoconf &> /dev/null
if [ $? == 0 ]; then
        echo "autoconf already exists"
else
        yum -y install autoconf
fi
echo
echo
rpm -qa |grep automake &> /dev/null
if [ $? == 0 ]; then
        echo "automake already exists"
else
        yum -y install automake
fi
echo
echo
rpm -qa |grep cmake &> /dev/null
if [ $? == 0 ]; then
        echo "cmake already exists"
else
        yum -y install cmake
fi
echo
echo
rpm -qa |grep ncurses-devel &> /dev/null
if [ $? == 0 ]; then
        echo "ncurses-devel already exists"
else
        yum -y install ncurses-devel
fi
echo
echo
rpm -qa |grep curl-devel &> /dev/null
if [ $? == 0 ]; then
        echo "curl-devel already exists"
else
        yum -y install curl-devel
fi
echo
echo
rpm -qa |grep make &> /dev/null
if [ $? == 0 ]; then
        echo "make already exists"
else
        yum -y install make
fi
echo

echo
rpm -qa |grep lynx &> /dev/null
if [ $? == 0 ]; then
        echo "lynx already exists"
else
        yum -y install lynx
fi

echo "check relative install packages done! "
echo
echo "No.5: unzip $db_version"
echo
tar -zxvf "$db_version".tar.gz
cd "$db_version"
mkdir project
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! "
echo "No.6: make && make install"
make -j `cat /proc/cpuinfo | grep processor| wc -l`
make install
echo "mysql installation is over"
echo "No.7: Now,begin to change and set environment variables!!"
echo
cd $base_dir
chown -R 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 install db"
$base_dir/scripts/mysql_install_db --user=mysql --datadir=$data_dir --basedir=$base_dir
alias cp='cp'
cp -f $base_dir/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
chkconfig --add mysqld
echo "change and set environment variables done! "
echo
echo "No.8: 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!"
fi
echo
mysqladmin -u$db_user -p$db_pwd -f drop rgf
echo "test 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 ../../
echo
echo "No.9: install mysql OK!!"
echo
#该脚本经过测试,运行正常。运用时只需要修改脚本开头的参数即可
                   


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-25013-1-1.html 上篇帖子: mysql预热缓冲池 下篇帖子: 模拟优化参数optimizer_switch选项mrr(Multi_Range Read)对查询优化的影响 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表