[英]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.