创建Shell脚本数据库 - 从PHP

问题描述:

转换

我有我用它来创建一个数据库,一个用户,并授予用户下面的PHP代码:创建Shell脚本数据库 - 从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()); 

我想执行这些行动但是来自一个shell脚本。难道仅仅是这样的:

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后帐户创建钩子脚本)理想这将是完全独立的

您需要小写“MYSQL”并在-h之后添加主机名,并且混合了单引号和双引号。此外,您还需要为dbnamedbuserdbpass设定值,并使用一致的大小写:

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

但我不是在您的SQL语法100%的信心。我认为它看起来更像这样:

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

当我在本地环境中创建一个一次性数据库和用户时,发现这很有用,只需要再添加一行: 'mysql -u $ MyUSER -p $ MyPASS -Bse“为'$ 1'设置密码@'$ 1' =密码('$ 1');“'。我在这个答案中改变了另外两条线,也就是'$ 1'的参数。当然,我在这里为一次性**本地**环境使用了一个参数。 **本地**。 – cdmo 2013-08-30 20:44:50

你的报价和资本是一个(或平台偏见),但实质上是。

您可能想要考虑实际让您的脚本创建一个sql脚本,然后使其通过php,shell(s!)等运行将会更容易。

+0

我第二次使用SQL脚本。看看一个dbdeploy和phing http://www.davedevelopment.co.uk/2008/04/14/how-to-simple-database-migrations-with-phing-and-dbdeploy/ – Gordon 2010-05-05 10:36:53

+0

理想情况下,我会保持它这一个脚本,它从postwwwacct(一个cpanel邮政帐户创建脚本)运行如此理想,它将完全独立 – robjmills 2010-05-05 10:47:18

+0

@Unreason可以让我知道报价和上限在哪里,所以我可以修复它们请 – robjmills 2010-05-05 12:05:24