热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql源码安装脚本分享

这篇文章主要介绍了mysql源码安装的脚本,配置文件的内容是针对mysql5.6的,需要的朋友可以参考下

代码如下:

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
clear;
SysName=""
SysBit=""
CpuNum=""
RamTotal=""
RamSwap=""
FileMax=""
MysqlVersion="Percona-Server-5.6.15-rel63.0"
MysqlLine="http://www.percona.com/downloads/Percona-Server-5.6/LATEST/source"
MysqlPath="/usr/local/mysql"
MysqlDataPath="$MysqlPath/data"
MysqlLogPath="/var/log/mysql"
MysqlCOnfigPath="$MysqlPath/conf"
MysqlPass="test123"
SYSTEM_CHECK(){
 [[ $(id -u) != '0' ]] && echo '[Error] Please use root to install PUPPET.' && exit;
 egrep -i "centos" /etc/issue && SysName='centos';
 egrep -i "ubuntu" /etc/issue && SysName='ubuntu';
 [[ "$SysName" == '' ]] && echo '[Error] Your system is not supported this script' && exit;
 SysBit='32' && [ `getconf WORD_BIT` == '32' ] && [ `getconf LONG_BIT` == '64' ] && SysBit='64';
 CpuNum=`cat /proc/cpuinfo |grep 'processor'|wc -l`;
 RamTotal=`free -m | grep 'Mem' | awk '{print $2}'`;
 RamSwap=`free -m | grep 'Swap' | awk '{print $2}'`;
 FileMax=`cat /proc/sys/fs/file-max`
}
INSTALL_BASE_PACKAGES()
{
 SYSTEM_CHECK
 if [ "$SysName" == 'centos' ]; then
  echo '[yum-fastestmirror Installing] ************************************************** >>';
  yum -y install yum-fastestmirror;
  cp /etc/yum.conf /etc/yum.conf.lnmp
  sed -i 's:exclude=.*:exclude=:g' /etc/yum.conf
  for packages in gcc gcc-c++ openssl-devel ncurses-devel wget crontabs iptables bison cmake automake make readline-devel logrotate openssl; do
   echo "[${packages} Installing] ************************************************** >>";
   yum -y install $packages;
  done;
  mv -f /etc/yum.conf.lnmp /etc/yum.conf;
 else
  apt-get remove -y mysql-client mysql-server mysql-common;
  apt-get update;
  for packages in gcc g++ cmake make ntp logrotate cron bison libncurses5-dev libncurses5 libssl-dev openssl curl openssl; do
   echo "[${packages} Installing] ************************************************** >>";
   apt-get install -y $packages --force-yes;apt-get -fy install;apt-get -y autoremove;
  done;
 fi;
}
INSTALL_MYSQL(){
 INSTALL_BASE_PACKAGES
 cd /tmp/
 echo "[${MysqlVersion} Installing] ************************************************** >>";
 [ ! -f ${MysqlVersion}.tar.gz ] && wget -c ${MysqlLine}/${MysqlVersion}.tar.gz
 tar -zxf /tmp/$MysqlVersion.tar.gz;
 cd /tmp/$MysqlVersion;
 groupadd mysql;
 useradd -s /sbin/nologin -g mysql mysql;
 cmake -DCMAKE_INSTALL_PREFIX=$MysqlPath  -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_READLINE=ON -DENABLED_LOCAL_INFILE=ON -DWITH_INNODB_MEMCACHED=ON -DWITH_UNIT_TESTS=OFF;
 make -j $Cpunum;
 make install;
 for path in $MysqlLogPath $MysqlPath $MysqlConfigPath/conf.d $MysqlDataPath;do
  [ ! -d $path ] && mkdir -p $path
  chmod 740 $path;
  chown -R mysql:mysql $path;
 done
# EOF **********************************
cat > $MysqlConfigPath/my.cnf<[mysqld]
user  = mysql
server-id = 1
pid-file = /var/run/mysqld.pid
socket  = /var/run/mysqld.sock
port  = 3306
basedir  = $MysqlPath
datadir  = $MysqlDataPath
bind-address = 0.0.0.0
skip-name-resolve
skip-external-locking
thread_concurrency = `expr $CpuNum \* 2`
max_connections = `expr $FileMax \* $CpuNum \* 2 / $RamTotal`
max_connect_errors = 30
table_open_cache = `expr $RamTotal + $RamSwap`
max_allowed_packet = `expr $RamTotal \* 2 / 1000`M
binlog_cache_size = 4M
max_heap_table_size = `expr $RamTotal / 100`M
sort_buffer_size = `expr $RamTotal \* 2 / 1000`M
join_buffer_size = `expr $RamTotal \* 2 / 1000`M
query_cache_size = `expr $RamTotal / 100`M
thread_cache_size = 30
thread_concurrency = `expr $CpuNum \* 4`
connect_timeout  = 1200
wait_timeout  = 1200
general_log = 1
general_log_file = $MysqlLogPath/mysql.log
log_error = $MysqlLogPath/mysql-err.log
slow_query_log = 1
slow_query_log_file = $MysqlLogPath/mysql-slow.log
long_query_time = 3
log_bin = $MysqlLogPath/mysql-bin
log_bin_index = $MysqlLogPath/mysql-bin.index
expire_logs_days = 7
max_binlog_size = `expr $(df -m $MysqlLogPath |awk 'NR==2{printf "%s\n",$4}') / 10000`M
default_storage_engine = InnoDB
innodb_buffer_pool_size = `expr $RamTotal / 100`M
innodb_log_buffer_size = 8M
innodb_file_per_table = 1
innodb_open_files = `expr $FileMax \* $CpuNum / $RamTotal`
innodb_io_capacity = `expr $FileMax \* $CpuNum / $RamTotal`
innodb_flush_method = O_DIRECT

!includedir $$MysqlConfigPath/conf.d
[mysqld_safe]
open_files_limit = `expr $FileMax / $CpuNum / 100`
[isamchk]
key_buffer  = 16M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
EOF
# **************************************
 $MysqlPath/scripts/mysql_install_db --user=mysql --defaults-file=$MysqlConfigPath/my.cnf --basedir=$MysqlPath --datadir=$MysqlDataPath;
# EOF **********************************
cat > /etc/ld.so.conf.d/mysql.conf</usr/local/mysql/lib/mysql
/usr/local/lib
EOF
# **************************************
 ldconfig;
 if [ "$SysBit" == '64' ] ; then
  ln -s $MysqlPath/lib/mysql /usr/lib64/mysql;
 else
  ln -s $MysqlPath/lib/mysql /usr/lib/mysql;
 fi;
 cp $MysqlPath/support-files/mysql.server /etc/init.d/mysqld;
 chmod 775 /etc/init.d/mysqld;
 /etc/init.d/mysqld start;
 ln -s $MysqlPath/bin/mysql /usr/bin/mysql;
 ln -s $MysqlPath/bin/mysqladmin /usr/bin/mysqladmin;
 $MysqlPath/bin/mysqladmin password $MysqlPass;
 rm -rf $MysqlDataPath/test;
# EOF **********************************
mysql -hlocalhost -uroot -p$MysqlPass <USE mysql;
DELETE FROM user WHERE user='';
UPDATE user set password=password('$MysqlPass') WHERE user='root';
DELETE FROM user WHERE not (user='root');
DROP USER ''@'%';
FLUSH PRIVILEGES;
EOF
# **************************************
 echo "[OK] ${MysqlVersion} install completed.";
}
INSTALL_MYSQL


