Shell脚本一键部署——源码编译安装MySQL及自动补全工具

编译安装MySQL

1、软件包

Mysql安装包

  1. 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者. 执行脚本,等脚本执行完成,即可使用mysql -u root -p点击回车即可进入。

2、MySQL及自动补全工具一键部署脚本(使用source或./执行脚本!)

  1. #!/bin/bash
  2.  
  3. echo -e "----正在验证当前为仅主机还是NAT模式----"
  4.  
  5. ping -c 2 -w 2 www.baidu.com &> /dev/null
  6.  
  7. if [ $? -eq 0 ];then echo -e "检测当前为NAT模式,为您配置在线yum源"
  8. mkdir -p /etc/yum.repos.d/repo.bak
  9. mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null
  10. wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null
  11.  
  12. yum clean all &> /dev/null
  13. yum list &> /dev/null
  14.  
  15. echo -e "在线源已配置完成"
  16. else
  17. echo -e "检测当前为仅主机模式,为您配置本地yum源"
  18. mount /dev/sr0 /mnt &> /dev/null
  19. cd /etc/yum.repos.d/
  20. mkdir -p /etc/yum.repos.d/repo.bak
  21.  
  22. mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null
  23. echo '[local]
  24. name=local
  25. baseurl=file:///mnt
  26. enabled=1
  27. gpgcheck=0' > /etc/yum.repos.d/local.repo
  28. yum clean all &> /dev/null
  29. yum makecache &> /dev/null
  30.  
  31. df -h | grep "/mnt"
  32.  
  33. if [ $? -ne 0 ];then
  34. echo -e "检测当前为仅主机模式,但光盘未挂载!"
  35. else
  36. echo -e "本地yum源已配置完成"
  37. fi
  38. fi
  39. #编译安装mysqld服务
  40. #将安装mysql所需软件包传到/opt目录下,并解压
  41. cd /opt
  42. tar zxvf mysql-5.7.17.tar.gz
  43. tar zxvf boost_1_59_0.tar.gz
  44.  
  45. #安装环境依赖包
  46. yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
  47. if [ $? -eq 0 ];then
  48. echo -e "环境依赖包安装完成"
  49. fi
  50.  
  51. #配置软件模块
  52. mv boost_1_59_0 /usr/local/boost
  53. cd /opt/mysql-5.7.17/
  54. cmake \
  55. -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  56. -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
  57. -DSYSCONFDIR=/etc \
  58. -DSYSTEMD_PID_DIR=/usr/local/mysql \
  59. -DDEFAULT_CHARSET=utf8 \
  60. -DDEFAULT_COLLATION=utf8_general_ci \
  61. -DWITH_EXTRA_CHARSETS=all \
  62. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  63. -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
  64. -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
  65. -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
  66. -DMYSQL_DATADIR=/usr/local/mysql/data \
  67. -DWITH_BOOST=/usr/local/boost \
  68. -DWITH_SYSTEMD=1
  69.  
  70. if [ $? -eq 0 ];then
  71. echo "模块配置完成"
  72. fi
  73.  
  74. #编译安装
  75. make -j4 && make install
  76. if [ $? -eq 0 ];then
  77. echo "编译安装完成"
  78. fi
  79.  
  80. #创建mysql用户
  81. useradd -M -s /sbin/nologin mysql
  82.  
  83. #修改mysql配置文件
  84. echo '[client]
  85. port = 3306
  86. default-character-set=utf8
  87. socket=/usr/local/mysql/mysql.sock
  88.  
  89. [mysql]
  90. port = 3306
  91. default-character-set=utf8
  92. socket = /usr/local/mysql/mysql.sock
  93. auto-rehash
  94.  
  95. [mysqld]
  96. user = mysql
  97. basedir=/usr/local/mysql
  98. datadir=/usr/local/mysql/data
  99. port = 3306
  100. character-set-server=utf8
  101. pid-file = /usr/local/mysql/mysqld.pid
  102. socket=/usr/local/mysql/mysql.sock
  103. bind-address = 0.0.0.0
  104. skip-name-resolve
  105. max_connections=2048
  106. default-storage-engine=INNODB
  107. max_allowed_packet=16M
  108. server-id = 1
  109.  
  110. sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf
  111.  
  112. #更改mysql安装目录和配置文件的属主属组
  113. chown -R mysql:mysql /usr/local/mysql/
  114. chown mysql:mysql /etc/my.cnf
  115.  
  116. #设置路径环境变量
  117. echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile
  118. source /etc/profile
  119.  
  120. #初始化数据库
  121. cd /usr/local/mysql/bin
  122. ./mysqld \
  123. --initialize-insecure \
  124. --user=mysql \
  125. --basedir=/usr/local/mysql \
  126. --datadir=/usr/local/mysql/data
  127.  
  128. #添加mysql系统服务
  129. cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
  130. systemctl daemon-reload
  131. systemctl start mysqld.service
  132. systemctl enable mysqld
  133. netstat -anpt | grep 3306
  134.  
  135. rpm -q expect
  136. if [ $? -eq 1 ];then
  137. yum -y install expect
  138. fi
  139.  
  140. source /etc/profile
  141. #修改mysql登录密码
  142. /usr/bin/expect <<EOF
  143. spawn mysqladmin -u root -p password "123456"
  144. expect "Enter password:"
  145. send "\r"
  146. expect eof
  147. EOF
  148.  
  149. #授权远程登录
  150. /usr/bin/expect <<EOF
  151. spawn mysql -u root -p
  152. expect "Enter password:" {send "123456\r"}
  153. expect "mysql>" {send "grant all privileges on *.* to 'root'@'%' identified by '123456';\r"}
  154. expect "mysql>" {send "show databases;\r"}
  155. expect "mysql>" {send "quit\r"}
  156. expect eof
  157. EOF
  158.  
  159. source /etc/profile
  160.  
  161. echo "----mysql安装完成----"
  162.  
  163. #在线源安装
  164. yum -y install epel-release
  165. yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-develdb4 -devel libpcap-devel xz-devel gcc
  166.  
  167. wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz
  168.  
  169. mkdir ~/.pip/
  170.  
  171. cat > ~/.pip/pip.conf <<EOF
  172. [global]
  173. index-url = https://mirrors.aliyun.com/pypi/simple/
  174.  
  175. [install]
  176. trusted-host=mirrors.aliyun.com
  177. EOF
  178.  
  179. yum -y install libffi-devel zlib* python-devel openssl-devel
  180.  
  181. tar -zxvf Python-3.9.0.tgz
  182.  
  183. cd Python-3.9.0/
  184. ./configure --prefix=/usr/local/python --with-ssl
  185.  
  186. make && make install
  187.  
  188. ln -s /usr/local/python/bin/python3 /usr/bin/
  189.  
  190. echo 'export PATH=/usr/local/python/bin:$PATH' >> /etc/profile
  191. source /etc/profile
  192.  
  193. pip3 install mycli
  194.  
  195. if [ $? -eq 0 ];then
  196. echo -e "-----mycli自动补全功能已经安装完成-----"
  197. fi
  198. #mycli -u root -p <密码>

