使用说明:

自定义数据库账号、密码和数据库安装目录。脚本最后输出的是主机第一张网卡的地址,实际可用连接地址要根据自己实际情况,尤其是云服务器。

安装包来源于华为云,可自行指定华为云支持下载的MySQL 5.7 和 MySQL 8.0,不支持从华为云下载的其他MySQL 5.7 和 MySQL 8.0 版本可提前从其他网站下载放置于安装目录 ,该脚本只测试MySQL 8.0 和 MySQL 5.7版本在线安装和使用提前下载的二进制安装包安装。

具体可在线下载安装MySQL 5.7 和 MySQL 8.0 版本,请登录华为云开源镜像站核对:

https://repo.huaweicloud.com/mysql/Downloads/https://repo.huaweicloud.com/mysql/Downloads/              支持的二进制安装包格式如:

1、MySQL 5.7 版本的格式:mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz

2、MySQL 8.0 版本的格式:mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz

#!/bin/bash# create by tudou
# 2023-04-24
set -e# 用户自定义参数,可选,不写则按默认值安装#==========================================================================#==========================================================================#                                                                          #  # 用户自定义参数使用说明,非必填;直接复制脚本即可完成安装MySQL                                         #  1. 默认情况 root@'localhost' 账号只能本地登录,且密码为空                #  2.不设置用户则使用账号 root@% 且生成随机密码                             #  3.设置了用户没设置密码,密码和用户一致                                   #  4.设置了密码,但是没有设置用户账号,则使用该密码作为 root@'%' 的密码     #  5.若没有指定安装目录,默认值为:   DBinstall_root=/opt/mysql#  6.未指定数据库端口,则使用默认值: 3306                                   #  7.自定义安装mysql版本,请从华为云获取mysql版本压缩包文件名#  8.可用下载版本号见华为云:https://repo.huaweicloud.com/mysql/Downloads#  9.一键安装脚本只支持 mysql-5.7 和mysql-8.0 两个大版本#  10.默认安装版本: mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz# DBuser=tudou# DBpassword=tudou# DBport=3306# DBinstall_root=/opt/mysql# MySQL 8.0 #mysql_version='mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz'#mysql_version='mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz'# MySQL 5.7#mysql_version='mysql-5.7.33-linux-glibc2.12-x86_64.tar.gz'#mysql_version='mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz'#==========================================================================#==========================================================================#  # MySQL 安装目录结构简介
#
#  ${DBinstall_root}
#  ├── ${mysql_version%.tar*}
#  └── mysqldata
#      ├── data
#      ├── etc
#      └── logs
## 确认是 Centos7 使用 root 用户执行
check(){# 确认是 Centos7 系统systemver=`cat /etc/redhat-release|sed -r 's/.* ([0-9]+)\..*/\1/'`echo $systemverif [[ $systemver != "7" ]];thenecho "请在Centos7系统执行脚本,请检查系统版本,终止作业"exit 1fi# 确认执行用户是 rootif [[ $(id -u --name) != "root" ]];thenecho "请使用 root 用户登录,执行脚本;请检查执行用户,终止作业"exit 1fi# 已存在运行的 mysqld 则退出安装if [[ `ps -ef |grep mysqld |wc -l` -ge 2 ]];thenecho "mysqld is running..."echo "将退出安装程序"exit 1fi
}InitSystem(){## stop && disable firewalld ##systemctl stop firewalldsystemctl disable firewalld#  if [ -z $DBport ];then
#     firewall-cmd --permanent --add-port=3306/tcp
#    else
#     firewall-cmd --permanent --add-port=$DBport/tcp
#  fi## edit /etc/sysctl.conf ##echo "kernel.shmall = 2043878" >> /etc/sysctl.confecho "kernel.shmmax = 8175512" >> /etc/sysctl.conf  echo "kernel.shmmni = 4096"  >> /etc/sysctl.confecho "kernel.sem = 250 32000 100 128"  >> /etc/sysctl.confecho "fs.file-max = 65536"  >> /etc/sysctl.confecho "net.ipv4.ip_local_port_range = 1024 65000"  >> /etc/sysctl.confecho "net.core.rmem_default = 262144"  >> /etc/sysctl.confecho "net.core.rmem_max = 262144"  >> /etc/sysctl.confecho "net.core.somaxconn = 2048"  >> /etc/sysctl.confecho "net.core.wmem_default = 262144"  >> /etc/sysctl.confecho "net.core.wmem_max = 262144"  >> /etc/sysctl.confecho "net.ipv4.tcp_rmem = 262144"  >> /etc/sysctl.confecho "net.ipv4.tcp_wmem = 262144"  >> /etc/sysctl.conf## ulimit settings ##echo "* soft nofile 65536" >> /etc/security/limits.confecho "* hard nofile 65536" >> /etc/security/limits.confecho "* soft nproc 65536"  >> /etc/security/limits.confecho "* hard nproc 65536"  >> /etc/security/limits.confsysctl -p## echo install resault ##
}InstallPrepare(){# install yum repomkdir -p /etc/yum.repos.d/backupmv /etc/yum.repos.d/*.repo /etc/yum.repos.d/backup/curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repoyum clean all && yum makecacheyum install -y vim wget tree net-tools numactl-libs libaio tarrm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
}InstallDB(){  # 安装目录if [ -z ${DBinstall_root} ];thenecho -e "\e[33m 安装目录:/opt/mysql \e[0m"DBinstall_root=/opt/mysqlelseecho -e "\e[33m 安装目录: ${DBinstall_root} \e[0m"DBinstall_root=${DBinstall_root}fi# 判断需要安装的mysql二进制压缩包文件,本地不存在则从华为云下载; https://repo.huaweicloud.com/mysql/Downloads/if [ -z ${mysql_version} ];thenmysql_version='mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz'download_url='https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0'fiif [ ! -z ${mysql_version} ];thenmysql_version=${mysql_version}if [[ ${mysql_version:0:9} == mysql-8.0 ]];thendownload_url='https://repo.huaweicloud.com/mysql/Downloads/MySQL-8.0'fi if [[ ${mysql_version:0:9} == mysql-5.7 ]];thendownload_url='https://repo.huaweicloud.com/mysql/Downloads/MySQL-5.7'fi fi# 设置 MySQL 相关目录echo -e "\e[33m"basedir=${DBinstall_root}/${mysql_version%.tar*}mysqldata=${DBinstall_root}/mysqldataecho -e "\e[0m"if [[ -d /usr/local/mysql || -L /usr/local/mysql ]];thenrm -rf /usr/local/mysql  fiif [ -d $basedir ];then# mv  $basedir $basedir-$(date +%F)rm -rf  $basedir fiif [ -d $mysqldata ];then# mv  $mysqldata $mysqldata-$(date +%Y%m%d%H%M%S)rm -rf   $mysqldata mkdir -p $mysqldata/{etc,data,logs}elsemkdir -p $mysqldata/{etc,data,logs}fi# 不存在压缩包,就从华为云下载,https://repo.huaweicloud.com/mysql/Downloads/if [ ! -e ${DBinstall_root}/${mysql_version} ];thenwget ${download_url}/${mysql_version} -P ${DBinstall_root}fitar -xvf ${DBinstall_root}/${mysql_version} -C ${DBinstall_root} ln -s ${DBinstall_root}/${mysql_version%.tar*}  /usr/local/mysql# mysql 和 mysqld 必要的动态库echo "${DBinstall_root}/${mysql_version%.tar*}/lib/private" > /etc/ld.so.conf.d/mysql.confldconfig # 创建 mysql 用户if id -u mysql >/dev/null 2>&1; thenecho "user exists"elsegroupadd mysqluseradd -r -g mysql mysqlfichown -R mysql:mysql $basedir $mysqldata /usr/local/mysql# chmod -R 755 $basedir
}InitFile(){# my.cnf 配置文件if [ -z $DBport ];thenDBport=3306elseDBport=$DBportficat > ${mysqldata}/etc/my.cnf << EOF[client]port=${DBport}socket=${mysqldata}/data/mysql.sock# pipe# socket=0.0[mysql]default-character-set=UTF8MB4socket=${mysqldata}/data/mysql.sock[mysqld]user=mysqlport=${DBport}skip_ssldefault-time-zone='+8:00'log_timestamps='SYSTEM'transaction_isolation=read-committeddefault_authentication_plugin=mysql_native_password# binlog_expire_logs_seconds=604800  # MySQL8.0设置bilong过期时间,MySQL5.7不支持# expire-logs-days=7      # MySQL5.7设置binlog过期时间,MySQL8.0将丢弃该参数slow_query_log=1long_query_time=1open_files_limit=65535innodb_flush_log_at_trx_commit=1interactive_timeout = 28800wait_timeout = 28800innodb_io_capacity=2000read_buffer_size=16Mbasedir=${basedir}datadir=${mysqldata}/datapid-file=${mysqldata}/data/mysqld.pidsocket = ${mysqldata}/data/mysql.socklog-bin=${mysqldata}/logs/log_binlog-error=${mysqldata}/logs/mysql.logslow-query-log-file=${mysqldata}/logs/mysql_slow_query.loglower_case_table_names=1#skip-grant-tablesskip-name-resolvecharacter-set-server=UTF8MB4default-storage-engine=INNODBexplicit_defaults_for_timestamp = true# Server Id.server-id=30001max_connections = 3000local_infile=1table_open_cache=2000tmp_table_size=246Mthread_cache_size=300#限定用于每个数据库线程的栈大小。默认设置足以满足大多数应用thread_stack = 192kkey_buffer_size=512Mread_rnd_buffer_size=32Minnodb_data_home_dir = ${mysqldata}/datainnodb_log_buffer_size=16Minnodb_buffer_pool_size=3Ginnodb_log_file_size=512Minnodb_thread_concurrency=128innodb_autoextend_increment=1000innodb_buffer_pool_instances=8innodb_concurrency_tickets=5000innodb_old_blocks_time=1000innodb_stats_on_metadata=0innodb_file_per_table=1innodb_checksum_algorithm=0innodb_open_files=65535back_log=80flush_time=0join_buffer_size=128Mmax_allowed_packet=1024Mmax_connect_errors=99999sort_buffer_size=32Mtable_definition_cache=1400binlog_row_event_max_size=8Ksync_master_info=10000sync_relay_log=10000sync_relay_log_info=10000#批量插入数据缓存大小,可以有效提高插入效率,默认为8Mbulk_insert_buffer_size = 64Mlog-bin-trust-function-creators=1sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLESnet_write_timeout=600net_read_timeout=300#collation_server=utf8mb4_unicode_cicollation_server=utf8mb4_general_cigroup_concat_max_len=10240sync_binlog=1replicate-wild-ignore-table    = mysql.%replicate-wild-ignore-table    = performance_schema.%gtid_mode = onenforce_gtid_consistency = 1## include all files from the config directory# !includedir /etc/my.cnf.d
EOFif [[ -f /etc/my.cnf || -L /etc/my.cnf ]];thenmv /etc/my.cnf /etc/my.cnf-$(date +%F)filn -s ${mysqldata}/etc/my.cnf /etc/my.cnf\cp -rf ${mysqldata}/etc/my.cnf ${basedir}/# my.cnf 配置文件# 写入全局环境变量echo "export  MYSQL_HOME=${basedir}" >> /etc/profileecho "export  PATH=\${MYSQL_HOME}/bin:\$PATH" >> /etc/profilesource /etc/profile
}InitDB(){${basedir}/bin/mysqld --initialize-insecure --basedir=${basedir} --datadir=${mysqldata}/data  --lower-case-table-names=1 --user=mysql# \cp -rf ${basedir}/support-files/mysql.server /etc/init.d/mysqld# chmod 755 /etc/init.d/mysqldif [ -f  /usr/lib/systemd/system/mysqld.service ];thenmv  /usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system/mysqld.service-$(date +%F)ficat > /usr/lib/systemd/system/mysqld.service <<EOF[Unit]Description=MySQL Community ServerAfter=network.targetAfter=syslog.target[Service]User=mysqlGroup=mysqlExecStart=${basedir}/bin/mysqld_safe --defaults-file=${mysqldata}/etc/my.cnf --basedir=${basedir}PrivateTmp=falseLimitNOFILE=65536LimitNPROC=65536[Install]WantedBy=multi-DBuser.targetAlias=mysql.service
EOFsystemctl daemon-reloadsystemctl enable mysqldsystemctl restart mysqld
}AddUser(){sleep 15s# echo "用户:root@localhost 密码为空;localhost免密登录" > ${DBinstall_root}/install.logecho "连接信息:" if [ -z $DBport ];thenDBport=3306echo "DBport=3306" elseDBport=$DBportecho "DBport=$DBport" fi# 用户设置了 DBuser  if [ ! -z  $DBuser ];thenDBuser=${DBuser}mysql -P${DBport} -e "create user "$DBuser"@'%';"mysql -P${DBport} -e "grant  all on *.* to "$DBuser"@'%';"echo "DBuser:$DBuser" if [ ! -z  $DBpassword ];then#mysql -P${DBport} -e "ALTER USER "$DBuser"@'%' IDENTIFIED WITH mysql_native_DBpassword BY '$DBpassword';"mysql -P${DBport} -e "ALTER USER "$DBuser"@'%' IDENTIFIED BY '$DBpassword';"echo "DBpassword:$DBpassword"elsemysql -P${DBport} -e "ALTER USER "$DBuser"@'%' IDENTIFIED BY '$DBuser';"echo "DBpassword:$DBuser"fielse# 用户没有设置 DBuserDBuser=rootmysql -P${DBport} -e "create user "$DBuser"@'%';"mysql -P${DBport} -e "grant  all on *.* to "$DBuser"@'%';"echo "DBuser: root" if [ ! -z  $DBpassword ];thenmysql -P${DBport} -e "ALTER USER "$DBuser"@'%' IDENTIFIED BY '$DBpassword';"echo "DBpassword: $DBpassword" elseDBpassword=`echo $RANDOM |base64` # 随机生成密码mysql -P${DBport} -e "ALTER USER "$DBuser"@'%' IDENTIFIED BY '$DBpassword';"echo "DBpassword: $DBpassword" fifi
}Mysqlinfo(){# 默认获取服务器第一个网卡的IPDBhost=`ifconfig |grep inet|grep -oP "\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}"| grep -vE "127.0.0.1|^255"|head -n 1`echo "MySQL info:" |tee  ${DBinstall_root}/install.logecho "DBhost: $DBhost" | tee -a ${DBinstall_root}/install.logecho "DBport: $DBport" | tee -a ${DBinstall_root}/install.logecho "DBuser: $DBuser" | tee -a ${DBinstall_root}/install.logecho "DBpassword: $DBpassword" | tee -a ${DBinstall_root}/install.logecho "DBinstall_root: ${DBinstall_root}" | tee -a ${DBinstall_root}/install.logecho "basedir: $basedir" | tee -a ${DBinstall_root}/install.logecho "mysqldata: $mysqldata" | tee -a ${DBinstall_root}/install.logecho "mysql_version: ${mysql_version}" | tee -a ${DBinstall_root}/install.logecho -e "\e[33m"cat ${DBinstall_root}/install.logecho -e "\e[0m"
}# 执行脚本
# check
InitSystem
InstallPrepare
InstallDB
InitFile
InitDB
AddUser
Mysqlinfo

MySQL 在线一键安装相关推荐

  1. 电脑在线一键安装win10系统教程分享

    当我们解决电脑故障或想要安装新的操作系统时,就可以用重装系统方法来实现.但是重装系统对初学者来说是相对于陌生并且复杂的.然而重装系统的方法有很多,可以一键安装,U盘启动方法安装甚至是硬盘光驱安装等等. ...

  2. 在线计算机安装系统,电脑系统在线一键安装软件

    随着生活水平的提高和科技的发展,如今无论办公还是生活都是越来越离不开电脑,有些用户想要装电脑系统不知道用什么软件装比较安全,在线一键安装电脑系统软件推荐云骑士装机大师,下面以云骑士装win7系统为例, ...

  3. linux上mysql脚本一键安装

    说明(适用于8.0以上数据库版本): 1.下载数据库安装包,把对应的tar包和脚本文件放在/root下. 2.使用root用户运行脚本. 3.期间输入mysql密码时,直接敲回车, 如果不小心输入了回 ...

  4. lamp mysql5.0_CentOS 5/6 LAMP(Apache MySQL PHP)一键安装脚本

    适用系统: CentOS-5 (32bit/64bit) CentOS-6 (32bit/64bit) 安装了什么: 1.Apache 2.2.20 2.MySQL 5.0.92 3.PHP 5.2. ...

  5. nginx 在线一键安装

    一键在线安装nginx服务器,可选择指定nginx版本安装,默认安装的版本是:nginx-1.20.2 :若本地 /tpm 目录不存在目标版本的nginx源码压缩包,脚本会自动从nginx官网下载目标 ...

  6. tomcat 在线一键安装

    说明:tomcat一键在线安装脚本,默认使用国内源下载,下载速度极快,默认安装在/opt 目录,默认安装端口为 8080,安装的默认版是 apache-tomcat-8.5.88.tar.gz . 1 ...

  7. php和mysql一键安装包_iis+php+mysql一键安装教程和安装包

    导读:iis上mysql+php一键安装 很多用vps的朋友,在windons系统iis上配置mysql+php环境的时候都非常的头痛,过程非常复杂和麻烦,所以我们推荐大家用mysql+php一键安装 ...

  8. python3安装mysql模块_Python安装MySQL库详解,步骤及错误的解决方法

    前面我们介绍的Python网络爬虫通常将抓取的数据存储至TXT或CSV文件,而当数据量增加之时,就需要将其存储至本地数据库了.Python访问数据库需要对应的接口程序,我们可以把接口程序理解为Pyth ...

  9. 简单易懂的笔记本电脑一键安装win10系统教程

    虽然win11系统已经出来了,但是其实许多朋友还是喜欢使用win10系统,而且一般电脑的配置都支持win10系统的在线安装.那么笔记本电脑怎么在线一键安装win10系统呢?下面小编就给大家带来简单易懂 ...

最新文章

  1. mysql8.0导出带数据的库表_MySQL8.0数据库导出与备份
  2. 龙格库塔法基本C程序
  3. Java-Java I/O流解读之Object Serialization and Object Streams
  4. 零基础直接学Python入门IT合适吗?
  5. javacv入门指南:序章_建立开放文化的循序渐进指南
  6. 五初探opengl,变换我们的图形
  7. SAP License:飘在SAP日子之二-售前的产生与发展
  8. SAS Viya调研概述
  9. Oracle9i中监视索引的使用
  10. 第一次创建STC15串口程序模板
  11. R语言使用t.test函数执行t检验验证总体均值是否是某个特定的值(从样本集推论总体均值)
  12. JSON.prase()报错 unexcept token
  13. JavaScript---网络编程(12)--DHTML技术演示(5)-form表单验证技术(正则)
  14. 捷尼赛思GV80 Coupe概念车在纽约全球首发
  15. Oracle横竖转换通用函数
  16. 简单日志(公开日记)
  17. 你造吗,Oracle SQLplus 也有History命令了
  18. 如何更好管理控制报销费用?
  19. pytest_失败用例的重跑机制@pytest.mark.flaky()
  20. 虚拟大钢琴 – Steinberg The Grand 3 v3.2.0.146 WiN

热门文章

  1. GET /static/js/jquery-3.5.1.min.js HTTP/1.1 200 89476
  2. 四阶段:第24周 微服务下Sentinel流量防控卫兵 apollo相关配置 一般有用
  3. SBUS协议(20200210)
  4. 通过 blast 结果查看 测序数据fastq是否被污染,以及污染reads所属物种、所占比例
  5. Java进阶(八)Stream、异常体系
  6. Process-wide API spying - an ultimate hack 摘要翻译(二)
  7. Photo Album: 2008年5月-三亚爱琴海岸康年度假村-day2
  8. CPU与CUDA(GPU)的计算能力对比之二: Keras Resnet 运算效率比较
  9. layui使用formselect4完成的下拉框多选,拼音搜索
  10. Primeng修改组件样式