Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pobieranie danych z serwera VPS
Forum PHP.pl > Forum > Przedszkole
peja1990
Witam,
czy mógłby mi ktoś podsunąć pomysł jak wykonać zarządzanie bazami danych mySQL z poziomu PHP ?
Chodzi mi o takie możliwości jak:
  1. - dodawanie baz danych
  2. - dodawanie użytkowników baz danych
  3. - edycja baz danych
  4. - edycja użytkowników baz danych
  5. - usuwanie baz danych
  6. - usuwanie użytkowników baz danych
  7. - wyświetlanie listy baz danych
  8. - wyświetlanie listy użytkowników baz danych

czyli ogólnie tak jak jest to np. w DirectAdmin'ie.

Będę wdzięczny za wszelką pomoc !

___
Z poważaniem,
Kamil Dunaj
Fifi209
Formularze + odpowiednie zapytania ?

Nie wiem w czym problem...
peja1990
Cytat(Fifi209 @ 12.03.2013, 23:33:33 ) *
Formularze + odpowiednie zapytania ?

Nie wiem w czym problem...


nie wiem czy się rozumiemy.
Nie chodzi mi o łączenie się z konkretną bazą danych i o zarządzanie nią tj. np. tutaj: http://phpminiadmin.sourceforge.net/
Chodzi mi o takie opcje jakie ma DirectAdmin.

Czy masz pomysł jak się za to zabrać ?
Fifi209
Ja odpowiedziałem na pierwszy post. Nie miałem przyjemności z DA. Może miałem? Ale dawno, nie pamiętam.

W każdym razie tak czy owak, chyba musisz zacząć od manuala MySQL, ew. kursu i konsoli. A potem w PHP sobie poradzisz - i tego jestem pewien.
peja1990
Myślę, że warto byłoby użyć gotowej klasy PHP do połączenia się z DirectAdmin'em z poziomu PHP tej, która znajduje się pod tym adresem: http://forum.directadmin.com/showthread.php?t=258
Co Wy o tym myślicie i co sugerujecie w dalszym ciągu ?
Fifi209
A jaki masz problem w otworzeniu kursu/manualu przeczytaniu jak tworzy się bazy, użytkowników, przydziela uprawnienia etc. i wypróbować w konsoli ?
peja1990
Cytat(Fifi209 @ 13.03.2013, 01:13:52 ) *
A jaki masz problem w otworzeniu kursu/manualu przeczytaniu jak tworzy się bazy, użytkowników, przydziela uprawnienia etc. i wypróbować w konsoli ?


Masz na myśli manual SSH ?
Fifi209
Co ma SSH do MySQL o którym ciągle mowa?
Zastanawiasz się czasami co piszesz? Czytasz moje posty czy nie?
peja1990
Tak, czytam ale my chyba wciąż się nie rozumiemy.
Łącząc się tylko z mySQL nie uzyskamy chyba listy baz danych z serwera. Nie chodzi mi tutaj o tabele w jakiejś konkretnej bazie danych (o czym pisałem już wcześniej)... :/
No chyba, że podasz jakiś przykład ?
Fifi209
W czym jest pisany phpMyAdmin?

No, to sobie sam odpowiedz na pytanie, chyba jakoś musi się dać ?
peja1990
Ok, już to ogarnąłem. smile.gif
Dzięki za pomoc.

EDIT:
Potrzebuję kogoś kto posiada cPanel.
Czy mógłby mi ktoś sprawdzić (posiadając cPanel na serwerze) czy może tworzyć bazy danych mySQL z poziomu PHP
  1. $link = mysql_connect ('localhost','user','password');
  2. if(!$link) die('Nie można się połączyć: '.mysql_error());
  3. $sql = "CREATE DATABASE dbname";
  4. if(mysql_query($sql, $link)) echo "Baza dbname została pomyślnie utworzona<br />";
  5. else echo 'Błąd podczas tworzenia bazy: '.mysql_error()."<br />";

ponieważ DirectAdmin blokuje te opcje i nie wiem czy jest sens kupować licencję cPanel'u.
Fifi209
To nie wina DirectAdmina czy cPanel'u
Hosting po prostu blokuje tworzenie baz w ten sposób, może jest przydział np. max 5 na użyszkodznika?
Wazniak96
Pewnie, że wszystko da się zrobić z poziomu php. Można wywoływać wiersz poleceń ssh przez ssh2_* lub po prostu połączyć się z rootem. W każdym razie w obu przypadkach będziemy pracować na SQL.

Co to twojego problemu z tworzeniem userów. Problem może wynikać z tego iż dany user nie ma praw do tworzenia bazy. Zaloguj się przez niego do phpMyAdmin i sprawdź czy on pozwala na utworzenie bazy. Z poziomu roota o ile nic nie poprzestawiałeś masz wszystkie prawa.

