簡體   English   中英

使用 PHP 應用程序使用 .sh 文件創建用戶和數據庫

[英]Creating A User and Database with a .sh file using PHP Application

我有一個 sh 腳本,當我使用 root 用戶在命令行中運行它時運行良好。 這將創建一個數據庫和一個帶密碼的用戶。

$ ./create-database.sh dbname dbuser dbpass

    #!/bin/bash
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>log.out 2>&1
# Everything below will go to the file 'log.out':

# Functions
ok() { echo -e '\e[32m'$1'\e[m'; } # Green

EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`

Q0="DROP DATABASE IF EXISTS $1;"
Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON $1.* TO '$2'@'localhost' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q0}${Q1}${Q2}${Q3}"

if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi

$MYSQL -u root -pXXXXXXX -e "$SQL"

ok "Database $1 and user $2 created with a password $3"

當我使用 php 運行時,同一個文件不起作用。 PHP 代碼如下所示,與 sh 文件位於同一文件夾中。

    <?php

$db_name = $_GET['db_name'];
$db_user = $_GET['db_user'];
$db_pass = $_GET['db_pass'];

$output = shell_exec ("sh ./create-database.sh $db_name $db_user $db_pass");

echo "Output $output";

PHP 腳本具有 777 權限,並在用戶pakerp擁有的應用程序中運行

log.out 文件給了我以下錯誤

錯誤 1698 (28000):拒絕用戶“root”@“localhost”的訪問

當我在命令行運行時,相同的腳本運行良好。

我錯過了什么。 請告訴我。

您可能需要在本地主機上允許 root 或更好地使用非 root 用戶!

好像和這個問題一樣

使用以下命令之一:

$MYSQL --host=localhost --user=root --password=XXXXXX -e $SQL

或者

$MYSQL --host={{IP}} --user=root --password=XXXXXX -e $SQL

輸入您的機器 ip 而不是 {{IP}}。 如果您的機器是本地主機,請添加 127.0.0.1 作為 IPv4 或 ::1 作為 IPv6

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM