How to install MySQL 5.7.29 with one click using shell script

How to install MySQL 5.7.29 with one click using shell script

This article refers to the work of 51CTO blog author wjw555

Script content:

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
#Uninstall the system's own 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 (refresh lru dirty pages)
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

Note: mysqlroot is the new password after the installation script changes the default password of the MySQL service

[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 |
+---------------------+

At this point, the MySQL service has been started successfully!

Summarize

This is the end of this article about installing MySQL 5.7.29 with one click using shell script. For more information about installing MySQL with one click using shell script, please search for previous articles on 123WORDPRESS.COM or continue browsing the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • Shell script to monitor MySQL master-slave status
  • MySQL common backup commands and shell backup scripts sharing
  • Shell script to backup MySQL database data regularly and retain it for a specified time
  • Shell script automates the creation of basic configuration of virtual machines: tomcat--mysql--jdk--maven
  • Shell script to implement mysql scheduled backup, deletion and recovery functions
  • A small Shell script to accurately count the number of rows in each Mysql table
  • Create MySQL database accounts on the server in batches through Shell scripts
  • How to add index to mysql using shell script
  • Kill a bunch of MySQL databases with just a shell script like this (recommended)
  • How to use shell scripts to automatically back up multiple MySQL databases every day
  • Introduction and installation of MySQL Shell

<<:  Implementation of Nginx configuration and access to local static resources in Mac environment

>>:  The difference between JS pre-parsing and variable promotion in web interview

Recommend

How to view and close background running programs in Linux

1. Run the .sh file You can run it directly using...

Detailed explanation of the production principle of jQuery breathing carousel

This article shares the specific process of the j...

How MySQL supports billions of traffic

Table of contents 1 Master-slave read-write separ...

Vue2.0 implements adaptive resolution

This article shares the specific code of Vue2.0 t...

iview implements dynamic form and custom verification time period overlap

Dynamically adding form items iview's dynamic...

How to use MySQL common functions to process JSON

Official documentation: JSON Functions Name Descr...

JavaScript adds prototype method implementation for built-in objects

The order in which objects call methods: If the m...

Docker installation tomcat dubbo-admin instance skills

1. Download the tomcat image docker pull tomcat:8...

Preventing SQL injection in web projects

Table of contents 1. Introduction to SQL Injectio...

Detailed explanation of the principles of Vue's responsive system

Table of contents The basic principles of Vue'...

Design Tips: We think you will like it

<br />Looking at this title, you may find it...

Example of implementing login effect with vue ElementUI's from form

Table of contents 1. Build basic styles through E...