推荐阅读
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • top命令使用方法及解读
    本文介绍了top命令的使用方法和解读,包括查看进程信息、系统负载、内存状态、CPU占用等内容。通过top命令可以持续观察系统上运行的进程,并了解系统负载情况,及时关闭一些进程以减轻系统负担。同时,还介绍了top命令的快捷键和安全模式启动方法。通过本文的学习,读者可以更好地使用top命令来管理系统进程。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • STM32 IO口模拟串口通讯
    转自:http:ziye334.blog.163.comblogstatic224306191201452833850647前阵子,调项目时需要用到低波 ... [详细]
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼*madebyebhrz*#include#include#include#include#include#include#include ... [详细]
  • PHP中的curl_multi系列函数可以实现同时请求多个URL来实现并发,而不是像普通curl函数那样请求后会阻塞,直到结果返回才进行下一个请求。因此在批量请求URL时可通过curl_multi系列函数提升程序的运行效率。curl普通请求$startT ... [详细]
  • 进入配置文件目录:[rootlinuxidcresin-4.0.]#cdusrlocalresinconf查看都有哪些配置文件:[rootlinuxid ... [详细]
  • 这个问题困扰了我两天,卸载Dr.COM客户端(我们学校上网要装这个客户端登陆服务器,以后只能在网页里输入用户名和密码了),问题解决了。问题的现象:在实验室机台式机上安装openfire和sp ... [详细]
author-avatar
wangya5317
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有