We help IT Professionals succeed at work.

How to connect Mysql server with shell script in Linux

Avik Dasgupta
on
2,219 Views
Last Modified: 2012-06-27
HI,
  I am having problems in connecting the Mysql server in Linux with a normal shell script (not PERL or PHP etc). I want to send querries to the database about various information like select * from my_tab; etc..
My current Linux version is Debian.

Thanks in advance.
Avik.
{{ moved to Linux section -- DanRollins / EE Page Editor }}
Comment
Watch Question

Commented:
Why not php i use it for chell scripting all the time.

/Rob

Author

Commented:
Actually I don't have any knowledge about php or PERL. Anyway I am looking forward for a mechanism that can connect the mysql database through a shell script in bash.

Avik.

Commented:
Sry i have never seen it nevertheless, but i confident that some one has done it.

Happy hunting :)

/Rob
CERTIFIED EXPERT
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
CERTIFIED EXPERT

Commented:
... and if you have a more complex query, write it to a file and use this syntax:

cat /tmp/sql.file | mysql -u root --password=root_password mysql

Replace root with the user id you want to use, root_password with the actual password for the account, and the last mysql in the command line with the database you want to open.

Commented:
Then if you use the way khremar say you can add this to get it in to a variable:
POSTS = "`cat /tmp/sql.file | mysql -u root --password=root_password (database name here)`"

/Rob

CERTIFIED EXPERT

Commented:
... but you don't have to assign the output to a variable, you can just pipe it to a program that can process it:

cat /tmp/sql.file | mysql -u root --password=root_password mysql | some_program

You really should look into Perl, even though you may not use Perl directly to access your database, but it would be very simple to use a Perl program to parse the output of the mysql program. In a second step you could then actually use the Perl DB connectivity.

Commented:
i vote for php :)
CERTIFIED EXPERT

Commented:
At the end it does probably not matter which scripting language you use, but I still think that Perl has the best string processing functions. Perl was made for this type of stuff :-)

Commented:
Thats an official war declaration :-)
CERTIFIED EXPERT

Commented:
Not really, just stating the facts. Perl is acctually an acronym, and stands for "Practical Extraction and Report Language". And this is exactly what the problem here requires: extraction of data from the mysql output, processing and reporting it in different form.
This is the reason why the string routines in Perl are so powerful. Sure, you can do most (all?) task in other languages as well, but you usually have to do more work. I'll give you that the program in any other language will look better :-), and is very likely easier to maintain in the long run.

Where PHP really shines is the database integration. If you have a direct connection to a DB, you probably will not need the parsing capabilities of Perl anymore, so for what I called the second step, PHP would be a good choice.

Commented:
It was only a joke :)

Author

Commented:
Thank you khkremer, for giving throwing some light into it.
Actually, I tried to follow ur command
>>echo "select * from user;" | mysql -u root --pasword=root_password mysql
But it was not working, I tried

echo "select * from table;"|mysql -D database
and it worked, I am logged in as the root hence user name and password is not required, i presume.I give u points for directing me in the direction from which I could make at least something.
Thank u.
CERTIFIED EXPERT

Commented:
Actually, it's not because you are logged in as root, it's because the root user in mysql has no password assigned. In this case, you don't need the --password=... (or -p in interactive mode) switch.
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.