shell脚本一键安装MySQL5.7.29的方法

本文参考51CTO博客作者wjw555的作品

脚本内容:

vim install.mysql.sh

#!/bin/bash

[ -f /etc/init.d/functions ]&& . /etc/init.d/functions

###Check if user is root
if [ $UID -ne 0 ]; then
 echo "Error: You must be root to run this script, please use root to install"
 exit 1
fi

clear
echo "========================================================================="
echo "A tool to auto-compile & install MySQL 5.7.29 on Redhat/CentOS Linux "
echo "========================================================================="
#pkill -9 mysql
#date +%Y-%m-%d-%H-%M
#卸载系统自带的Mysql
#/bin/rpm -e $(/bin/rpm -qa | grep mysql|xargs) --nodeps
#/bin/rpm -e $(/bin/rpm -qa | grep mariadb|xargs) --nodeps
#/bin/rm -f /etc/my.cnf

#set mysql root password
 echo "==========================="
  mysqlrootpwd="$1"
  if [ "$1" = "" ]; then
    mysqlrootpwd="rootmysql"
  fi

#which MySQL Version do you want to install?
echo "==========================="

 isinstallmysql57="5.7.29"
 echo "Install MySQL 5.7.29,Please input y"
 read -p "(Please input y , n):"
# Initialize the installation related content.
 #Delete Old Mysql program
 rpm -qa|grep mysql
 rpm -e mysql

cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF

echo "fs.file-max=65535" >> /etc/sysctl.conf

echo "============================Install MySQL 5.7.29=================================="

#Backup old my.cnf
#rm -f /etc/my.cnf
if [ -s /etc/my.cnf ]; then
 mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
fi
echo "============================MySQL 5.7.29 installing…………========================="

##define mysql directory configuration variable
Datadir=/data/mysql/data
Binlogdir=/data/mysql/binlog
Logdir=/data/mysql/logs

