MySQL 一种非明文的登录方式介绍

来源:这里教程网 时间:2026-03-01 18:34:29 作者:

1 MySQL 安全登录介绍

使用 MySQL 客户端连接进行交互式连接,每次登陆都要输入一次密码,感觉特别麻烦;然后使用明文连接,又一直报出 Warning 的信息,尤其是在做备份任务时。虽然知道明文不安全但是为了追求快速方便,所以不得不使用明文方式登陆。那么是否有既方便登录,又不需要总是交互式输入密码的方案呢?

场景一:

使用 Mysql 客户端连接,提示告警

 

场景二:

备份脚本执行,依旧提示告警

#!/bin/bash

BakDir=/root/adm/full

LogFile=/root/adm/full/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y %m %d  %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

mysqldump -uroot -p123456 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 > $DumpFile

find /root/adm/full  -mtime +3 -type f -exec rm -rf {} \;

 

2 、免密登录解决方案

既然没有方法能关闭,那我们如何在 mysql 支持的方式下来避免相关 warning

下面给大家介绍如下工具:

MySQL 5.6 之后, mysql 新增了一个 login-path 特性,提高了安全性及便利性,也可以看成是指定用户的一种免密登录方式。即 mysql_config_editor 命令。

 

 

手动生成加密文件

参考语法:

$> mysql_config_editor set --login-path=client

         --host=localhost --user=localuser --password

Enter password: enter password "localpass" here

$> mysql_config_editor set --login-path=remote

         --host=remote.example.com --user=remoteuser --password

Enter password: enter password "remotepass" here

参考示例:

mysql_config_editor  set --login-path=mysql_3306 --user=root --socket=/mydata/mysql5.7.44/mysql.sock --password

此时在当前用户 $HOME 目录下,就会生成一个加密文件 .mylogin.cnf

file .mylogin.cnf

.mylogin.cnf: data

该文件非文本文件,还需要我们使用专用命令来读取,如下:

参考语法:

$> mysql_config_editor print --all

[client]

user = localuser

password = *****

host = localhost

[remote]

user = remoteuser

password = *****

host = remote.example.com

参考示例:

[root@doris01 ~]#mysql_config_editor  print --all

[mysql_3306]

user = root

password = *****

socket = /mydata/mysql5.7.44/mysql.sock

此时密码均被加密,不用担心密码明文泄漏,使用方法也是简便,将登陆信息的几个选项用 --login-path 选项直接替换掉即可,如下:

 

同理,在脚本内部,也可以把相关登陆信息用 --login-path 选项进行替换,如下:

# cat DBfullBak.sh

#!/bin/bash

BakDir=/root/adm/full

LogFile=/root/adm/full/bak.log

Date=`date +%Y%m%d`

Begin=`date +"%Y %m %d  %H:%M:%S"`

cd $BakDir

DumpFile=$Date.sql

mysqldump --login-path=mysql_3306 --all-databases --lock-all-tables --routines --triggers --events --master-data=2 > $DumpFile

find /root/adm/full  -mtime +3 -type f -exec rm -rf {} \;

相关推荐