#!/bin/bash
# Filename:    install_mysql57.sh
# Revision:    1.0
# Date:        2019/07/12
# Author:      sdhzdtwhm
# Description: centos7 install mysql
# 使用方法:
# ./脚本名称 安装目录 root密码 创建的应用账户 应用账户密码
# ./install_mysql57.sh /data abc123! appuser appuser@123!
# uninstall:rm -rf /data/ /usr/local/bin/mysql* /tmp/mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz /tmp/init.sql /etc/init.d/mysqld && userdel -r mysql
base_dir=$1
mysql_root_password=$2
mysql_app_user=$3
mysql_app_password=$4
host_ip=$(python -c "import socket;print([(s.connect(('8.8.8.8', 53)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1])")
down_url=https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.7/mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
package_name=mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz
package_dir=mysql-5.7.26-linux-glibc2.12-x86_64
#1.config_selinux
function config_selinux(){
setenforce 0
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
}
#2.down_sofware
function down_software(){
cd /tmp/
curl -s -O  $down_url
}
#3.config_mysql
function config_mysql(){
mkdir -p $base_dir
tar -zxf /tmp/$package_name -C $base_dir
ln -s $base_dir/$package_dir $base_dir/mysql
ln -s $base_dir/$package_dir/bin/mysql /usr/local/bin/mysql
ln -s $base_dir/$package_dir/bin/mysqlbinlog /usr/local/bin/mysqlbinlog
ln -s $base_dir/$package_dir/bin/mysqldump /usr/local/bin/mysqldump
ln -s $base_dir/$package_dir/bin/mysqld /usr/local/bin/mysqld
ln -s $base_dir/$package_dir/bin/mysql_secure_installation /usr/local/bin/mysql_secure_installation
#adduser
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
#mkdir
/bin/mkdir -p $base_dir/mysql/data
/bin/mkdir -p $base_dir/mysql/logs
#touch
touch $base_dir/mysql/logs/mysql-error.log
/bin/chown -R mysql:mysql $base_dir/$package_dir
}
#4.config_mycnf
function config_mycnf(){
if [ -f /etc/my.cnf ]; thenmv /etc/my.cnf /etc/my.cnf_bak
fi
cat > $base_dir/mysql/my.cnf << EOF
[mysqld]
server-id =`echo $host_ip |cut -d "." -f 4`
report-host=$host_ip
port = 3306
user = mysql
basedir = $base_dir/mysql
datadir = $base_dir/mysql/data
tmpdir = $base_dir/mysql/
socket = /tmp/mysql.sock
pid-file = $base_dir/mysql/mysql.pid
skip-external-locking
skip-name-resolve
wait-timeout = 28800
connect_timeout = 20
interactive_timeout =28800
#binlog
log_bin_trust_function_creators = 1
log_bin = $base_dir/mysql/logs/mysql-bin
binlog_format = row
expire-logs-days = 7
binlog_cache_size = 2M
#master_master_config
#auto_increment_offset = 1
#auto_increment_increment = 2
#error_log
log_error = $base_dir/mysql/logs/mysql-error.log
#slow_log
slow_query_log = 1
slow_query_log_file = $base_dir/mysql/logs/mysql-slow.log
long_query_time = 5
#relay_log
relay_log = $base_dir/mysql/logs/mysql-relay-bin
relay_log_recovery = 1
#innodb
innodb_write_io_threads = 32
innodb_read_io_threads = 32
innodb_buffer_pool_size = 1G
innodb_file_per_table = 1
innodb_log_file_size = 50M
innodb_log_buffer_size = 64M
innodb_flush_log_at_trx_commit = 1
max_connections = 1024
max_connect_errors = 1000
lower_case_table_names = 1
key_buffer_size = 64M
table_open_cache = 6144
table_definition_cache = 4096
sort_buffer_size = 512K
read_buffer_size = 512K
join_buffer_size = 512K
tmp_table_size = 64M
max_heap_table_size = 64M
max_allowed_packet = 1024M
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
explicit_defaults_for_timestamp=true
[mysqldump]
quick
max_allowed_packet = 1024M
[mysqld_safe]
open_files_limit = 65535
EOF
}
#5.init_mysql
function init_mysql(){
mysqld --initialize-insecure --user=mysql --datadir=$base_dir/mysql/data --basedir=$base_dir/mysql
}
#6.config_service
function config_service(){
if [ -f /etc/my.cnf ]; thenmv /etc/init.d/mysqld /etc/init.d/mysqld_bak
fi
cp $base_dir/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i "46s#basedir=#basedir=$base_dir/mysql#g" /etc/init.d/mysqld
sed -i "47s#datadir=#datadir=$base_dir/mysql/data#g" /etc/init.d/mysqld
service mysqld start
chkconfig mysqld on
}
#7.config_mysql_user
function config_mysql_user(){
cat > /tmp/init.sql <<EOF
use mysql;
update user set authentication_string = password('$mysql_root_password'), password_expired = 'N', password_last_changed = now() where user = 'root';
grant all privileges on *.* to $mysql_app_user@"%" identified by "$mysql_app_password";
delete from mysql.user where user = '';
FLUSH PRIVILEGES;
EOF
/usr/local/bin/mysql -e "source /tmp/init.sql"
}
#8.main
function main(){
config_selinux;
down_software;
config_mysql;
if [ $? = 0 ];thenconfig_mycnf;if [ $? = 0 ];theninit_mysql;if [ $? = 0 ];thenconfig_service;if [ $? = 0 ];thenconfig_mysql_user;elseecho "config_mysql_user is error!";fielseecho "init_mysql is error!";fielseecho "config_mycnf is error!";fi
elseecho "config_mysql is error!";
fi
echo "install mysql is success!"
}
main

