centos7-java环境之mysql自动化安装

  由于自己在学习时,经常要部署java环境,很多冗余操作隔一段时间不用又搞忘掉,比较费事。  鉴于此,我之前有两个方案:第一个是在docker容器上跑java环境,后面发现那个整合了jdk环境,还没有包括mysql的环境的体积已经达到了1.4个G之多,代价较大,加上一些学习成本,果断放弃该方案;   第二个方案便是将这些重复的代码写成脚本,自动化执行,中间遇到了很多的坑,花了很多的时间,不过总算功夫不负有心人。 

  mysql自动化安装的代码如下:

#!/bin/bash
#更改yum镜像为阿里云,很重要!否则直接影响使用体验,可以说直接影响成败也不为过
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum -y update
echo "-----------------change the mirror to aliyun has succeed!------------------"
#下载mysql57的rpm源
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
#安装mysql源
yum localinstall -y mysql57-community-release-el7-8.noarch.rpm
#安装mysql-server组件
yum install -y mysql-community-server
echo "--------------msyql-server download successful!----------------------"


password=$1
pwdstr=$(grep 'temporary password' /var/log/mysqld.log)
#获取到临时密码
pwdtmp=${pwdstr##* }
echo "password is:$pwdtmp"
# 设置服务器默认编码环境  
cd /etc/
echo "character_set_server=utf8" >> my.cnf

#sed -i '/\[mysqld\]/askip-grant-tables' /etc/my.cnf

systemctl start mysqld

multipwd="$pwdtmp""cgd"
mysql -u root -p$pwdtmp --connect-expired-password << EOF
SET PASSWORD = PASSWORD('$multipwd');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
set global validate_password_policy=LOW;
set global validate_password_length=6;
flush privileges;
EOF
#=============mysql命令开始
mysql -u root -p$multipwd --connect-expired-password << EOF

use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$password' WITH GRANT OPTION;
SET PASSWORD = PASSWORD('$password');
flush privileges;
EOF

systemctl stop mysqld
#sed -i '/skip-grant-tables/s/^/#/' /etc/my.cnf
systemctl start mysqld
#===============mysql 的相关命令结束
echo "-------------------------------mysql has customed succesfully!--------------------------------------"
echo "----now,you can use the password that you just set to log on the mysql on any host that can connect to the Internet.-----"
echo "----designed by automannn,you can touch me at automannn@163.com.-------------"

  备注: 由于我对bash不是很熟,现学现用。 因此操作起来不是那么友好。  但是只要坚持一个理念:"暴力出奇迹",就应该是没有问题的。  在新买的云服务器上,可以直接运行该脚本就行。  

  注意事项: 1.若出现下载mysql时长期性(高于20s以上的时间)出现速度低于50KB,ctrl +c 停止该脚本,然后重新执行;正常的情况下(1M带宽时,高速会在2M左右,低速集中分布在500KB左右,偶尔可能会出现短期的100~200KB,这应该才是正常现象。当然我只在腾讯云,华为云进行了测试,可能有些其他未遇到的问题,勿怪。),对了,这里有个前提就是是公网IP,如果运行的是本地虚拟机的话,带宽则根据当前运营商带宽为准。 

                     2.首次运行一般来说会出现 临时密码未找到的问题。  应该要首次执行一次mysql命令才会生成该mysql5.7的临时密钥。 不过我没有心情和精力再去改这个BUG了。 也就是说,要正确的安装mysql环境,至少是要执行该脚本两次。  注意:是至少两次,圈起来要考!

                     3.我没啥经验,每个脚本尾部都会输出运行成功以及自己的一些email联系方式,算是一种小广告吧。 一则是因为bash不熟,没有很多的时间去做运行过程的控制(主要是运行错误后,相应的流程中都会有必要的错误说明).  二则是因为万一有啥贵人觉得我这小伙子还不错,要给我一个机会啥的呢,哈哈哈。 梦想还是要有的,星爷曾说过:人如果没有梦想那根咸鱼有什么区别呢。

  使用流程: sh autodeploy_mysql.sh ${yourpassword} ,然后去看两条斗音,回来停掉再执行该命令,再去上个厕所,出来就行了。    

                     这个执行完后,达到的效果是: 我们可以通过这个密码在互联网环境中登陆这个mysql,并且编码方式啥的也是正确的。  最主要的是,这段逻辑使用者是可以完全自定义的,包括集群的配置,多用户的分配,数据库的初始化等等动作,在mysql命令段进行自定义就行了。 

                     从操作上来看,我们实际只执行了一个命令,然后就可以巴巴适适的使用了,真是爽歪歪哈哈哈哈。

   踩坑记录

                   1.我尼玛, mysql -u root -ppwd 跟 mysql-u root -p pwd  具有天大的差别,具体实践一下就知道了;

                   2.卧槽,在mysql 免密模式下登陆后,识别不了  validate_password_% 参数,吐血;

                   3.他奶奶的,mysql 默认密码模式下不能进行任何操作,必须先弄一个MEDIUM级别的密码给换上,然后再修改密码策略,换成我们自己的密码!!  二狗子,我的刀呢!

   使用截图

                    

     扩展

             可根据实际项目需求,动态定制参数,实现更高级的自动化流程。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值