日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL 在线一键安装

發布時間:2024/3/13 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL 在线一键安装 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?使用說明:

??????? 自定義數據庫賬號、密碼和數據庫安裝目錄。腳本最后輸出的是主機第一張網卡的地址,實際可用連接地址要根據自己實際情況,尤其是云服務器。

??????? 安裝包來源于華為云,可自行指定華為云支持下載的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 在线一键安装的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。