A teraz przejdźmy do praktyki.
1. Pokazanie baz danych z poziomu php.

  1. <?php
  2.  
  3. mysql_connect('localhost', 'root', 'xxx') OR die('Brak polaczenia.');
  4.  
  5. $query = mysql_query("SHOW DATABASES");
  6. while($tab = mysql_fetch_row($query))
  7. echo $tab[0];


2. Utworzenie bazy danych:
  1. <?php
  2.  
  3. mysql_connect('localhost', 'root', 'xxx') OR die('Brak polaczenia.');
  4.  
  5. $query = mysql_query("CREATE DATABASE nowa_baza");


3. Stworzenie nowego użytkownika i nadanie mu praw do konkretnej bazy.
  1. <?php
  2. mysql_connect('localhost', 'root', 'xxx') OR die('Brak polaczenia.');
  3.  
  4. $query = mysql_query("GRANT ALL ON nowa_baza.* TO UŻYTKOWNIK_BAZY@localhost IDENTIFIED BY 'HASŁO'");


4. Kasowanie bazy danych
  1. <?php
  2. mysql_connect('localhost', 'root', 'xxx') OR die('Brak polaczenia.');
  3.  
  4. $query = mysql_query("DROP DATABASE nowa_baza");


Co do DA, uważam że jest świetnym narzędziem. Jeżeli masz z nim jakiekolwiek problemy to tylko kwestia twojej niewiedzy na temat jego obsługi. Forum powinno rozwiązać wszelkie wątpliwości.
Panel, czy to cPanel czy DA nie ma nic do gadania podczas tworzenia użytkowników przez PHP.

Mam nadzieję, że pomogłem. Pozdrowienia wink.gif
peja1990
Cytat(Fifi209 @ 13.03.2013, 12:34:39 ) *
To nie wina DirectAdmina czy cPanel'u
Hosting po prostu blokuje tworzenie baz w ten sposób, może jest przydział np. max 5 na użyszkodznika?


Pytałem i powiedzieli mi, że to DA blokuje a nie Oni.
Więc kto mnie tutaj próbuje okłamać ?

Cytat(Fifi209 @ 13.03.2013, 12:34:39 ) *
...może jest przydział np. max 5 na użyszkodznika?

Na pewno nie mam takich ograniczeń.

Pogooglałem trochę i znalazłem taką sugestię by zalogować się jako admin przez SSH i użyć takich komend:
mysql -u user -p -h localhost
CREATE DATABASE mydb;
tak też zrobiłem i wynikiem jest: ERROR 1044 (42000): Access denied for user 'user'@'localhost' to database 'mydb'.

Co o tym wszystkim myślicie i co sugerujecie ?
Wazniak96
Odnoszę wrażenie, że nie czytasz tego co się do ciebie pisze. W MySQL jest tak że dani userzy mają określone uprawnienia. Logujesz się jako user. Ten prawdopodobnie nie ma uprawnień Create przez co NIE MOŻE zakładać baz danych. Zaloguj się przez użytkownika bazy danych o nazwie root. Już bardziej łopatologicznie się nie da chyba.

Kody, które podałem wyżej testowałem osobiście na swoim VPS i wszystko gra.
peja1990
Cytat(Wazniak96 @ 13.03.2013, 17:37:10 ) *
Odnoszę wrażenie, że nie czytasz tego co się do ciebie pisze. W MySQL jest tak że dani userzy mają określone uprawnienia. Logujesz się jako user. Ten prawdopodobnie nie ma uprawnień Create przez co NIE MOŻE zakładać baz danych. Zaloguj się przez użytkownika bazy danych o nazwie root. Już bardziej łopatologicznie się nie da chyba.

Kody, które podałem wyżej testowałem osobiście na swoim VPS i wszystko gra.


Jeżeli chodzi o:
  1. mysql_connect ('localhost','root','root_password');

to wynikiem jest:
  1. Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: YES) in /home/user/domains/.../add_db.php on line 3
  2. Nie można się połšczyć: Access denied for user 'root'@'localhost' (using password: YES)

Hasło na 100% podałem prawidłowe.

Jak więc można zmienić uprawnienia użytkownika ?
Wazniak96
W takim razie spróbuj przez konsolę połączyć się z root'em i tam podawać reprymendy.

//połączenie z mysql root

mysql -u root -p[hasło bez nawiasów]

//dodanie bazy

mysql> CREATE DATABASE nowa_baza;

//tworzenie nowego uzytkownika bazy i nadanie mu praw do dostępu do bazy.

mysql> GRANT ALL ON nowa_baza.* TO UŻYTKOWNIK_BAZY@localhost IDENTIFIED BY 'HASŁO';

//usuwanie bazy

mysql> DROP DATABASE nowa_baza;

//wyswietlenie wszystkich dostępnych baz

mysql> show databases;



podczas wpisywania nie dodajemy tego mysql>
peja1990
Cytat(Wazniak96 @ 13.03.2013, 18:36:46 ) *
W takim razie spróbuj przez konsolę połączyć się z root'em i tam podawać reprymendy.

//połączenie z mysql root

mysql -u root -p[hasło bez nawiasów]

//dodanie bazy

mysql> CREATE DATABASE nowa_baza;

//tworzenie nowego uzytkownika bazy i nadanie mu praw do dostępu do bazy.

mysql> GRANT ALL ON nowa_baza.* TO UŻYTKOWNIK_BAZY@localhost IDENTIFIED BY 'HASŁO';

//usuwanie bazy

mysql> DROP DATABASE nowa_baza;

//wyswietlenie wszystkich dostępnych baz

mysql> show databases;



podczas wpisywania nie dodajemy tego mysql>


Jestem zalogowany przez SSH jako root
  1. s1:~# mysql -u root -p
  2. Enter password:
  3. ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Wazniak96
Z tego co widzę(aczkolwiek mogę się mylić) podajesz złe hasło lub user root nie istnieje z czym się jeszcze nie spotkałem.
peja1990
Cytat(Wazniak96 @ 13.03.2013, 19:12:21 ) *
Z tego co widzę(aczkolwiek mogę się mylić) podajesz złe hasło lub user root nie istnieje z czym się jeszcze nie spotkałem.

Hasło jest poprawne i root istnieje jednak podczas konwersacji z administratorem mojego serwera ustaliliśmy, że muszę utworzyć administratora mySQL i wtedy uda się to zrobić.
Tak też zrobiliśmy i wszystko gra.

Może mi ktoś powiedzieć co robię źle ?
  1. <?php
  2. $dbs = array();
  3. $link = mysql_connect ('localhost','da_admin','da_password') or die('Nie można się połączyć');
  4. $db_list = mysql_list_dbs($link);
  5. while ($row = mysql_fetch_object($db_list)) {
  6. $dbs[] = "<option value=\"{$row->Database}\">{$row->Database}</option>";
  7. }
  8. $dbs_options = implode("", $dbs);
  9. if($_POST['submited'] == "1") {
  10. if($_POST['dbname'] && !empty($_POST['dbname'])) {
  11. if($_POST['user'] && !empty($_POST['user'])) {
  12. if($_POST['password'] && !empty($_POST['password'])) {
  13. mysql_connect ('localhost','da_admin','da_password') or die('Nie można się połączyć: '.mysql_error());
  14. $sql = "GRANT ALL PRIVILEGES ON {$_POST['dbname']}.* {$_POST['user']}@localhost IDENTIFIED BY {$_POST['password']}";
  15. if(mysql_query($sql)) echo "Użytkownik {$_POST['user']} został pomyślnie utworzony<br />";
  16. else echo 'Error adding user: '.mysql_error()."<br />";
  17. } else echo "Podaj hasło dostępu!";
  18. } else echo "Podaj nazwę użytkownika !";
  19. } else echo "Wybierz bazę !";
  20. }
  21. ?>
  22. <form method="POST">
  23. <label>Nazwa użytkownika:</label>
  24. <input type="text" name="user" value="" />
  25. <label>Hasło dostępu:</label>
  26. <input type="password" name="password" value="" />
  27. <hr>
  28. <label>Wybierz bazę danych:</label>
  29. <select name="dbname">
  30. <option value="">- wybierz -</option>
  31. <?php echo $dbs_options; ?>
  32. </select>
  33. <hr>
  34. <input type="submit" value="Utwórz" />
  35. <input type="hidden" name="submited" value="1" />
  36. </form>

ponieważ wywala mi błąd podczas próby utworzenia użytkownika bazy danych:
  1. Error adding user: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'test_user@localhost IDENTIFIED BY ******' at line 1


POWYŻSZY PROBLEM ROZWIĄZAŁEM exclamation.gif!
Jednak pojawia się kolejny, mianowicie jak można wylistować użytkowników bazy mySQL ?
Powyższy również rozwiązany ! smile.gif
Fifi209
Ban na google czy myślenie?
http://stackoverflow.com/questions/1135245...l-user-accounts
peja1990
Cytat(Fifi209 @ 13.03.2013, 23:27:34 ) *

Poradziłem sobie już z tym jak i z całym skryptem ale dzięki.


Dziękuję bardzo wszystkim tym, którzy udzielali się w tym temacie, za wszelką pomoc jak i za czas poświęcony mej osobie !
Serdecznie pozdrawiam,
temat można zamknąć.
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.