首页 > 数据库 >运维shell脚本之测试mysql密码正确与否

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

时间:2024-06-14 11:03:45浏览次数:12  
标签:username shell LOG 运维 database host SUCCESS 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"

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

标签:username,shell,LOG,运维,database,host,SUCCESS,mysql
From: https://blog.csdn.net/weixin_46477112/article/details/139660017

相关文章

  • MySql 表数据的增、删、改、查
    数据表的增、删、改、查前言在学习MySql一定少不了对数据表的增、删、改、查,下面将详细讲解如何操作数据表。前面已经建好了表customer列表如下:插入数据插入数据可以使用INSERT语句,语法格式如下:INSERTINTO表名(列名1,列名2,列名3,...)VALUES(值1,值2,值3,......
  • mysql 双主(互为主从)
    ​先要确保两个数据库的数据一致1、master1上操作,修改my.cnf配置文件[mysqld]#必须唯一server_id=1#开启binlog日志log-bin=mysql-binrelay-log=relay-bin#要进行主从的数据库binlog-do-db=coin#指定自增id值从几开始auto_increment_offset=1#指定自增值的步长a......
  • mysql高级查询技巧
    常见表表达式(CommonTableExpressions,简称CTEs)描述:CTEs是SQL中的一种高级查询功能,它允许用户定义一个临时的结果集,这个结果集在执行后续的SQL语句时可以被引用,就像一个临时表一样。CTEs使得复杂的查询逻辑更加模块化和易于理解。声明和语法:WITHCTE_NameAS(SELECTc......
  • Oracle 是否扼杀了开源 MySQL
    Oracle是否无意中扼杀了开源MySQLPeterZaitsev是一位俄罗斯软件工程师和企业家,曾在MySQL公司担任性能工程师。大约15年前,当甲骨文收购Sun公司并随后收购MySQL时,有很多关于甲骨文何时“杀死MySQL”的讨论。他曾为甲骨文进行辩护,反驳了这些不友好的说法。然而,如今Zaitsev......
  • Docker安装MySQL主从
    Docker安装MySQL主从搭建主从dockerrun[OPTIONS]IMAGE[COMMAND][ARG...]dockerrun-p3306:3306很多-d--namehahamysql:5.7Docker启动容器的数据部分一定挂载出来1、创建Masterdockerrun-p3307:3306--namemysql-master\-v/myd......
  • MySQL安全性管理
    用户权限管理创建和管理用户:使用CREATEUSER和GRANT语句创建和管理用户。例如:CREATEUSER'username'@'host'IDENTIFIEDBY'password';GRANTSELECT,INSERT,UPDATE,DELETEONdatabase.*TO'username'@'host';最小权限原则:只赋予用户执行其任务所需的最......
  • 运维必备Linux学习day4(Vmware磁盘扩容)
    虚拟机添加磁盘与linux逻辑卷扩容1.1 虚拟机添加磁盘1.1.1. 检查linux系统的磁盘分区及逻辑卷的相关信息是否正常(1)cat/etc/redhat-release查看系统版本【适用于RHEL及CentOS】:我已自己电脑上的虚拟机,50G内存2G运行内存为例>>>(2)df -h看挂载点空间使用率情况:(3)blkid查看......
  • 《Linux命令行与shell脚本编程大全(第3版)》读书笔记
    一、初识linuxshell1、什么是linuxLinux可划分为以下四部分:Linux内核、GNU工具(如shell)、图形化桌面环境、应用软件1)深入探究linux内核内核主要负责以下四种功能:系统内存管理、软件程序管理、硬件设备管理、文件系统管理2)GNU工具(1)核心GNU工具:GNU项目的主旨在于为Unix......
  • MySQL怎么为表添加描述
    1.MySQL为表添加描述的方法在MySQL中,表本身并没有直接的“描述”字段或属性来存储关于表的额外信息,如用途、创建者、备注等。但是,我们可以通过几种方式来实现这一需求:1.1使用COMMENT关键字为表或列添加注释虽然这不是一个完整的“描述”字段,但我们可以使用COMMENT关键字为表或......
  • 如何查询MySQL存储的树形结构,层次结构
    表定义如下 如果我们需要在表中查询这个树状结构,通过SQL语句,有两种查询方法:1.通过inner自连接查询,适用于简单的结构SELECT*FROMcourse_categoryASoneINNERJOINcourse_categoryAStwoONtwo.parentid=one.idWHEREone.parentid='1'ORDER......