Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我是否可以为多个mysql命令行调用输入一次密码,而这些查询在前面是未知的?_Mysql - Fatal编程技术网

我是否可以为多个mysql命令行调用输入一次密码,而这些查询在前面是未知的?

我是否可以为多个mysql命令行调用输入一次密码,而这些查询在前面是未知的?,mysql,Mysql,通过将查询放入文件中,可以避免重新输入mysql命令行密码 在我的例子中,直到第一个查询完成后,才确定后面的查询 这在非交互式脚本中发生,因此运行mysql控制台不是一个选项 是否有mysql命令行交互会话的概念?或者我可以将其设置为侦听本地unix套接字上的命令(需要返回输出)?或者类似的东西?在MySQL中有几种方法可以处理这个问题 将密码放入脚本所运行用户的主目录中的hidden.my.cnf [客户] 用户=用户 密码=密码 使用 mysql\u config\u编辑器集--登录路径=客

通过将查询放入文件中,可以避免重新输入mysql命令行密码

在我的例子中,直到第一个查询完成后,才确定后面的查询

这在非交互式脚本中发生,因此运行mysql控制台不是一个选项


是否有mysql命令行交互会话的概念?或者我可以将其设置为侦听本地unix套接字上的命令(需要返回输出)?或者类似的东西?

在MySQL中有几种方法可以处理这个问题

  • 将密码放入脚本所运行用户的主目录中的hidden
    .my.cnf

    [客户] 用户=用户 密码=密码

  • 使用

    mysql\u config\u编辑器集--登录路径=客户端--主机=本地主机 --user=localuser——密码

  • 当提示您输入密码时,请按其他方式输入密码

  • 在我看来,这是最糟糕的选择,但为了完整起见,我将添加它
  • 您可以为MySQL创建一个函数包装器,附加您设置的密码

    #! /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...