##yum install devel and wget mysql
yum install numactl
/usr/bin/wget -P /tmp http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz
sleep 2
tar xf /tmp/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-5.7.29-linux-glibc2.12-x86_64 /usr/local/mysql
grep mysql /etc/passwd
RETVAL=$?
if [ $RETVAL -ne 0 ];then
 useradd mysql -s /sbin/nologin -M
  action "mysql user added successfully" /bin/true
 else
  action " $(echo -e "\e[31;47;5m mysql user already exists\e[0m")" /bin/false
fi

if [ ! -d "$Datadir" ]
then
 mkdir -p /data/mysql/data
fi

if [ ! -d "$Binlogdir" ]
then
 mkdir -p /data/mysql/binlog
fi

if [ ! -d "$Logdir" ]
then
 mkdir -p /data/mysql/logs
fi

chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /usr/local/mysql

#edit /etc/my.cnf
#SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
cat >>/etc/my.cnf<<EOF
[client]
port   = 3306

[mysql]
auto-rehash
prompt="\\u@\\h [\\d]>"
#pager="less -i -n -S"
#tee=/opt/mysql/query.log

[mysqld]
####: for global
user        =mysql
basedir        =/usr/local/mysql/
datadir        =/data/mysql/data
server_id       =2333306
port        =3306
character_set_server    =utf8
explicit_defaults_for_timestamp  =off
log_timestamps      =system
socket        =/tmp/mysql.sock
read_only       =0
skip_name_resolve     =1
auto_increment_increment   =1
auto_increment_offset    =1
lower_case_table_names    =1
secure_file_priv     =
open_files_limit     =65536
max_connections      =1000
thread_cache_size     =64
table_open_cache     =81920
table_definition_cache    =4096
table_open_cache_instances   =64
max_prepared_stmt_count    =1048576      

####: for binlog
binlog_format      =row
log_bin        =/data/mysql/binlog/mysql-bin
binlog_rows_query_log_events  =on
log_slave_updates     =on
expire_logs_days     =7
binlog_cache_size     =65536
#binlog_checksum     =none
sync_binlog       =1
slave-preserve-commit-order   =ON       

####: for error-log
log_error       =/data/mysql/logs/error.log      

general_log       =off
general_log_file     =/data/mysql/logs/general.log     

####: for slow query log
slow_query_log      =on
slow_query_log_file     =/data/mysql/logs/slow.log
#log_queries_not_using_indexes  =on
long_query_time      =1.000000      

####: for gtid
#gtid_executed_compression_period =1000
gtid_mode       =on
enforce_gtid_consistency   =on        

####: for replication
skip_slave_start      =1
#master_info_repository    =table
#relay_log_info_repository   =table
slave_parallel_type     =logical_clock
slave_parallel_workers    =4
#rpl_semi_sync_master_enabled  =1
#rpl_semi_sync_slave_enabled   =1
#rpl_semi_sync_master_timeout  =1000
#plugin_load_add      =semisync_master.so
#plugin_load_add      =semisync_slave.so
binlog_group_commit_sync_delay  =100
binlog_group_commit_sync_no_delay_count = 10      

####: for innodb
default_storage_engine       =innodb
default_tmp_storage_engine      =innodb
innodb_data_file_path       =ibdata1:1024M:autoextend
innodb_temp_data_file_path      =ibtmp1:12M:autoextend
innodb_buffer_pool_filename      =ib_buffer_pool
innodb_log_group_home_dir      =/data/mysql/data
innodb_log_files_in_group      =3
innodb_log_file_size       =1024M
innodb_file_per_table       =on
innodb_online_alter_log_max_size    =128M
innodb_open_files        =65535
innodb_page_size        =16k
innodb_thread_concurrency      =0
innodb_read_io_threads       =4
innodb_write_io_threads       =4
innodb_purge_threads       =4
innodb_page_cleaners       =4
     # 4(刷新lru脏页)
innodb_print_all_deadlocks      =on
innodb_deadlock_detect       =on
innodb_lock_wait_timeout      =20
innodb_spin_wait_delay       =128
innodb_autoinc_lock_mode      =2
innodb_io_capacity        =200
innodb_io_capacity_max       =2000
#--------Persistent Optimizer Statistics
innodb_stats_auto_recalc      =on
innodb_stats_persistent       =on
innodb_stats_persistent_sample_pages   =20      

innodb_adaptive_hash_index      =on
innodb_change_buffering       =all
innodb_change_buffer_max_size     =25
innodb_flush_neighbors       =1
#innodb_flush_method        =
innodb_doublewrite        =on
innodb_log_buffer_size       =128M
innodb_flush_log_at_timeout      =1
innodb_flush_log_at_trx_commit     =1
innodb_buffer_pool_size       =4096M
innodb_buffer_pool_instances     =4
autocommit          =1
#--------innodb scan resistant
innodb_old_blocks_pct       =37
innodb_old_blocks_time       =1000
#--------innodb read ahead
innodb_read_ahead_threshold      =56
innodb_random_read_ahead      =OFF
#--------innodb buffer pool state
innodb_buffer_pool_dump_pct      =25
innodb_buffer_pool_dump_at_shutdown    =ON
innodb_buffer_pool_load_at_startup    =ON      

EOF

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data
Pass=$(grep 'A temporary password' /data/mysql/logs/error.log |awk '{print $NF}')
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig mysqld on
/etc/init.d/mysqld start
echo "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
echo "============================MySQL 5.7.29 install completed========================="
ps -eo start,cmd,pid|grep mysql
/usr/local/mysql/bin/mysqladmin -uroot -p"$Pass" password $mysqlrootpwd
[root@localhost ~]# sh install.mysql.sh mysqlroot
[root@localhost ~]# source /etc/profile.d/mysql.sh

说明: mysqlroot 为安装脚本修改MySQL服务默认密码后的新的密码

[root@localhost ~]# mysql -uroot -p'mysqlroot' -e "select now()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---------------------+
| now()    |
+---------------------+
| 2020-10-13 16:18:47 |
+---------------------+

到此处MySQL服务启动成功!

总结

到此这篇关于shell脚本一键安装MySQL5.7.29 的文章就介绍到这了,更多相关shell脚本一键安装MySQL内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间: 2020-10-15

Centos7安装 mysql5.6.29 shell脚本

本文实例为大家分享了mysql5.6.29的shell脚本,供大家参考,具体内容如下 创建脚本mysql.sh,直接运行sh mysql.sh #!/bin/bash if [ -d /software ] ;then cd /software else mkdir /software && cd /software fi #is exist command ,if not,yum install is_exist() { which $1 if [ $? -ne 0 ] ;then yu

MySQL5.7安装过程并重置root密码的方法(shell 脚本)

由于 MySQL 5.7 版本的 root 密码是首次启动时随机生成的,并且还要求必须修改后才能使用,所以有了本文:使用 shell 脚本完成安装和设置新的 root 密码. 以官方的 rpm 包安装为例,先下载,使用 yum 命令安装,如果有需要的依赖包会自动安装 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar tar xf mysql-5.7.17-1.el6

在Linux下修改和重置root密码的方法(超简单)

刚开始接触Linux的人,忘记了root密码可能会不知所措.想找回自己的root密码,但是又不知道方法.其实,只需要简单的几步就可以重置自己的root密码了(找回密码我也不会) 1.开机之后在内核上敲击e,然后编辑选项 2.在linux16这一行,将红框内的内容改成rw rd.break 根据提示,使用组合键CTRL+X进入密码修改 3.进入到系统的紧急求援模式 4.依次输入以下的命令 # chroot /sysroot //进入系统的根目录 # passwd //重置密码 # touch /.

CentOS7如何重置root密码的方法

搬砖过程中杂七杂八的环境和配置问题,每次总能碰到不一样的错误.Google一下发现别人能解决的方法不一定适合你.这次我遇到问题的环境是: Windows 10 企业版 2016 LTS VMware® Workstation 14 Pro 14.1.0 build-7370693 CentOS Linux release 7.5.1804 (Core) VMWare中安装的CentOS 7 root密码忘记了,于是只能重置 一.启动客户机 进入如上界面之后按e,然后进入如下界面 二.修改启动文件

VMware与Centos系统安装之重置root密码的方法

今日任务 1.Linux发行版的选择 2.vmware创建一个虚拟机(centos) 3.安装配置centos7 4.xshell配置连接虚拟机(centos) 选择性 pc可以选择 -纯系统 Linux/windows     -双系统    Windows+Linux     -虚拟化技术    Windows+vmware workstation 服务器 -物理机纯系统     -物理机+vmware(vmware esxi)     -物理机+docker 安装 -简易安装     -自

Windows10下MySQL5.7.19安装教程 MySQL忘记root密码修改方法

以MySQL5.7.19安装为例,先进行下载 当然首先是要下载咯https://dev.mysql.com/downloads/mysql/ 官网下载地址. 选择适合自己电脑的版本,点击Download,跳转,直接No thanks下载好了. 静静的等待下载,解压.这是我的解压路径D:\MySQL 正式开始安装 :Windows10 :MySQL5.7.19 解压之后 然而并没有my.ini 创建一个就行了,新建文本文档->后缀名改成ini就行了. [Client] #设置3306端口 port

Linux VPS利用SSH重置ROOT密码的方法

鉴于我们的VPS安全性,老左建议大家为了维护VPS的安全性,也有必要在一段时间修改ROOT密码.VPS管理平台用户后台如果没有修改ROOT密码,也不要紧,我们可以利用SSH直接修改,一个单词命令就可以完成.只需要两步就可以完成. 第一步,登录我们的SSH,一般老左喜欢用PUTTY软件直接登录,这个我相信大家不要我再截图给大家看了吧. 第二步,用root用户名和密码登录. 输入"passwd"命令回车后然后会提示我们输入新密码,然后回车再输入一次.回车后我们就设置完毕,以后我们就用新的R

MySql5.7.11编译安装及修改root密码的方法小结

推荐阅读: Mysql5.7忘记root密码及mysql5.7修改root密码的方法 Mac 安装和卸载 Mysql5.7.11 的方法 系统是cenos6.7 64位的,默认mysql5.7.11下载到/usr/local/src,安装目录在/app/local/mysql目录下,mysql数据放置目录/app/local/data.mysql从5.1后采用cmake方式编译安装,所以要先编译安装cmake工具,也可以采用yum方式安装cmake.从mysql5.7开始编译安装需要boost库

Mac MySQL重置Root密码的教程

申明:本重置密码可直接对Homebrew安装的MySQL进行密码重置,对于其他方式安装的MySQL需要切换对应的安装目录即可. 安装MySQL后时间太长了会忘记密码,在这里总结一下忘记密码时如何重置本地MySQL Root密码. 所有操作都在Mac终端(Terminal)中完成. 停止服务和进程: brew services stop mysql 进入文件夹: cd /usr/local/opt/mysql/bin 执行越权命令(mysql): mysqld_safe --user=mysql

Mysql5.6忘记root密码修改root密码的方法

mysql5.6忘记数据库的root密码: [root@oraserver139 ~]# mysql -uroot -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 查看当前安装的mysql版本: root@oraserver139 ~]# rpm -qa | grep MySQL MySQL-server-5.6.15-1.el6.x86_6

MySQL密码忘了怎么办?MySQL重置root密码方法

MySQL有时候忘记了root密码是一件伤感的事.这里提供Windows 和 Linux 下的密码重置方法. Windows: 1.以系统管理员身份登陆系统. 2.打开cmd-----net start 查看mysql是否启动.启动的话就停止net stop mysql. 3.我的mysql安装在d:\usr\local\mysql4\bin下. 4.跳过权限检查启动mysql. d:\usr\local\mysql\bin\mysqld-nt --skip-grant-tables 5.重新打