Можно ли создать базу данных, пользователя, пароль с помощью php и формы (только cpanel, без WHM)

Я могу подключиться, но не могу создать базу данных. Подключено к базе данных

 <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. Я хочу сделать все это через форму, создать базу данных, пользователей, пароли, таблицы, загрузить данные и т. д.

Цель состоит в том, чтобы конечный пользователь без технических навыков мог создавать, просматривать и добавлять данные в маркетинговую базу данных через форму.

Вы выполняете только GRANT, поскольку все 3 оператора используют $sql, и выполняется только последний.

Nigel Ren 31.01.2019 17:47

использовать мультизапрос mysqli::multi_query

devpro 31.01.2019 17:50

что касается вопроса, я думаю, что нет, он будет проверять пользователя вашей базы данных при выполнении запроса, и это будет ваше разрешение, если вы разрешите эти запросы, вы можете это сделать. если у вашего пользователя есть права, то это возможно

devpro 31.01.2019 17:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
3
69
1

Ответы 1

Таким образом, получается, что нет с паролем 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

Другие вопросы по теме