欢迎光临
我们一直在努力

shell脚本之mysql一键部署(新手简易版)

本帖最后由 周遭阿 于 2022-11-3 17:31 编辑

最近自己写了一个shell脚本 基于虚拟机环境下,进行mysql数据库的一键安装脚本
环境准备:vmware15.0.4,centos7.9,mysql8.0.31


 #!/bin/bash/

 #定义变量
mysql="ps -ef | grep mysql | grep -v grep | wc -l "
mysqlPID=" ps -ef | grep mysql | grep -v grep | awk '{print $2}' "
#查询检测mysql是否运行,如运行则杀掉进程
if [ "$mysql" = 0 ]; then
    echo "设备上未运行mysql数据库"
fi

if [ "$mysql" = 1 ]; then
    kill -9 $mysqlPID
fi
##### #删除旧版mysql包
rpm -qa | grep mariadb|xargs rpm -e --nodeps >/dev/null 2>&1
rm -rf /usr/bin/mysql
rm -rf /usr/local/mysql
rm -rf /usr/lib/systemd/system/mysql*

#此区域需要根据实际情况进行修改

Path=/test
#指定mysql压缩包解压的目录,与PathNAME1相呼应

PathNAME=/test/mysql-8.0.31-el7-x86_64.tar.gz
#此路径为mysql tar包路径

PathNAME1=/test/mysql-8.0.31-el7-x86_64
#此路径为解压完成的路径

#删除mysql用户和组
userdel -r mysql >/dev/null 2>&1
groupdel mysql   >/dev/null 2>&1

groupadd mysql   >/dev/null 2>&1
#解压mysql安装包
tar -zxf  $PathNAME -C $Path

#将解压的安装包移动到安装目录
mv $PathNAME1  /usr/local/mysql
mkdir /usr/local/mysql/data

#创建mysql用户
useradd -r -g mysql -s /bin/false mysql >  /dev/null 2>&1

#安装目录设置为mysql用户和组所有
chown -R mysql:mysql /usr/local/mysql   > /dev/null 2>&1

#写入配置文件
echo '[mysqld]
##### # 设置3306端口
port=3306
##### # 设置mysql的安装目录
basedir=/usr/local/mysql
##### # 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/data

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
##### # 允许最大连接数
max_connections=10000
##### # 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
##### # 服务端使用的字符集默认为UTF8
character-set-server=UTF8MB4
##### # 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
##### # 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
##### # 设置mysql客户端默认字符集
default-character-set=UTF8MB4
[client]
##### #设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=UTF8MB4' > /etc/my.cnf

#初始化mysql,需记住初始密码
cd /usr/local/mysql/
./bin/mysqld --initialize --console &>passwd.txt
tem_passwd=$(cat /usr/local/mysql/passwd.txt |grep "temporary"|awk '{print $NF}')
chown -R mysql:mysql /usr/local/mysql
echo "初始密码为:'$tem_passwd'"
echo '初始密码已保存至/root/password.txt中'
echo "$tem_passwd" > /root/password.txt

#将mysql加入系统服务,及使用systemctl管理
echo '[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql

PIDFile=/usr/local/mysql/data/mysqld.pid

# Disable service start and stop timeout logic of systemd for mysqld service.
TimeoutSec=0   #systemd的service超时时间设定 0为不限制

# Execute pre and post scripts as root
PermissionsStartOnly=true   #以root权限来启动程序
# Needed to create system tables
#ExecStartPre=/usr/bin/mysqld_pre_systemd

# Start main service
ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/data/mysqld.pid
#注意这里要加上 --daemonize 使进程后台运行

# Use this to switch malloc implementation
#EnvironmentFile=-/etc/sysconfig/mysql

# Sets open_files_limit
LimitNOFILE = 5000

Restart=on-failure
# 故障时重启
RestartPreventExitStatus=1

PrivateTmp=false' > /usr/lib/systemd/system/mysqld.service
#重定向到系统服务目录内

systemctl daemon-reload
#刷新系统服务
systemctl enable mysqld.service --now
#设置mysql开机自启

#设置软连接,可直接命令行mysql进入服务
ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql
#停止正在运行的mysql,重新启动。
systemctl restart mysqld.service

````
目前脚本内容就是以上部分↑

下面这部分就需要手动去完成了

#输入mysql -u用户名 -p密码 进入mysql数据库中
mysql -uroot -p'hlafnHntA9(b'

#修改mysql默认的root密码
alter user 'root'@'localhost' identified by 'Zz123456';
#添加远程访问用户
CREATE USER  'root'@'%'IDENTIFIED BY 'Zz123456';
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
#使用修改后的mysql进入数据库
mysql -uroot -p'Zz123456'

成功使用新密码登录mysql数据库

昨天浏览了一下网上的帖子,其实可以使用其他工具直接筛选日志的初始密码,截取字段之后定义变量,之后登录使用,这个脚本没那么详细,但是能让刚接触shell的我通俗易懂,简单来说shell是非交互式的操作,省时省力,我平时的工作就是配置这些软件,当做一个学习记录吧。



赞(0) 打赏
未经允许不得转载:哈哈网 » shell脚本之mysql一键部署(新手简易版)

相关推荐

  • 暂无文章

评论 抢沙发

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