我很好奇,是否有一种方法可以创建一个受密码保护的用户,而不允许密码在表达式中逐字出现,或者在过程中的任何时候在命令行中不加屏蔽。
在MySQL的官方文档中,提到了在命令行上提交未屏蔽的密码(例如登录帐户时)被认为是不安全的:
使用mysqladmin设置口令应该被认为是不安全的。在某些系统上,您的口令对于系统状态程序(如ps)是可见的,其他用户可能会调用ps来显示命令行。MySQL客户端通常在其初始化序列期间用零覆盖命令行口令参数。但是,仍然存在一个短暂的时间间隔,在此期间该值是可见的。此外,在某些系统上,此覆盖策略无效,密码对ps仍然可见。(SystemV Unix系统和其他系统可能会遇到此问题。)1
这很方便,但不安全。在某些系统上,您的密码对系统状态程序(如ps)可见,其他用户可能会调用这些程序来显示命令行。MySQL客户端通常会在初始化序列中用零覆盖命令行密码参数。但是,仍然存在一个短暂的时间间隔,在此期间该值是可见的。此外,在某些系统上,此覆盖策略无效,密码对ps仍然可见。(SystemV Unix系统和其他系统可能会遇到此问题。)2
如果您的操作环境设置为在终端窗口的标题栏中显示当前命令,则只要命令正在运行,密码就保持可见,即使该命令已从窗口内容区域中退出。* 字符指示输入口令的位置。口令不会在输入时显示。以这种方式输入密码比在命令行上指定密码更安全,因为其他用户看不到密码。但是,这种输入密码的方法只适用于交互运行的程序。如果要从非交互式运行的脚本调用客户机,则无法从键盘输入口令。在某些系统上,您甚至会发现脚本的第一行被读取并(错误地)解释为您的口令。2
使用MySQL Configuration Utility创建的加密.mylogin.cnf文件可以在隐藏密码的情况下登录帐户,但在用户首次登录之前的某个时间点仍必须提交密码。
1条答案
按热度按时间unftdfkk1#
我能想到的唯一方法是在表达式中创建不带密码的用户,然后使用mysqladmin设置密码: