发布于2026-06-07 阅读(0)
扫一扫,手机访问
在 Linux 下部署 Oracle 数据库,新建一个 oracle 用户之后,准备设个密码,结果系统直接弹了个错误:the password contains the user name in some form。说白了,就是嫌你设的密码和用户名太像了。这种情况其实挺常见的,但怎么绕过去呢?下面把解决思路和实操方法都捋一遍。

先别急着硬来,咱们得看看系统里是不是有密码复杂度相关的配置在作祟。第一步,检查 /etc/login.defs 这个文件:
vi /etc/login.defs

翻了一遍,没看到什么限制密码与用户名相似的规则。

接下来再看看 PAM 模块的配置,编辑 /etc/pam.d/system-auth:
vi /etc/pam.d/system-auth

仔细找了一遍,同样没有和“密码包含用户名”直接相关的策略选项。

既然两处地方都没限制,那就说明问题可能出在默认校验逻辑上——有些发行版会在 passwd 命令内部做判断,不允许密码包含用户名的任何子串。碰上这种情况,最省事的办法就是换一条命令来执行密码设置。
网上搜了一圈,发现其实可以用 passwd --stdin 的组合拳直接绕过这道检查。前提是必须先切换到 root 用户,只有 root 才有权这么干。

echo oracle123 | passwd --stdin oracle
这条命令的作用是用 echo 把密码通过管道直接传给 passwd --stdin,明文指定密码。给 oracle 用户重置密码为 oracle123,执行之后看看结果:

如果输出是 all authentication tokens updated successfully,那就说明密码已成功重置。

如果你不喜欢用 echo 明文暴露密码(其实 root 下无所谓),也可以用另一种写法:
passwd --stdin oracle
输入后回车,系统会等待你手动输入新密码,输入 oracle123 再回车即可。注意这里不会回显,直接盲打。


再次看到 all authentication tokens updated successfully,就说明大功告成。

说到底,这个报错本身并不代表密码不能设成与用户名相近——只是默认的 passwd 命令会自作聪明地拦一下。用 --stdin 参数就能从“雷达盲区”里溜过去。以后遇到类似问题,直接上这两个方法之一就行。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9