首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将mysql设置为shell

问将mysql设置为shell
EN

Stack Overflow用户
提问于 2013-05-24 08:48:36
回答 3查看 590关注 0票数 4

我的机器上有一个只运行mysql的用户。我是否可以将用户的shell设置为mysql并使用密码和用户名登录?

我知道如何将shell更改为mysql二进制文件。

代码语言:javascript
复制
usermod -s /usr/bin/mysql

这确实有效,只是我不能在程序中提供用户名/密码。通常,用户/pw被指定为

代码语言:javascript
复制
mysql -u $USER -p

我无法为shell提供参数,如

代码语言:javascript
复制
usermod -s "/usr/bin/mysql -u $USER -p" # Does not work!

此外,使用简单的shell脚本作为shell也不起作用:

代码语言:javascript
复制
#!/bin/sh # mysqlShell
/usr/bin/mysql -u $USER -p
----
usermod -s mysqlShell # does not work

那么,我如何为作为用户shell的程序提供参数呢?

多亏了汤姆·雷格纳,我才能找到一个使用.my.cnf的解决方案

代码语言:javascript
复制
[client]
host=localhost
user=$user
password=$pass
disable-auto-rehash

将mysql设置为shell的位置。我仍然想手动提供密码,但这是我发现的最好的密码。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-24 09:49:57

为用户设置一个$HOME/.my.cnf文件

代码语言:javascript
复制
[client]
host=localhost
user=mysqluser
password=mysqlpass

然后将bash设置为登录shell,并将以下内容放在$HOME/.bashrc中

代码语言:javascript
复制
exec mysql --host=localhost dbname

这应该能做您想做的事情,而所讨论的用户只需提供一个密码(登录时的系统帐户密码)。

exec将shell进程替换为mysql进程。

如果这不像预期的那样工作,则可能需要将$HOME/.bash_profile调整为源.bashrc。

代码语言:javascript
复制
[[ -f ~/.bashrc ]] && . ~/.bashrc

提供适当的.my.cnf并将/usr/bin/mysql设置为shell可能就足够了,但是这样就可以将任意命令行选项/标志传递给mysql客户端。

票数 2
EN

Stack Overflow用户

发布于 2013-05-24 08:54:51

您可以通过在/etc/passwd中编辑用户的帐户详细信息并更改默认的shell来做到这一点。

票数 1
EN

Stack Overflow用户

发布于 2013-05-24 09:31:58

您需要一个登录密码(除非您适当地设置了ssh )。使用以下命令:sudo passwd用户名更改登录密码。

您还需要mysql密码。使用设置密码 Mysql请求。

如果希望用户用固定密码连接到某个固定数据库,请编写一个小的C包装器(然后,使可执行文件仅由Unix用户执行)执行连接操作,或为mysql --user=用户名--password=密码数据库调用一些exec函数,但我不建议使用后者(因为ps aux将显示密码,这是一种安全风险)。

也许,由于MySQL是免费软件,您可以根据您的特殊需要定制mysql的源代码。

也许使用限制壳并仔细配置它更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16730990

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档