Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: tworzenie użytkownika bazy danych
Forum PHP.pl > Forum > PHP
easyshare
Witam. Chcę utworzyć za pomocą skryptu bazę i użytkownika bazy danych, naskrobałem pewien skrypt ale nie tworzy on użytkownika, bazę danych tak. Proszę o pomoc w znalezieniu błędu.
  1. <?php
  2. if (isset($_POST['submit2'])) { // Obsługa formularza.
  3. // Sprawdzenie nazwy bazy.
  4.    if (eregi ("^[:alph:].' -]{2,15}$", stripslashes(trim($_POST['db_name'])))) {
  5.        $db = escape_data($_POST['db_name']);
  6.    } else {
  7.        $db = FALSE;
  8.        echo '<p>Proszę podać nazwę bazy!</p>';
  9.    }
  10. // Sprawdzenie uzytkownika.
  11.    if (eregi ("^[:alph:].' -]{2,15}$", stripslashes(trim($_POST['db_user'])))) {
  12.        $du = escape_data($_POST['db_user']);
  13.    } else {
  14.        $du = FALSE;
  15.        echo '<p>Proszę podać użytkownika bazy!</p>';
  16.    }
  17.  
  18. // Sprawdzenie hasła i jego potwierdzenia.
  19.    if (eregi ("^[:alnu:]]{4,20}$", stripslashes(trim($_POST['db_password1'])))) {
  20.        if ($_POST['db_password1'] == $_POST['db_password2']) {
  21.            $dp = escape_data($_POST['db_password1']);
  22.        } else {
  23.            $dp = FALSE;
  24.            echo '<p>Wprowadzone hasło nie jest zgodne z jego potwierdzeniem!</p>';
  25.        }
  26.    } else {
  27.        $dp = FALSE;
  28.        echo '<p>Proszę podać poprawne hasło bazy danych!</p>';
  29.    }
  30.  
  31. }
  32. if ($db && $du && $dp) { // Jeśli nie wystąpiły żadne problemy.
  33.  
  34.        // Twprzy bazę danych
  35.        $query = "CREATE DATABASE $db";        
  36.        $result = @mysql_query ($query);
  37.        
  38.        if (mysql_num_rows($result) == 0) { // Jeśli istnieje.
  39.        
  40.            // Dodawanie użytkownika.
  41.        $query = "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON $db.* TO '$du'@'localhost' IDENTIFIED BY $dp'";    
  42.        $result = @mysql_query ($query); // Wykonanie zapytania.
  43.            if ($result) { // Jeśli nie wystąpiły żadne problemy.
  44.            
  45.                // W razie potrzeby zostanie wysłana wiadomość poczty elektronicznej.
  46.                echo 'Użytkownik bazy danych został utworzony';                
  47.                
  48.            } else { // Jeśli wystąpiły problemy.
  49.                // W razie konieczności zapisuje w dzienniku błędów komunikat.
  50.                echo '<p>Użytkonik bazy danych nie został utwożony</p>';
  51.            }        
  52.            
  53.        } else { // Takie konto użytkownika już istnieje.
  54.            echo '<p>Baza nie została utworzona!</p>';
  55.        }
  56.        }
  57. ?>
conel
Witam.

Oczywiście posiadasz odpowiednie uprawnienia do stworzenia nowego użytkownika w MySQL (root), tak?
Wywal '@' z mysql_query i poniżej wstaw:
  1. <?php
  2. ?>


EDIT: Przyjrzałem się dokładnie i wydaje mi się, że źle próbujesz dodać użytkownika. Spróbuj tak:
  1. <?php
  2. mysql_query("CREATE USER '$username'@'localhost' IDENTIFIED BY '$password'");
  3. ?>


Gdzie $username to login, a hasło $password.
To co napisałeś to nakładanie uprawnień danemu użytkownikowi, a nie jego dodawanie do MySQL.
nevt
nie dodaje ci użytkownika ... bo... ty go nigdzie nie dodajesz ...
komenda GRANT złuży nadawaniu uprawnień wcześniej stworzonemu użytkownikowi,
a żeby go utworzyć, trzeba użyć polecenia CREATE USER... cytuję z manuala MySQL:
  1. CREATE USER [i]user[/i] [IDENTIFIED BY [PASSWORD] 'password']


EDIT: conel był szybszy smile.gif
easyshare
Zadziałało smile.gif user dodany do bazy , z tym że ma jedynie uprawnienia USAGE , jak nadać mu odpowiednie uprawnienia ?
conel
Tak jak to robiłeś wcześniej. Przykład:
  1. <?php
  2. mysql_query("GRANT SELECT , CREATE , DROP , INSERT , UPDATE , DELETE , INDEX , ALTER , CREATE TEMPORARY TABLES , CREATE VIEW , SHOW VIEW , CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `$database` . * TO '$username'@'localhost';");
  3. ?>


$database - nazwa bazy.
$username - nazwa użytkownika.

PS: Przykład który podałem nadaje uprawnienia specyficzne dla konkretnej bazy danych, a nie globalne. Także w phpMyAdmin ciągle będzie uprawnienia "USAGE". Dopiero jak przejdziesz do edycji uprawnień zauważysz, że zostały zmienione. ;-)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.