Execute shell command from within a MySQL client?
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 ).
Comments
-
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 about 15 yearsOf course this only works in the MySQL command-line client. Not from the database server itself.
-
Ciprian Tomoiagă about 7 yearsI 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 over 6 yearsThis doesn't answer the question, which is about how to invoke an SQL script from MySQL prompt, not Linux command line.
-
Faisal almost 4 years@codeforester Please read the question again, and while you are at it, check the "accepted" answer as well :)
-
Rakmo over 3 yearsThis 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.