идентифицируется паролем в запросе гранта, влияющем на неактуальное соединение

В приведенном ниже коде есть 2 подключения mysql, проблема в том, что второе подключение выдает ошибку подключения, если пароль, входящий в форму, отличается от 123456,

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

Однако, если я использую закомментированный $grantQ запрос, второе соединение работает нормально. Это означает, что проблема связана с identified by '{$pass}' в $grantQ запрос.

identified by '{$pass}' Запрос должен влиять только на новую базу данных, которая была создана. Почему это влияет на существующую базу данных, к которой подключается второе соединение?

пожалуйста, помогите .. извините за длинное резюме!

      <?php
if(isset($_POST['submit'])){
// SUPER CONNECTION
$maindb_db = "little_maindb";
$maindb_server = "localhost";
$maindb_username = "[email protected]";
$maindb_password    =  "123456";//
$conn = new mysqli($maindb_server, $maindb_username, $maindb_password, $maindb_db);
if ($conn->connect_error) {
die($contact_cus_supp);
}
//NAME OF DB FROM POST - CUSTOMER VIEW
$new_dbname = mysqli_real_escape_string($conn, $_POST['db_name']);
$new_pass = mysqli_real_escape_string($conn, $_POST['pass']);
// CREATING DATABASE
$sql = "CREATE DATABASE IF NOT EXISTS $new_dbname ";
if (!mysqli_query($conn, $sql)) {
mysqli_close($conn);
exit();
}
$host = "localhost";
$user = $_SESSION['sess_email'];
$flush_pri = "FLUSH PRIVILEGES";
$pass = $new_pass;
// GRANT USER PRIVILEGES
echo $current_project;
$grantQ = "GRANT ALL PRIVILEGES ON " . $new_dbname . ".* TO '{$user}'@'{$host}' identified by '{$pass}'";
//$grantQ = "GRANT ALL PRIVILEGES ON " . $new_dbname . ".* TO '{$user}'@'{$host}'";
if(!mysqli_query($conn,$grantQ)){
mysqli_close($conn);
exit();
}
if(!mysqli_query($conn,$flush_pri)){
mysqli_close($conn);
exit();
}
// SUPER CONNECTION CLOSE
mysqli_close($conn);
// ALTOGETHER A DIFFERENT CONNECTION
$secdb_db = "little_userdb";
$secdb_server = "localhost";
$secdb_username = "[email protected]";
$secdb_password =  "123456";//
$conn = new mysqli($secdb_server, $secdb_username, $secdb_password, $secdb_db);
if ($conn->connect_error) {
die($contact_cus_supp);
}
echo "HELLO WORLD";
?>

// ФОРМА

 echo '<table>';
echo '<form action="create_project.php" method="POST" id = "myform" name = "myform" >';
echo '<tr><th></th></tr><tr><td><input type = "text" value="" name = "db_name" class = "req alphanums" placeholder = "DB Name" ><td></tr>';

echo '<tr><th></th></tr><tr><td><input type = "password" value="" name = "pass" class = "req" placeholder = "Password" ><td></tr>';

echo '<tr><th></th></tr><tr><td><div id = "submit"><input type="submit" id = "submit" name = "submit" value = "Create Project"></div><td></tr>';
echo '</form>';
echo '</table>';

0

Решение

Вы используете одно и то же имя пользователя для вновь созданной базы данных и для доступа little_userdb, таким образом, меняя свой пароль каждый раз.

В mysql пользователь идентифицируется по имени и маске имени хоста (mysql ищет первое совпадение). Таким образом, ваш код меняет пароль для существующего пользователя и предоставляет ему доступ к новой базе данных.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]