Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Shell脚本中创建数据库-从PHP转换_Php_Mysql_Shell - Fatal编程技术网

在Shell脚本中创建数据库-从PHP转换

在Shell脚本中创建数据库-从PHP转换,php,mysql,shell,Php,Mysql,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(mysq

我使用以下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;"
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;"

编辑因为这是postwwwacct(一个cPanel post account creation钩子脚本)中需要的,理想情况下,它将是完全独立的

您的报价和资本化有点偏离(或平台偏向),但本质上是肯定的

你可能想考虑你的脚本创建一个SQL脚本,然后让它运行在PHP、shell(s!)等上。更容易。

你需要小写“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;"
但我对您的SQL语法没有100%的信心。我想它看起来更像这样:

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

我支持使用SQL脚本来实现这一点。看看dbdeploy和phing,理想情况下,我会将其保存在这一个脚本中,它是从postwwwacct(一个cpanel post account创建脚本)运行的,因此理想情况下,它将是完全自我的-contained@Unreason你能告诉我报价和封顶在哪里吗?这样我就可以修改它们了。。或者给出一个创建SQL脚本并执行该脚本的示例。thanksI发现,在本地环境中创建一次性数据库和用户时,这很有用,只需再添加一行:
mysql-u$MyUSER-p$MyPASS-Bse“为“$1”@“$1”设置密码=密码(“$1”);”
。我把这个答案中的另外两行也改成了
$1
参数。当然,我这里用的是一个论点,是关于可丢弃的本地环境。地方的