我正在尝试登录由bash shell中的MySQL安装创建的mysql
用户。
所以我要做的命令是:
sudo -i -u mysql
但是,它确实没有(没有在控制台中打印出来,没有连接到任何用户,等等......)。 编辑:命令的返回值为1。
以下是mysql
文件中的/etc/passwd
用户行:
mysql:x:89:89::/var/lib/mysql:/bin/false
我在ArchLinux 64bit上运行,而我正在尝试连接的用户是本地的(没有连接到任何远程服务器)。
我试图理解为什么我可以使用任何其他用户(例如postgres
,root
,...)登录,但不 mysql
。
希望你能帮忙!
答案 0 :(得分:2)
这是预期的行为。当您将/etc/passwd
行与其他行进行比较时,您会注意到用户mysql
已将/bin/false
设置为shell,而其他人通常为/bin/sh
或某事。类似。
当你sudo到mysql
时,你实际上获得了大约一毫秒左右的登录,然后他的“shell”被执行了。 /bin/false
立即返回rc=1
(这是false
命令的唯一目的。)
这是阻止用户以用户mysql
登录的某种“技巧”,尽管该帐户完全可以正常运行。
用户mysql
甚至可能拥有有效密码并被启用,但由于他的奇怪的shell设置,您无法以他身份登录。有时,这些技术用户将/usr/bin/passwd
设置为其shell。然后,您只能sudo
该用户并更改其密码,而不是其他任何内容。