创建MySQL用户而不用明文显示密码?

问题描述 投票:0回答:1

我很好奇是否有一种方法可以创建受密码保护的用户,并且不允许密码在表达式中逐字出现或在此过程中的任何时候在命令行上不被屏蔽。

在 MySQL 官方文档中,提到在命令行上提交未屏蔽的密码(例如登录帐户时)被认为是不安全的:

使用 mysqladmin 设置密码应该被认为是不安全的。在某些系统上,您的密码对系统状态程序(例如其他用户可能调用的 ps 来显示命令行)可见。 MySQL 客户端通常在初始化过程中用零覆盖命令行密码参数。然而,仍然存在一个短暂的时间间隔,在此期间该值是可见的。此外,在某些系统上,这种覆盖策略无效,并且密码对 ps 仍然可见。 (SystemV Unix 系统以及其他系统可能会遇到此问题。)1

这很方便,但不安全。在某些系统上,您的密码对系统状态程序(例如其他用户可能调用的 ps 来显示命令行)可见。 MySQL 客户端通常在初始化过程中用零覆盖命令行密码参数。然而,仍然存在一个短暂的时间间隔,在此期间该值是可见的。此外,在某些系统上,这种覆盖策略无效,并且密码对 ps 仍然可见。 (SystemV Unix 系统以及其他系统可能会遇到此问题。)2

如果您的操作环境设置为在终端窗口的标题栏中显示当前命令,则只要该命令正在运行,密码就保持可见,即使该命令已滚动到窗口内容区域的视图之外。 * 字符表示您输入密码的位置。输入密码时不会显示密码。 以这种方式输入密码比在命令行上指定密码更安全,因为其他用户看不到该密码。但是,这种输入密码的方法仅适用于交互式运行的程序。如果您想从非交互运行的脚本调用客户端,则无法从键盘输入密码。在某些系统上,您甚至可能会发现脚本的第一行被读取并(错误地)解释为您的密码。2

可以使用使用 MySQL 配置实用程序 创建的加密 .mylogin.cnf 文件来登录帐户,同时保持密码模糊,但仍必须在用户首次登录之前的某个时刻提交密码。

mysql security passwords
1个回答
1
投票

我能想到的唯一方法是在表达式中创建没有密码的用户,然后使用 mysqladmin 设置密码:

$ sudo mysql -e "CREATE USER someone;"
$ mysqladmin -u someone -p password
New password: 
Confirm new password: 
© www.soinside.com 2019 - 2024. All rights reserved.