Создать базу данных в Shell Script - конвертировать из PHP - PullRequest
3 голосов
/ 05 мая 2010

У меня есть следующий код PHP, который я использую для создания базы данных, пользователя и предоставления полномочий пользователю:

$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());

Я хочу выполнить те же действия, но из сценария оболочки. Это просто что-то вроде этого:

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;"

РЕДАКТИРОВАТЬ , поскольку это необходимо в postwwwacct (сценарий перехвата создания учетной записи cPanel), в идеале он будет полностью автономным

Ответы [ 2 ]

6 голосов
/ 05 мая 2010

Вам необходимо ввести строчные буквы "MYSQL" и добавить имя хоста после -h, и вы смешали одинарные и двойные кавычки. Кроме того, вам нужно установить значения для dbname, dbuser и dbpass и использовать постоянную прописную букву .:

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;"

Но я не уверен на 100% в вашем синтаксисе SQL. Я думаю, это будет выглядеть примерно так:

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;"
1 голос
/ 05 мая 2010

Ваши кавычки и заглавные буквы немного отклонены (или смещены по платформе), но по сути да.

Возможно, вы захотите подумать о том, чтобы на самом деле ваш сценарий создал сценарий sql, а затем заставить его работать через php, shell (s!) И т. Д. Будет намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...