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

脚本内容:

vim install.mysql.sh #!/bin/bash [ -f /etc/init.d/functions ]&& . /etc/init.d/functions ###Check if user is rootif [ $UID -ne 0 ]; then echo "Error: You must be root to run this script, please use root to install" exit 1fi clearecho "========================================================================="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 65535EOF echo "fs.file-max=65535" >> /etc/sysctl.conf echo "============================Install MySQL 5.7.29==================================" #Backup old my.cnf#rm -f /etc/my.cnfif [ -s /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bakfiecho "============================MySQL 5.7.29 installing…………=========================" ##define mysql directory configuration variableDatadir=/data/mysql/dataBinlogdir=/data/mysql/binlogLogdir=/data/mysql/logs ##yum install devel and wget mysqlyum 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.gzsleep 2tar 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/mysqlgrep mysql /etc/passwdRETVAL=$?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/falsefi if [ ! -d "$Datadir" ]then mkdir -p /data/mysql/datafi  if [ ! -d "$Binlogdir" ]then mkdir -p /data/mysql/binlogfi if [ ! -d "$Logdir" ]then mkdir -p /data/mysql/logsfi chown -R mysql:mysql /data/mysqlchown -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-rehashprompt="\\u@\\h [\\d]>"#pager="less -i -n -S"#tee=/opt/mysql/query.log [mysqld]####: for globaluser        =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 binlogbinlog_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-loglog_error       =/data/mysql/logs/error.log       general_log       =off       general_log_file     =/data/mysql/logs/general.log      ####: for slow query logslow_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 replicationskip_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 innodbdefault_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 Statisticsinnodb_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     =4autocommit          =1       #--------innodb scan resistantinnodb_old_blocks_pct       =37      innodb_old_blocks_time       =1000      #--------innodb read aheadinnodb_read_ahead_threshold      =56      innodb_random_read_ahead      =OFF      #--------innodb buffer pool stateinnodb_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/dataPass=$(grep 'A temporary password' /data/mysql/logs/error.log |awk '{print $NF}')cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqldchkconfig --add mysqldchkconfig mysqld on/etc/init.d/mysqld startecho "export PATH=$PATH:/usr/local/mysql/bin" > /etc/profile.d/mysql.shsource /etc/profile.d/mysql.shecho "============================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 ~]# 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 |+---------------------+

总结

更多相关文章

  1. 基于MQTT实现Android消息推送(Push)
  2. android ndk编译x264开源(用于android的ffmpeg中进行软编码)
  3. Android(安卓)ROM的创建和烧录
  4. Android(安卓)ASE 脚本环境
  5. Android实现圆角弹框功能
  6. android实现静默安装demo
  7. android WebView解析 调用html5页面
  8. Android(安卓)SDK源码提取Python脚本(4.0SDK源码下载地址)
  9. Android中间键开发

随机推荐

  1. How can clear screen in php cli (like
  2. PHP / MySQL - 有时会将空白条目添加到
  3. Laravel手把手系列教程之一环安装和环境
  4. php和django位于同一个lighttpd服务器上
  5. 如何加载json文件?
  6. 将node.js服务器更改为Apache服务器
  7. 纯真ip数据库查询的php实现(补充分组查询)
  8. thinkPHP5下扩展encryptedData解密算法文
  9. 用户GROUP BY ERROR之间的SQL查询private
  10. JSON解析错误:无法识别的标记'<'处于角度