【问题标题】:Execute shell command from within a MySQL client?从 MySQL 客户端执行 shell 命令?
【发布时间】:2010-10-30 02:00:52
【问题描述】:

在 oracle 数据库中,命令“host”可用于从数据库命令窗口运行 bash 命令。 mySql中是否有与“host”等效的命令?

【问题讨论】:

    标签: mysql shell


    【解决方案1】:

    您可以使用system 命令。

    系统命令,\!命令

    使用你的命令执行给定的命令 默认命令解释器。

    system 命令仅在 Unix 中有效。

    例子:

    system ls -l
    

    【讨论】:

    • 当然这只适用于 MySQL 命令行客户端。不是来自数据库服务器本身。
    • 这适用于 CLI 客户端,它也运行在客户端实例上,而不是在 MySQL 服务器上。使用 MySQL 在 MySQL 服务器上运行 shell 脚本是不可能的,并且有充分的理由。
    【解决方案2】:

    实际上可以通过使用MySQL Proxy(向下滚动到“来自 MySQL 客户端的 Shell 命令”部分)通过客户端连接(而不是在客户端计算机上本地执行命令)在运行 mysqld 的服务器上执行 shell 命令)。

    【讨论】:

      【解决方案3】:

      在 linux 机器上你应该可以使用下面的例子

      1. ! clear - 清除屏幕
      2. ! ls - 列出当前工作目录中的文件
      3. 基本上,您应该能够使用该语法运行任何命令或脚本

      注意:在 ! 之前添加反斜杠

      【讨论】:

      • 这并没有回答问题,这是关于如何从 MySQL 提示符而不是 Linux 命令行调用 SQL 脚本。
      • @codeforester 请再读一遍这个问题,当你在做的时候,检查“接受”的答案:)
      【解决方案4】:

      我在 Linux 上运行版本 5.0.95-log。以“system”或“!”作为命令的前缀适用于“pwd”和“ls -l”命令。如果我尝试使用例如更改目录,例如

      mysql> 系统cd /home/mydir

      该命令似乎已被接受。但这显然没有任何作用,因为遵循“pwd”和“ls -l”命令表明我仍在同一个目录中。因此,似乎为此内置了一个有限功能的存根,但我们实际上并没有对系统 shell 的完全访问权限。

      【讨论】:

      • 我认为这不一定是存根,但system 命令的每个实例都有一个单独的外壳。所以如果你能以某种方式把它们锁起来......
      【解决方案5】:

      作为额外的调整,在大多数“'nix”系统上,您实际上可以执行以下操作:

      mysql> system bash
      

      您可以随意使用整个航站楼。如果您在与 MySQL 接口的终端中进行代码工作,这将特别有效;在 shell 中,输入“exit”将带你回到 MySQL 监视器/客户端,所以你可以很容易地来回切换。

      显然,其他 shell(“mysql> system tcsh”)也可以工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 2018-04-25
        • 2011-09-19
        • 2021-08-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多