Execute shell command from within a MySQL client?

39,246

Solution 1

You can use the system command.

system command, \! command

Executes the given command using your default command interpreter.

The system command works only in Unix.

Example:

system ls -l

Solution 2

As an additional tweak, on most "'nix" systems you can actually do something like this:

mysql> system bash

And have the entire terminal at your disposal. This is particularly effective if you're doing code work in the terminal that interfaces with MySQL; from the shell, typing "exit" will take you back into the MySQL monitor/client, so you can go back and forth quite easily.

Obviously, other shells ("mysql> system tcsh") would work as well.

Solution 3

I'm running version 5.0.95-log on Linux. Prefacing the command either by "system" or by "!" works for the "pwd" and the "ls -l" commands. If I try to change directory using, e.g.

mysql> system cd /home/mydir

the command seems to be accepted. But this apparently does nothing, as following "pwd" and "ls -l" commands indicate that I am still in the same directory. So it appears that there is a stub of limited functionality built in for this, but that we do not actually have full access to the system shell.

Solution 4

It's actually possible to execute shell commands on the server that mysqld is running though a client connection (rather than executing commands on the client machine locally) by using MySQL Proxy (scroll down to the "Shell commands from MySQL client" section ).

Share:
39,246
Progress Programmer
Author by

Progress Programmer

evolving...

Updated on July 05, 2022

Comments

  • Progress Programmer
    Progress Programmer almost 2 years

    In oracle database, command "host" can be used to run bash command from database command window. Is there a equivalent command as "host" in mySql?

  • Peter Stuifzand
    Peter Stuifzand about 15 years
    Of course this only works in the MySQL command-line client. Not from the database server itself.
  • Ciprian Tomoiagă
    Ciprian Tomoiagă about 7 years
    I think this isn't necessarily a stub, but there's a separate shell on each instance of system command. so if you could chain them somehow ...
  • codeforester
    codeforester over 6 years
    This doesn't answer the question, which is about how to invoke an SQL script from MySQL prompt, not Linux command line.
  • Faisal
    Faisal almost 4 years
    @codeforester Please read the question again, and while you are at it, check the "accepted" answer as well :)
  • Rakmo
    Rakmo over 3 years
    This works from CLI client and also it runs on client instance and not on the MySQL server. Running shell script on MySQL server from withing MySQL is impossible, and for good reasons.