[root@dev01 /]# mysql -uroot -pxxxx
mysql: [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 2837
不要鄙视这个缺点,有些业务验证是不许可涌现Warning的,以是可能有些大厂还须要自己定制一下这个缺点的逻辑。
当然如果不须要知道密码,能不能换个办法来做呢,实在也行,在5.6中开始有了loginpath,和Oracle中的钱包的功能差不多,实在便是一种认证,做了授权,你不须要知道这些信息,loginpath便是一道桥梁为你做了认证。
如果你是5.5的版本,没了loginpath,有没有可行的方案来知足需求呢。
有的同学可能这个时候才开始问,需求是什么?
我们设想一下,命令行的办法中,输入明文密码,那还要密码干嘛,干脆我输入密码的时候你别看,但是history命令里面有啊。
以是这也算是一个风险点的入口,如果由于一些意外的情形登录,那么这种情形就很尴尬了。这是需求一。
还有一种场景,如果我们有大量的MySQL环境,每个环境的DBA账户密码是统一的,但是密码很繁芜。我们不能输入明文,那么就输入密码格式,那就意味着交互和手动输入,手动输入切实其实了,你会创造这种操作真是原始,高等一点,用下keypass或者keepass等,这个是依赖于本地的环境配置。以是需求二的特点便是手工掩护密码啰嗦,手工输入密码太原始。
那我们写脚本,但是脚本里面的密码还是可见的,调用的明文密码问题办理了,但是内容中的密码还是可读的。
以是这种情形下,一个很自然的方法便是加密。
个中一种是对密码加密,比如我们得到一个密码加密后的串,在须要调用的时候做一下解密,得到真实的密码。这个过程是在脚本里的逻辑来实现,以是我们得到明文密码的概率要低一些。
其余一类便是对文件加密,比如对全体文件加密,加密之后文件就没法读了。以是加密后的密码又被加密了。对文件加密有shell的办法还有python等措辞会
如果要调用脚本的时候,实在便是先解密文件,然后调用解密逻辑,得到真正的密码,然后开启访问的要求。
比如我得到了一个加密后的密码串。调用的解密逻辑是decrypt_passwd,当然这个是可读还可逆的,我们实在可以再加入一些繁芜的因子来滋扰。
脚本的初步内容如下:
sec_password='RHB6WUF1d1c5TTEzabadfo='
dec_passwd=''
sql_block=''
function decrypt_passwd
{
tmp_passwd=$1
dec_passwd=`echo $tmp_passwd|base64 -d`
}
decrypt_passwd $sec_password
instance_ip=$1
instance_port=$2
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 -udba_admin -p$dec_passwd -h127.0.0.1 -P$1
这样一个大略的文件,利用gzexe来加密即可,便是我们初步预期的效果了。
这个文件就类似一个二进制文件,我们拷贝到任何做事器端,指定入口,就可以方便的访问了。