老男孩教育每日一题:2017年3月13日-如何防止Linux命令行或脚本里MySQL登录密码泄露?

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

不低于3种方法。

 

明知山有虎偏向虎山行的方案:

1.1.1 可以通过如下环境变量强制Linux不记录敏感历史命令

在命令行执行HISTCONTROL=ignorespace后,再输入带密码的命令的前面加一个空格登录,登录命令不会被记录到历史记录里。

1
[root@oldboy~] # HISTCONTROL=ignorespace

 

#<==这里是临时生效,要想永久生效,请放入/etc/bashrc

1
[root@oldboy~] #  mysql -uroot-p'oldboy123'

#<==命令的开头要多一个空格。

1.1.2 操作完敏感的命令后可以及时删除命令行记录

执行“history -d 历史命令序号” 清除指定历史记录命令

1
[root@oldboy~] # history|tail -4

#<==显示历史记录。

1
2
  
  252 mysql -uroot -p 'oldboy123'

#<==此条带密码,敏感,待删除。

1
2
3
4
   253  pwd
   254  history
   255  history | tail  -4
[root@oldboy~] # history -d 252

#<==删除序号为252的历史记录。

1
2
[root@oldboy~] # history|tail -5
  252  pwd

                

#<==序号252对应的带密码登录的命令已经消失。

1
2
3
4
5
6
7
8
9
   253  history
   254  history | tail  -4
   255  history  -d 252
   256  history | tail  -5
执行“ history  -c”清除所有所有记录
[root@oldboy~] # history -c
[root@oldboy~] # history
     history
执行“>~/.bash_history”清除历史记录文件


1.1.3 给带密码的启动脚本以及备份脚本等加700权限,用户和组改为root

chmod 700/data/3306/mysql            

#<==可以采用kill信号的关闭方式数据库,从而防止密码泄露。

chmod 700/server/scripts/bak.sh       

#<==将密码写入my.cnf配置文件,使得执行备份命令不需要加密码。

1.1.4 把密码写入my.cnf配置文件并加700权限,用户和组改为mysql

1
2
[root@oldboy~] # cp /application/mysql/my.cnf /etc/
[root@oldboy~] # grep -A 2 client/etc/my.cnf

 #<==配置文件开头添加如下三行,无需重启系统。

1
[client]

  #<==客户端模块标签。

1
user=root

  #<==用户参数及密码。

1
password=oldboy123

  #<==密码参数及密码。

1
[root@oldboy~] # mysql

#<==此时登录数据库就不用输入密码了。

1
2
3
4
5
6
Welcometo the MySQL monitor.  Commands endwith; or \g.
YourMySQL connection  id  is 8
Serverversion: 5.6.34 Source distribution
...省略若干行...
Type 'help;'  or  '\h'  for  help. Type  '\c'  to clearthe current input statement.
mysql>

知道山上有老虎,就不去的的方法:

1
[root@oldboy~] # mysql-uroot -p

#<==这里标准dba命令行登陆命令,交互式输入密码可有效防止密码泄露。

1
Enter password:


本文转自 李导 51CTO博客,原文链接:http://blog.51cto.com/lidao/1912536

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
Linux Shell
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
Linux手动清理Linux脚本日志定时清理日志和log文件执行表达式
71 1
|
21天前
|
Linux Shell Python
Linux执行Python脚本
Linux执行Python脚本
26 1
|
9天前
|
关系型数据库 MySQL Linux
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
linux CentOS 7.4下 mysql5.7.20 密码改简单的方法
17 0
|
1天前
|
存储 关系型数据库 MySQL
Linux | MySQL基础
Linux | MySQL基础
|
2天前
|
关系型数据库 MySQL Linux
Linux联网安装MySQL Server
Linux联网安装MySQL Server
11 0
|
4天前
|
PHP
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
web简易开发——通过php与HTML+css+mysql实现用户的登录,注册
|
9天前
|
Linux
Linux命令行快捷键
Linux命令行快捷键
|
17天前
|
Ubuntu Unix Linux
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
【Linux/Ubuntu】Linux/Ubuntu运行python脚本
|
18天前
|
Linux Shell
Linux脚本获取输入参数判断文件还是文件路径
Linux脚本获取输入参数判断文件还是文件路径
12 4
|
22天前
|
Linux Shell 调度
linux脚本任务调度
Linux的`crontab`用于计划任务,按照预设时间执行脚本或命令。步骤包括:1) 创建并赋予执行权限的脚本,如`backup.sh`;2) 使用`crontab -e`编辑任务列表;3) 添加cron表达式(如`0 1 * * * /path/to/backup.sh`,表示每天凌晨1点执行脚本);4) 保存并启动/检查cron服务。cron表达式包含分钟、小时、日期、月份和周几字段。根据需求调整表达式以满足不同任务需求。
10 3