17

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?

6 Answers 6

32

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
Sign up to request clarification or add additional context in comments.

2 Comments

Of course this only works in the MySQL command-line client. Not from the database server itself.
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.
6

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.

Comments

2

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

2

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.

1 Comment

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 ...
0

In a linux machine you should be able to use the following example

  1. ! clear - to clear the screen
  2. ! ls - to list files in the current working directory
  3. Basically you should be able to run any command or script using that syntax

NB: Add a back slash before !

2 Comments

This doesn't answer the question, which is about how to invoke an SQL script from MySQL prompt, not Linux command line.
@codeforester Please read the question again, and while you are at it, check the "accepted" answer as well :)
0

To execute SQL script from within the MySql prompt use source <script_namne>

1 Comment

As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.