mysql - Create database in Shell Script - convert from PHP

656

I have the following PHP code that i use to create a database, a user, and grant permissions to the user:

$con = mysql_connect("IP.ADDRESS","user","pass");
mysql_query("CREATE DATABASE ".$dbuser."",$con)or die(mysql_error());
mysql_query("grant all on ".$dbuser.".* to  ".$dbname." identified by '".$dbpass."'",$con) or die(mysql_error());

I want to perform these same actions but from within a shell script. Is it just something like this:

MyUSER="user"
MyPASS="pass"
MYSQL -u $MyUSER -h -p$MyPASS -Bse "CREATE DATABASE $dbuser;"
MYSQL -u $MyUSER -h -p$MyPASS -Bse "GRANT ALL ON $DBUSER.* to  $DBNAME identified by $DBPASS;"

EDIT as this is needed within postwwwacct (a cPanel post account creation hook script) ideally it will be entirely self-contained

726

Answer

Solution:

You need to lower-case "MYSQL" and add a hostname after the-h and you've mixed single and double quotes. Also, you need to set the values fordbname,dbuser anddbpass and use consistent capitalization.:

MyUSER="user"
MyPASS="pass"
HostName="host"
dbName="dbname"
dbUser="dbuser"
dbPass="dbpass"

mysql -u $MyUSER -h $HostName -p$MyPASS -Bse "CREATE DATABASE $dbUser;"
mysql -u $MyUSER -h $HostName -p$MyPASS -Bse "GRANT ALL ON ${dbUser}.* to $dbName identified by $dbPass;"

But I'm not 100% confident in your SQL syntax. I would think it would look more like this:

mysql -u $MyUSER -h $HostName -p$MyPASS -Bse "CREATE DATABASE $dbName;"
mysql -u $MyUSER -h $HostName -p$MyPASS -Bse "GRANT ALL ON ${dbName}.* to $dbUser identified by $dbPass;"
514

Answer

Solution:

Your quotes and capitalization is a bit off (or platform biased), but in essence yes.

You might want to consider actually having your script create an sql script, then making it run through php, shell(s!), etc will be much easier.

People are also looking for solutions to the problem: php - latin1/unicode conversion problem with ajax request and special characters

Source

Didn't find the answer?

Our community is visited by hundreds of web development professionals every day. Ask your question and get a quick answer for free.

Ask a Question

Write quick answer

Do you know the answer to this question? Write a quick response to it. With your help, we will make our community stronger.

Similar questions

Find the answer in similar questions on our website.