Я могу подключиться, но не могу создать базу данных. Подключено к базе данных
<body>
<?php
//Database Connection Variables
$servername = "localhost";
$username = "******";
$password = "********";
$conn = new mysqli($servername, $username, $password);
//The Connection and test
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
//If the form is submitted create the database
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$dbname = $_POST['dbname'];
$user = $_POST['user'];
$password = $_POST['password'];
$sql = "CREATE DATABASE $dbname";
$sql = "CREATE USER $user";
$sql = "GRANT ALL PRIVILEGES ON $dbname.* To '$user' IDENTIFIED BY '$password'";
if ($conn->query($sql) === FALSE) {
echo "Error creating database: " . $conn->error;
}
}
?>
<div class = "container">
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF'];?>">
<div class = "row">
<div class = "col-25">
<label for = "dbname">New DB Name: </label>
</div>
<div class = "col-75">
<input type = "text" name = "dbname" placeholder = "Enter New Database Name">
</div>
<div class = "col-25">
<label for = "user">New User Name: </label>
</div>
<div class = "col-75">
<input type = "text" name = "user" placeholder = "Enter New User Name">
</div>
<div class = "col-25">
<label for = "password">New Password: </label>
</div>
<div class = "col-75">
<input type = "text" name = "password" placeholder = "Enter New Password">
<input type = "submit" name = "submit" value = "GO" />
</div>
</div>
</div>
</form>
Проблема (я думаю) в том, что у меня есть только cpanel и нет WHM, поэтому у меня нет пароля root mySQL. Я хочу сделать все это через форму, создать базу данных, пользователей, пароли, таблицы, загрузить данные и т. д.
Цель состоит в том, чтобы конечный пользователь без технических навыков мог создавать, просматривать и добавлять данные в маркетинговую базу данных через форму.
использовать мультизапрос mysqli::multi_query
что касается вопроса, я думаю, что нет, он будет проверять пользователя вашей базы данных при выполнении запроса, и это будет ваше разрешение, если вы разрешите эти запросы, вы можете это сделать. если у вашего пользователя есть права, то это возможно






Таким образом, получается, что нет с паролем WHM root sql ограничивает. Используя только cPanel, это работает. но у вас должен быть загружен xmlapi.php на ваш сервер [ссылка ниже].
<body>
<?php
//Database Connection Variables
include("xmlapi.php"); //your need to have this on the server same folder
$db_host = 'yourdomain.com'; //your URL
$cpaneluser = 'yourcpaneluser'; // the user you use to sign into cpanel
$cpanelpass = 'yourcpanelpassword'; // the cpanel user password
///If the form is submitted create the database
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$databasename = $_POST['dbname'];
$databaseuser = $_POST['user'];
$databasepass = $_POST['password'];}
$xmlapi = new xmlapi($db_host);
$xmlapi->password_auth("".$cpaneluser."","".$cpanelpass."");
$xmlapi->set_port(2082);
$xmlapi->set_debug(1);//output actions in the error log 1 for true and 0 false
$xmlapi->set_output('array');//set this for browser output
//create database
$createdb = $xmlapi->api1_query($cpaneluser, "Mysql", "adddb",
array($databasename));
//create user
$usr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduser", array($databaseuser,
$databasepass));
//add user
$addusr = $xmlapi->api1_query($cpaneluser, "Mysql", "adduserdb",
array("".$cpaneluser."_". $databasename."", "".$cpaneluser."_".$databaseuser."",
'all'));
?>
<div class = "container">
<form method = "post" action = "<?php echo $_SERVER['PHP_SELF'];?>">
<div class = "row">
<div class = "col-25">
<label for = "dbname">New DB Name: </label>
</div>
<div class = "col-75">
<input type = "text" name = "dbname" placeholder = "Enter New Database Name">
</div>
<div class = "col-25">
<label for = "user">New User Name: </label>
</div>
<div class = "col-75">
<input type = "text" name = "user" placeholder = "Enter New User Name">
</div>
<div class = "col-25">
<label for = "password">New Password: </label>
</div>
<div class = "col-75">
<input type = "text" name = "password" placeholder = "Enter New Password">
<input type = "submit" name = "submit" value = "GO" />
</div>
</div>
</div>
</form>
Вы можете скачать xmlapi здесь https://github.com/CpanelInc/xmlapi-php/blob/master/xmlapi.php
Вы выполняете только
GRANT, поскольку все 3 оператора используют$sql, и выполняется только последний.