我是否可以为多个mysql命令行调用输入一次密码,而这些查询在前面是未知的?
通过将查询放入文件中,可以避免重新输入mysql命令行密码 在我的例子中,直到第一个查询完成后,才确定后面的查询 这在非交互式脚本中发生,因此运行mysql控制台不是一个选项我是否可以为多个mysql命令行调用输入一次密码,而这些查询在前面是未知的?,mysql,Mysql,通过将查询放入文件中,可以避免重新输入mysql命令行密码 在我的例子中,直到第一个查询完成后,才确定后面的查询 这在非交互式脚本中发生,因此运行mysql控制台不是一个选项 是否有mysql命令行交互会话的概念?或者我可以将其设置为侦听本地unix套接字上的命令(需要返回输出)?或者类似的东西?在MySQL中有几种方法可以处理这个问题 将密码放入脚本所运行用户的主目录中的hidden.my.cnf [客户] 用户=用户 密码=密码 使用 mysql\u config\u编辑器集--登录路径=客
是否有mysql命令行交互会话的概念?或者我可以将其设置为侦听本地unix套接字上的命令(需要返回输出)?或者类似的东西?在MySQL中有几种方法可以处理这个问题
.my.cnf
[客户]
用户=用户
密码=密码#! /bin/bash
local_mysql_do_file() {
mysql -u localuser -h localhost -pPASSWORD_NO_SPACE < $1
}
# usage
local_mysql_do_file file.sql
#/bin/bash
本地_mysql_do_文件(){
mysql-u localuser-h localhost-pPASSWORD\u NO\u空间<$1
}
#用法
本地\u mysql\u do\u file file.sql
User@smcjones提到使用.my.cnf文件或mysql\u config\u编辑器。这些都是很好的建议,我投他+1票
另一种解决方案是将凭据放入您选择的任何文件中,然后在调用MySQL工具时指定该文件:
mysql --defaults-extra-file=my_special.cnf ...other arguments...
最后,为了完整起见,您可以将环境变量用于某些选项,如主机和密码。但奇怪的是,不是用户。看
我真的不建议使用环境变量作为密码,因为任何可以在您的客户端主机上运行
ps
的人都可以看到mysql客户端进程的环境变量。不确定您的问题,但您是否尝试将用户和密码保存在.my.cnf文件中(或在较新版本中使用mysql配置编辑器)您现在正在从声明为非交互式的脚本运行至少一个MySQL连接。一个实例是如何运行的?只需对后续连接执行相同的操作。如果该实例要求输入密码,只需使用read
自己输入密码并将其存储在环境变量中即可。然后将其传递给所有MySQL实例。我认为该解决方案是短视的。现在,您可能喜欢在shell脚本中调用mysql
,但最终您将看到它变得多么笨拙。然后,您可以立即将SQL语句列表发送到mysql
(只需键入一个pwd),或者使用可以与mysql对话的客户端。选项1a)。在mysql选项文件的[client]
部分下包括用户、密码和主机行(以及会话所需的任何其他变量设置)。然后将选项文件包含在mysql执行中mysql——默认的额外文件/opt/mysql/client1options.cnf
。这种方法允许我们为不同的mysql用户创建多个客户端配置文件。我使用--defaults extra file
方法+10 .
export MYSQL_HOST="mydbserver"
export MYSQL_PWD="Xyzzy"
mysql ...other arguments...