运维shell脚本之测试mysql密码正确与否

shell脚本实战:测试mysql密码正确与否

在迁移过程中,常有批量迁移数据库的情况,因此在割接前,需要批量测试一次割接后的数据库信息是否配置正常,故写了一个shell脚本用于测试数据库密码是否正确有误,具体步骤如下:

  1. 测试前,需要测试当前服务器是否已安装mysql,可通过命令进行测试:
mysql --version
  1. 在创建脚本前,需要先创建credentials.txt文件
    确保文件格式如下,每行记录一个数据库连接的信息:
user1:password1:database1:host1
user2:password2:database2:host2
user3:password3:database3:host3
  1. 创建脚本文件 test_mysql_credentials.sh
vi test_mysql_credentials.sh
  1. 写入以下代码
#!/bin/bash

# 定义一个文件,包含数据库账号、密码、数据库名和主机地址,每行格式为:username:password:database:host
CREDENTIALS_FILE="credentials.txt"

# 定义日志文件
SUCCESS_LOG="success.log"
FAILURE_LOG="failure.log"

# 清空之前的日志文件
> "$SUCCESS_LOG"
> "$FAILURE_LOG"

# 读取文件中的每一行并测试连接
while IFS=: read -r username password database host; do
    # 尝试连接数据库
    mysql -h "$host" -u "$username" -p"$password" -e "USE $database;" 2>/dev/null
    
    # 检查连接是否成功
    if [ $? -eq 0 ]; then
        echo "Connection successful for user '$username' to database '$database' on host '$host'." | tee -a "$SUCCESS_LOG"
    else
        echo "Failed to connect for user '$username' with specified password to database '$database' on host '$host'." | tee -a "$FAILURE_LOG"
    fi
done < "$CREDENTIALS_FILE"

  1. 赋予执行权限并运行脚本
    打开终端,导航到脚本所在目录,并执行以下命令:
chmod +x test_mysql_credentials.sh
./test_mysql_credentials.sh

脚本说明

  • SUCCESS_LOG 和 FAILURE_LOG 分别指向成功和失败的日志文件。
  • > “$SUCCESS_LOG” 和 > “$FAILURE_LOG” 用于在脚本开始时清空上次的日志内容。
  • echo … | tee -a “$SUCCESS_LOG” 和 echo … | tee -a "$FAILURE_LOG"将输出信息追加到相应的日志文件中,同时也显示在终端上。 这样,成功和失败的信息会同时显示在终端上,并分别记录到 success.log 和 failure.log 文件中。如果你只想将信息记录到文件而不在终端显示,可以用 >> 替代 | tee -a:
echo "Connection successful for user '$username' to database '$database' on host '$host'." >> "$SUCCESS_LOG"
echo "Failed to connect for user '$username' with specified password to database '$database' on host '$host'." >> "$FAILURE_LOG"

使用这种方式,消息将仅被记录到文件中,而不会显示在终端上。

  • 13
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值