我想通过从 UNIX 脚本运行 SQL 文件来登录数据库,而无需提供用户名和密码(以 root 身份)。有什么命令可以做到这一点?
答案1
您可以将用户名和密码存储在 ~/.my.cnf 中
[mysql]
user=foo
password=bar
但此文件未加密,因此请小心。
答案2
许多客户端软件(包括 mysql)都可以从命令行获取密码。尝试
mysql -u root -pROOT_PASSWORD DATABASE_NAME
其中 ROOT_PASSWORD 是 mysql root 账户的密码。您也可以使用证书进行登录。
由于存在一些混淆,至少最新版本的 mysql 会从进程列表中屏蔽您的密码。您可以通过运行上述命令然后在另一个终端中检查这一点
ps auxw | grep mysql
如果你看到类似
mysql -u 根目录-px xxxxx
(-px xxxxx
这到底是什么,不是您的密码),那么您的密码在进程列表中是不可见的。
安全注意事项:
- 正如@Lekensteyn 在评论中提到的,请注意,您运行的命令将保存到历史文件中(只有用户和 root 可读)。您可以通过取消设置
HISTFILE
变量来防止这种情况。 - 您的脚本应该受到正确权限的保护(例如 700,即所有者拥有所有权限,而其他人则没有任何权限)。