php - 使用 PHP 应用程序使用 .sh 文件创建用户和数据库
问题描述
我有一个 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' 的访问
当我在命令行运行时,相同的脚本工作正常。
我错过了什么。请告诉我。
解决方案
您可能需要在 localhost 上允许 root 或更好地使用非 root 用户!
推荐阅读
- c# - 如何使用 EWS 从所需参加者那里获取组详细信息
- powerapps - PowerApps - 使用用户级别访问权限登录(自定义登录屏幕)
- python - 使用 PyTorch v1.4 设置的自动编码器不会减少损失
- node.js - pupeteer 的 pdf 渲染问题
- kubernetes - 如何配置本地 kubectl 连接到 kubernetes EKS 集群
- azure - “没有内核!” 错误 Azure ML 计算 JupyterLab
- python - 在浏览器中下载excel || 姜戈
- html - 将照片添加到列
- optimization - 具有多个约束的 scipy 优化
- wordpress - 在 Zapier 中访问高级自定义字段数据