I have a Mysql database dump. I want to install it with Hudson via a Shell Script to an external Linux machine.

How can you take a Mysql script and run it inside a database on other machine? I know I can transfer files with sftp and use ssh when accessing another machines manually, but how to automate this all to a simple Shell Script?

$ mysql -p$pass -u$user -h$otherhost $db < dumpfile

This assumes dumpfile is text from mysqldump, containing raw SQL statements.

It is important that there be no space between -p and the password. (I assume you want automatic login.) If the password does not immediately follow the -p, mysql interprets the option as meaning it should ask interactively for the password, and treats the separate password argument as the DB name.

For this to work, $user must have permission to log in, drop a table, create a table, and insert rows into that table, all as a remote user. MySQL keeps separate remote and local permissions for users, so this is an easy trap to fall into. Because allowing a remote user this much power is a security risk, you may want to use SSL (--ssl* options) with mysql. Otherwise, I don't know that I would allow a remote user to do such things.

  • +1: That serves quite well what I am trying to do. Thanks! – mico Jul 12 '11 at 10:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.