Shell脚本一键部署——源码编译安装MySQL及自动补全工具的更多相关文章

  1. CentOS源码编译安装MySQL 5.5.15

    CentOS源码编译安装MySQL 5.5.15   文章目录 [隐藏] 安装编译工具 下载源码 安装cmake和bison 编译安装MySQL 一些相关设置 安装编译工具 yum install g ...

  2. CentOS 6.6 下源码编译安装MySQL 5.7.5

    版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...

  3. 源码编译安装 MySQL 5.5.x 实践

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  4. 源码编译安装 MySQL 5.5.x 实践(转)

    1.安装cmakeMySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. # wget ht ...

  5. 总结源码编译安装mysql

    最近在学习源码编译安装LAMP.LNMP时,一直遇到一个难题,就是就是mysql无论怎么源码编译安装,到最后启动服务都提示"Starting MySQL.The server quit wi ...

  6. 源码编译安装MySQL 5.7.9

    安装CentOS 6.3 配置yum:[root@hank-yoon ~]# cd /etc/yum.repos.d/ [root@hank-yoon yum.repos.d]# mkdir a [r ...

  7. 树莓派开发笔记(十五):树莓派4B+从源码编译安装mysql数据库

    前言   树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mysql服务,通过读写锁事务等使用,可以实现多进 ...

  8. CentOS 7 源码编译安装MySQL 5.7.14

    一.添加用户和组 1. 进入root: su 2. 添加组: groupadd mysql 3. 添加用户: useradd -r -g mysql -s /bin/false mysql 二.安装 ...

  9. 源码编译安装mysql

    1       概述 首先来看下mysql的下载地址: http://ftp.plusline.de/mysql/Downloads/ 这里有mysql的各种版本 操作系统:CentOS releas ...

随机推荐

  1. 关于C语言中对数字的扩展和缩短

    关于对数字的扩展:如果需要在不改变他的类型的情况下去扩展一个数字 有符号数字: 如果最高位为0---向左按位复制0 如果最高位为1---向左按位复制1 无符号数字:向左按位复制0即可 对于数字的缩短: ...

  2. java中 字符串的构造方法和直接创建

    java.long.String类代表字符串.Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现.(程序当中所有的双引号字符串,都是String类的对象[没 ...

  3. 「Leetcode-算法_Easy461」通过「简单」题目学习位运算

    Easy 461.汉明距离 因为原题目翻译效果不佳,这里是笔者自己的理解. 输入两个二进制数 x.y, 输出将 y 变为 x 所需改变的二进制位数,成为汉明距离. 注意: 0 ≤ x, y < ...

  4. Go interface 原理剖析--类型转换

    hi, 大家好,我是 haohognfan. 可能你看过的 interface 剖析的文章比较多了,这些文章基本都是从汇编角度分析类型转换或者动态转发.不过随着 Go 版本升级,对应的 Go 汇编也发 ...

  5. kubernetes/k8s CRI分析-kubelet删除pod分析

    关联博客<kubernetes/k8s CRI 分析-容器运行时接口分析> <kubernetes/k8s CRI分析-kubelet创建pod分析> 之前的博文先对 CRI ...

  6. windows和linux传输小技巧——FTP服务

    目录 一.FTP简介 二.匿名用户访问设置 三.设置本地用户验证访问ftp 3.1.修改匿名用户.本地用户登录的默认根目录 四.使用user_list列表 一.FTP简介 FTP服务--用来传输文件的 ...

  7. Nginx配置websocket的安全协议wss

    //nginx配置wss访问方式 map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream webso ...

  8. HTTP和HTTPS是什么 二者区别是什么

    HTTP简介 HTTP(超文本传输协议)是网络上最为广泛的传输协议,被用于在web浏览器和网站服务器之间的传输协议.HTTP是一个简单的请求-响应协议,它通常运行在TCP之上.它指定了客户端可能发送给 ...

  9. websocket在慕课网中的应用

    网上资料都是介绍概念,我们来看看实际网站怎么使用websocket的吧.限于自身水平解读并不深入,慕课网上的websocket某些字段不知何用. 是什么 是一种应用层协议,有html5而推出,是一种全 ...

  10. flutter学习资料汇总

    1.https://github.com/chinabrant/flutter_study 2.https://github.com/zhujian1989/flutter_study 3.https ...