php - 使用 PHP 应用程序使用 .sh 文件创建用户和数据库

标签 php bash debian

我有一个 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 文件给我以下错误

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

当我在命令行运行时,相同的脚本运行良好。

我错过了什么。请告诉我。

最佳答案

您可能需要在本地主机上允许 root 或更好地使用非 root 用户!

Seems the same as this issue

关于php - 使用 PHP 应用程序使用 .sh 文件创建用户和数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64099397/

相关文章:

php - Doctrine2 不可变实体和仅附加数据结构

php - 创建一个 php 脚本以作为 cron 作业运行 - 使用 Zend Framework 库

bash - awk 获取下一行

linux - debian 软件包内容的运行时安装目录

pdf - 由于标题太长,cups 拒绝打印带有 'filter error' 的 pdf 文件

php - 使用 php 无法进行搜索

php - 将列表分成三列

regex - BASH KDialog 多文件输入 - 在特定空间拆分字符串

bash - 在 bash 中,退出脚本而不退出 shell 或从子 shell 中导出/设置变量

mysql - 将日期从文件传递到 mysql 的 Shell 脚本