MySQL 5.7.28 一键安装脚本

野性酷女 2023-09-28 21:31 83阅读 0赞

文章目录


官网下载地址:
https://downloads.mysql.com/archives/community/

  1. #!/bin/bash
  2. function loginfo() {
  3. if [[ $? -eq 0 ]];then
  4. echo -e "[32m[INFO][$(date +"%F %T")] $1 succeed! [0m"
  5. else
  6. echo -e "[31m[ERROR][$(date +"%F %T")] $1 failed! [0m"
  7. fi
  8. }
  9. function install_mysql() {
  10. echo -e "[32mBegin install mysql V5.7.28 ...[0m"
  11. # 安装依赖
  12. sudo yum install libaio -y >/dev/null 2>&1
  13. loginfo "libaio install"
  14. BASE_DIR=$(pwd)
  15. MYSQL_PKG_PATH=$BASE_DIR/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
  16. DEPLOY_PATH="/opt"
  17. USER=$(whoami)
  18. GROUP=$(groups)
  19. MYSQL_URL="http://101.34.22.188/mysql-5.7.28/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz"
  20. # 下载解压创建目录
  21. echo -e "[32mBegin download mysql V5.7.28 ...[0m"
  22. sudo curl -o ${DEPLOY_PATH}/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ${MYSQL_URL} >/dev/null 2>&1
  23. loginfo "mysql software download"
  24. sudo tar xf ${MYSQL_PKG_PATH} -C ${DEPLOY_PATH}/
  25. loginfo "mysql software decompression"
  26. if [[ -d ${DEPLOY_PATH}/mysql ]];then
  27. rm -rf ${DEPLOY_PATH}/mysql
  28. fi
  29. sudo ln -s ${DEPLOY_PATH}/mysql-5.7.28-linux-glibc2.12-x86_64 ${DEPLOY_PATH}/mysql
  30. loginfo "create mysql dir soft link"
  31. if [[ -d /data/mysql ]];then
  32. rm -rf /data/mysql
  33. fi
  34. sudo mkdir -p /data/mysql
  35. loginfo "create mysql data dir"
  36. # 修改启动脚本
  37. sudo sed -i '46s#basedir=#basedir=/opt/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
  38. sudo sed -i '47s#datadir=#datadir=/data/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server
  39. sudo cp ${DEPLOY_PATH}/mysql/support-files/mysql.server /etc/init.d/mysqld
  40. sudo chmod 755 /etc/init.d/mysqld
  41. # 创建用户
  42. if ! grep -q '^mysql:' /etc/group
  43. then
  44. sudo groupadd mysql
  45. loginfo "create user mysql"
  46. fi
  47. if ! grep -q '^mysql:' /etc/passwd
  48. then
  49. sudo useradd -r -g mysql -s /bin/false mysql
  50. loginfo "create group mysql"
  51. fi
  52. # 赋予data目录和base目录普通用户组
  53. sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/
  54. sudo chown -R ${USER}.${GROUP} /data/
  55. if [ ! -f /usr/bin/mysql ]
  56. then
  57. sudo ln -s /opt/mysql/bin/mysql /usr/bin/
  58. fi
  59. # 创建配置文件
  60. if [ -f /etc/my.cnf ]
  61. then
  62. sudo rm -f /etc/my.cnf
  63. fi
  64. sudo bash -c "cat >> /etc/my.cnf" <<EOF
  65. [mysqld]
  66. datadir = /data/mysql
  67. basedir = /opt/mysql
  68. #tmpdir = /data/mysql/tmp_mysql
  69. port = 3306
  70. socket = /data/mysql/mysql.sock
  71. pid-file = /data/mysql/mysql.pid
  72. max_connections = 8000
  73. max_connect_errors = 100000
  74. max_user_connections = 3000
  75. check_proxy_users = on
  76. mysql_native_password_proxy_users = on
  77. local_infile = OFF
  78. symbolic-links = FALSE
  79. group_concat_max_len = 4294967295
  80. max_join_size = 18446744073709551615
  81. max_execution_time = 20000
  82. lock_wait_timeout = 60
  83. autocommit = 1
  84. lower_case_table_names = 1
  85. thread_cache_size = 64
  86. disabled_storage_engines = "MyISAM,FEDERATED"
  87. character_set_server = utf8mb4
  88. character-set-client-handshake = FALSE
  89. collation_server = utf8mb4_general_ci
  90. init_connect = 'SET NAMES utf8mb4'
  91. transaction-isolation = "READ-COMMITTED"
  92. skip_name_resolve = ON
  93. explicit_defaults_for_timestamp = ON
  94. log_timestamps = SYSTEM
  95. local_infile = OFF
  96. event_scheduler = OFF
  97. query_cache_type = OFF
  98. query_cache_size = 0
  99. sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
  100. log_error = /data/mysql/mysql.err
  101. slow_query_log = ON
  102. slow_query_log_file = /data/mysql/slow.log
  103. long_query_time = 1
  104. general_log = OFF
  105. general_log_file = /data/mysql/general.log
  106. expire_logs_days = 99
  107. log-bin = /data/mysql/mysql-bin
  108. log-bin-index = /data/mysql/mysql-bin.index
  109. max_binlog_size = 500M
  110. binlog_format = mixed
  111. binlog_rows_query_log_events = ON
  112. binlog_cache_size = 128k
  113. binlog_stmt_cache_size = 128k
  114. log-bin-trust-function-creators = 1
  115. max_binlog_cache_size = 2G
  116. max_binlog_stmt_cache_size = 2G
  117. relay_log = /data/mysql/relay
  118. relay_log_index = /data/mysql/relay.index
  119. max_relay_log_size = 500M
  120. relay_log_purge = ON
  121. relay_log_recovery = ON
  122. server_id = 1
  123. read_buffer_size = 1M
  124. read_rnd_buffer_size = 2M
  125. sort_buffer_size = 64M
  126. join_buffer_size = 64M
  127. tmp_table_size = 64M
  128. max_allowed_packet = 128M
  129. max_heap_table_size = 64M
  130. connect_timeout = 43200
  131. wait_timeout = 43200
  132. back_log = 512
  133. interactive_timeout = 300
  134. net_read_timeout = 30
  135. net_write_timeout = 30
  136. skip_external_locking = ON
  137. key_buffer_size = 16M
  138. bulk_insert_buffer_size = 16M
  139. concurrent_insert = ALWAYS
  140. open_files_limit = 65000
  141. table_open_cache = 16000
  142. table_definition_cache = 16000
  143. default_storage_engine = InnoDB
  144. default_tmp_storage_engine = InnoDB
  145. internal_tmp_disk_storage_engine = InnoDB
  146. [client]
  147. socket = /data/mysql/mysql.sock
  148. default_character_set = utf8mb4
  149. [mysql]
  150. default_character_set = utf8mb4
  151. [ndatad default]
  152. TransactionDeadLockDetectionTimeOut = 20000
  153. EOF
  154. sudo chown -R ${USER}.${GROUP} /etc/my.cnf
  155. loginfo "configure my.cnf"
  156. # 创建SSL证书
  157. # sudo mkdir -p ${DEPLOY_PATH}/mysql/ca-pem/
  158. # sudo ${DEPLOY_PATH}/mysql/bin/mysql_ssl_rsa_setup -d ${DEPLOY_PATH}/mysql/ca-pem/ --uid=mysql
  159. # sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/ca-pem/
  160. # sudo bash -c "cat >> /data/mysql/init_file.sql" <<EOF
  161. # set global sql_safe_updates=0;
  162. # set global sql_select_limit=50000;
  163. # EOF
  164. # sudo chown -R ${USER}.${GROUP} /data/mysql/init_file.sql
  165. # sudo chown -R ${USER}.${GROUP} /etc/init.d/mysqld
  166. # 初始化
  167. ${DEPLOY_PATH}/mysql/bin/mysqld --initialize --user=mysql --basedir=${DEPLOY_PATH}/mysql --datadir=/data/mysql
  168. loginfo "initialize mysql"
  169. # 过滤初始密码
  170. mysql_passwd=$(grep 'A temporary password is generated' /data/mysql/mysql.err |awk '{print $NF}')
  171. # 启动服务
  172. /etc/init.d/mysqld start
  173. loginfo "start mysqld"
  174. # 修改初始密码
  175. ${DEPLOY_PATH}/mysql/bin/mysqladmin -uroot -p${mysql_passwd} password '123456'
  176. if [ $? -ne 0 ];then
  177. loginfo "initialize root password"
  178. fi
  179. # 客户端环境变量
  180. echo "export PATH=$PATH:${DEPLOY_PATH}/mysql/bin" | sudo tee /etc/profile.d/mysql.sh
  181. source /etc/profile.d/mysql.sh
  182. loginfo "configure envirement"
  183. }
  184. install_mysql

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读