转载于:https://www.cnblogs.com/sdhzdtwhm/p/11176036.html

install_mysql57.sh相关推荐

  1. mysql base dir_install_mysql57.sh

    #!/bin/bash # Filename: install_mysql57.sh # Revision: 1.0 # Date: 2019/07/12 # Author: sdhzdtwhm # ...

  2. 浅显易懂 Makefile 入门 (08)— 默认 shell (/bin/sh)、命令回显、make参数(-n 只显示命令但不执行,-s 禁止所有回显)、单行命令、多行命令、并发执行

    1. shell 相关 1.1 默认 shell Makefile 所使用的命令是由 shell 命令行组成,他们是一条一条执行的. 多个命令之间要使用分号隔开,Makefile 中的任何命令都要以 ...

  3. linux启动,重启,停止 jar,.sh脚本

    linux启动,重启,停止 jar,.sh脚本 #配置jar名称 APP_NAME=receiver.jar#使用说明,用来提示输入参数 usage() { echo "Usage: sh ...

  4. sh计算机,计算机教程:shellII(sh).pdf

    下载 第10章 shell II (sh) Bourne shell (s h ).C shell (c s h )以及Korn shell (k s h )是命令解释程序及高级编程语言. 作为命令解 ...

  5. ecos 编译时无法找到 tclConfig.sh 和 tkConfig.sh

    这是因为 tcl-devel tk-devel 一般系统中默认是不安装的,至少cent-os 5.5 和fedora 11是这样的,安装这两个包即可. # yum install tcl-devel ...

  6. shell与 .sh文件与 .bash文件

    一.shell和bash shell是LInux系统下的解释器,类似于windows下的cmd.shell对用户输入到窗口中的命令行进行解释,输入到内核. bash同样是Linux系统下的解释器,是b ...

  7. linux sh for ls,Linux shell for while 循环

    1.数字段形式 for i in {1..10} do echo $i done 2.详细列出(字符且项数不多) for File in 1 2 3 4 5 do echo $File done 3. ...

  8. linux重启sh脚本,Linux 之shell脚本系列之服务启动/关闭/重启/状态

    一 问题 自己开发的程序,如何用shell 脚本实现 启动,关闭,重启,查看状态? 二 方案 myshell.sh #!/bin/sh SERVICE="fm_tuoguan_shell&q ...

  9. upgrade lnmpa php.sh,LNMP 状态管理命令说明及Nginx、MySQL/MariaDB、PHP升级教程

    状态管理命令分 LNmp状态管理命令 和 LNmpA状态管理命令,LNMPA代表的是Linux下Nginx.MySQL.PHP.Apache这种网站服务器架构,是结合LAMP与LNMP各自的优点而产生 ...

最新文章

  1. paip.无线路由器的无线接入WAN方式WDS设置大法
  2. 科普:3D打印技术是怎么回事
  3. KlayGE新增Realtime Caustics
  4. 【.NET程序性能分析】使用VS自带的工具分析.NET程序的性能
  5. pytorch argsort
  6. python3.6.3安装-CentOS7.2安装Python3.6.3
  7. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?
  8. linux 系统如何防止攻击
  9. php访问方法外变量
  10. php注册后面有对号错号,jQuery Ajax显示对号和错号用于验证输入验证码是否正确...
  11. office2019初体验与kms服务器搭建
  12. win7不休眠方式设置
  13. 物联网下的智慧停车 让智能化找到车位
  14. maven学习系列8----将resources目录下的文件打包到jar包外
  15. 【英语】英语写作——三段式开头
  16. 正则表达式从入门到摸鱼(本文内容过长,先给阿姨来一杯卡布奇诺再阅读)
  17. Thread.Sleep(0)的妙用
  18. 【转】几毛钱的32768晶振,这也能写出一篇干货?
  19. 我的新博客地址https://xmmup.com
  20. 猜数游戏python课程设计_猜数字游戏课程设计完整版

热门文章

  1. csv与json互转_CSV文件转JSON
  2. sumif三个条件怎么填_函数SUMIF和SUMIFS
  3. 一篇特别长的总结(C专家编程)
  4. python——闭包与闭包中修改外部变量
  5. LVS(11)——wrr
  6. 最小路径和—leetcode64
  7. Emacs 快速指南
  8. 浅谈C++ 标准库中的异常 —— stdexcept类
  9. [BUUCTF-pwn]——pwn2_sctf_2016
  10. Android-NDK-hello-jniCallback