1.文章概述
注意!!!
该脚本目前存在一些问题功能基本实现!!!
之前的文章是出一篇普通安装教程再出一篇自动安装的教程,于是尝试编写自动安装的脚本最后的结果是以失败告终!!!
由于mysql的安全机制,使用mysql -uroot -p命令时初始密码无法通过变量的形式传递。最终只完成了一个半成品的东西,没能实现自动设置密码,安装成功后需要手动复制密码登录,然后执行source sqlfile.sql。
以下是脚本内容
2.shell脚本
#!/bin/bash
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum -y localinstall mysql57-community-release-el7-8.noarch.rpm
yum -y repolist enabled | grep "mysql.*-community.*"
yum -y install mysql-community-server
systemctl restart mysqld
#sed -i '/mysql.sock/a\skip-grant-tables' /etc/my.cnf
passwd=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $11}')
read -p "请输入你想要设置的数据库密码以回车结束" newpwd
cat >./temp.sql <<EOF
set global validate_password_policy=0;
set global validate_password_length=1;
ALTER USER 'root'@'localhost' IDENTIFIED BY '$newpwd';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$newpwd' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOF
chmod 777 temp.sql
#mysql -uroot -p$passwd -e "source temp.sql"
echo "初始密码是:$passwd"
echo "请复制初始密码登录后执行语句:source temp.sql"
mysql -uroot -p
脚本只有一些主流程逻辑其他的并没有写比如检查是否已经安装、设为开机自启等等…,因为尝试了很多办法也没能找到能绕开安全机制的方法,最后只能换了这个方式勉强达到半自动效果
3.尝试过的方法
1、通过sed命令修改mysql配置使其直接跳过密码认证,这个就相当于使用mysql -uroot -p命令不需要输入密码直接进入mysql命令行。当时的思路是
修改配置 – 重启服务 – 免密登录 – 修改密码 – 再将配置中添加的跳过认证干掉。最后失败告终,进入mysql后执行sql语句出现了找不到对应表的问题
sed -i '/mysql.sock/a\skip-grant-tables' /etc/my.cnf
2、export MYSQL_PWD方法,这个方法的主要思路是将mysql密码设置为环境变量,登录时直接引用改环境变量,最后也以失败告终,这个虽然不能解决掉我这里遇到的问题,但是对于已经修改过初始免密的时候还是有效果的。
…