mysql密码加密_MySQL之登陆密码加密认证脚本

本文介绍了在MySQL环境中,如何避免在命令行中明文输入密码导致的安全警告。通过使用base64加密、Linux shell的gzexe加密和shc加密工具,演示了对MySQL登陆密码进行加密认证的脚本方法,以提高安全性。
摘要由CSDN通过智能技术生成

一、登陆密码加密认证脚本应用场景

日常操作,经常明文指定了MySQL密码来登录MySQL服务,在登录成功之后就会抛出下面的警告:

[root@git-server ~]# mysql -uroot -p'wujianwei'

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 510

Server version: 5.6.36-log Source distribution

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

对于要求严格的业务生产场景不允许出现Warning的,所以可能需要自己定制一下这个错误的逻辑。

当然如果不需要知道密码,能不能换个方式来做呢,其实也行,在5.6中开始有了loginpath,和Oracle中的钱包的功能差不多,其实就是一种认证,做了授权,你不需要知道这些信息,loginpath就是一道桥梁为你做了认证。

如果你是5.5的版本,没了loginpath,有没有其他的方案来满足需求呢。

有的人可能这个时候开始问,需求是什么?

我们设想一下,命令行的方式中,输入明文密码,那还要密码干嘛,干脆我输入密码的时候你别看,但是history命令里面有啊。

所以这也算是一个风险点的入口,如果因为一些意外的情况登录,那么这种情况就很尴尬了。这是需求一。

还有一种场景,如果我们有大量的MySQL环境,每个环境的DBA账户密码是统一的,但是密码很复杂。我们不能输入明文,那么就输入密码格式,那就意味着交互和手动输入,手动输入简直了,你会发现这种操作真是原始,高级一点,用下keypass或者keepass等,这个是依赖于本地的环境配置。所以需求二的特点就是手工维护密码啰嗦,手工输入密码太原始。

那我们写脚本,但是脚本里面的密码还是可见的,调用的明文密码问题解决了,但是内容中的密码还是可读的。

所以这种情况下,一个很自然的方法就是加密。

其中一种是对密码加密,比如我们得到一个密码加密后的串,在需要调用的时候做一下解密,得到真实的密码。这个过程是在脚本里的逻辑来实现,所以我们得到明文密码的概率要低一些。

另外一类就是对文件加密,比如对整个文件加密,加密之后文件就没法读了。所以加密后的密码又被加密了。对文件加密有shell的方式还有python等语言。

如果要调用脚本的时候,其实就是先解密文件,然后调用解密逻辑,得到真正的密码,然后开启访问的请求。

比如我得到了一个加密后的密码串。调用的解密逻辑是decrypt_passwd,当然这个是可读还可逆的。

二、Linux下用base64命令加解密字符串

2.1加密:

[root@git-server ~]# echo wujianwei|base64

d3VqaWFud2VpCg==

2.2解密:

[root@git-server ~]# echo d3VqaWFud2VpCg==|base64 -d

wujianwei

2.3下面对MySQL数据库备份的账户密码加密的方式来源于base64加密

脚本内容如下:

[root@git-server ~]# cat test03.sh

#!/bin/sh

Pass='d3VqaWFud2VpCg=='

sock=/tmp/mysql.sock

function decrypt_passwd

{

tmp_pass=$1

dec_pass=`echo $tmp_pass|base64 -d`

}

decrypt_passwd $Pass

port=$1

#if [ ! -n "$port" ]; then

#echo '############################################'

#echo 'Please input correct MySQL Port and try again.'

#echo '############################################'

#ps -ef|grep mysqld|grep -v grep |grep -v mysqld_safe

#exit

#fi

/usr/local/mysql/bin/mysql -uroot -p$dec_pass -P$1 -S$sock

通过此脚本登陆MySQL服务&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值