shell脚本实现linux登录指定mysql

工作时,客户调整网络连接规范,实行网络分离,连接内网登录云桌面可以用客户端登录Mysql数据库查看数据,但不能登录前台,也不能登录主机查看日志、分析日志。登录外网想查看数据又要记下登录命令,其他同事还时不时问,为方便,简单写个脚本实现想登录哪个Mysql就登录哪个Mysql

第一步

创建文件a.txt,记录数据库大致信息,方便指定连接的数据库(具体怎么写,自己看着舒服就行,文件名任意取,后面的shell脚本中记得修正)

**************************************************************************************************
*《《《《《《《数据库环境信息》》》》》》》  
* mdb昵称          ip               Port
test_mdb     192.168.0.1     3366

user_mdb     192.168.0.2    3366
**************************************************************************************************

 第二步

将数据库信息配置写入配置文件:mysql_host.conf

# mysql信息         ip           端口       用户名             密码
test_mdb     192.168.0.1    3366    bXlzcWwK    bXlzcWwK
user_mdb     192.168.0.2    3366   bXlzcWwK    bXlzcWwK

mysql信息列,使用唯一标识符

用户名密码先用base64编码,以免将密码信息直接暴露,后面脚本再用base64 -d解码

用法如下:

admin[/data/admin/ob_rel/scripts]%echo "mysql" | base64
bXlzcWwK
admin[/data/admin/ob_rel/scripts]%echo "bXlzcWwK" | base64 -d
mysql

所以这里的用户名密码都是mysql

第三步

 shell脚本实现连接Mysql数据库

#!/bin/bash

file=mysql_host.conf
path=a.txt

echo_color()
{
    echo -e "\e["$1"m"$2"\e[0m"
}

base_64(){
    echo $1 | base64 -d
}

while((1))
do
  # 清屏,有些主机clear清屏后可能看不到之前的记录了,这时可以用 printf "\033c"
#  clear
	printf "\033c"
	cat $path | grep -v "^$"
	echo -e "\e[1;32m若需退出,请输入:exit or quit or -1\e[0m"

	while((1))
	do
    read -p "Try to connect to the database:" select
    if [[ "$select" == "exit"  || "$select" == "quit" || "$select" == "-1" ]];then
      exit
    fi

    if [ "$select" == "" ];then
      echo_color 31  "error:请输入需要连接的数据库"
      continue
    fi
  
    sqlload=($(grep -w "^${select}" "$file"))
    # 方法一
#		if [ "${#sqlload[@]}" -eq 0 ];then
#			echo_color 31 "error:输入错误,请检查输入信息或配置文件:"$file""
#			continue
#		else
#			break
#		fi
   
   # 方法二
   if [ $? -eq 0 ];then
     break
   else
     echo_color 31 "error:输入错误,请检查输入信息或配置文件:"$file""
     continue
   fi
   
	done

	datainfo=${sqlload[0]}
	ip=${sqlload[1]}
	Port=${sqlload[2]}
	user=$(base_64 "${sqlload[3]}")
	passwd=$(base_64 "${sqlload[4]}")
	echo_color 33 "------准备连接数据库:"$datainfo"------"
	mysql -u$user -P$Port -h$ip -p$passwd
done

1、脚本中的方法一、方法二任选一个,用来判断数据库信息在mysql_host.conf是否已配置

2、通过while死循环实现重复连接需要连接的数据库而不必重新执行脚本

3、sqlload=($(grep -w "^${select}" "$file"))

        此处用到数组,以免参数过多报错误日志

        grep -w "^${select}" "$file",从配置文件 mysql_host.conf 匹配以xxx开头的信息,所以配置文件第一列使用唯一标识符

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值