środa,
Mysqli: Lista użytkowników MySQL
W świecie programowania dostęp do danych i zarządzanie nimi są kluczowymi elementami większości aplikacji webowych i systemów informatycznych. PHP, będący jednym z najpopularniejszych języków skryptowych używanych do tworzenia stron internetowych, oferuje potężne narzędzia do interakcji z bazami danych, takimi jak MySQL. W tym kontekście zdolność do wydobywania informacji o użytkownikach bazy danych jest nie tylko przydatna, ale często niezbędna dla administratorów systemów, deweloperów, i osób zajmujących się bezpieczeństwem, aby zarządzać dostępem, monitorować zmiany i utrzymywać ogólną higienę systemu bazodanowego.
Serwer MySQL przechowuje informacje o użytkownikach w tabeli o nazwie 'user' w bazie danych 'mysql'. Aby uzyskać wykaz wszystkich zarejestrowanych, należy wykonać poniższe zapytanie:
SELECT user FROM mysql.user
Tabela user ma kilkadziesiąt kolumn i można z niej uzyskać znacznie więcej informacji o użytkownikach.
Kod skryptu
<?php
define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', 'hasło');
define('DBNAME', '');
$mysqli = new mysqli(DBHOST, DBUSER, DBPASS, DBNAME);
if($mysqli->connect_errno) {
die($mysqli->connect_error);
}
if($result = $mysqli->query("SELECT user FROM mysql.user")) {
echo '<ul>';
while($row = $result->fetch_object()) {
echo "<li>$row->user</li>";
}
echo '</ul>';
$result->close();
}
$mysqli->close();
?>
Omówienie skryptu
Definiowanie stałych połączenia z bazą danych:
DBHOST
to host bazy danych, w tym przypadkulocalhost
, co oznacza, że baza danych działa na tym samym serwerze, co skrypt.DBUSER
to użytkownik bazy danych, tutajroot
, co jest domyślnym superużytkownikiem w systemach MySQL.DBPASS
to hasło do bazy danych, w tym miejscu'hasło'
.DBNAME
to nazwa bazy danych, która tutaj jest pusta, ponieważ nazwa bazy zostanie określona w zapytaniu.
Nawiązanie połączenia z bazą danych:
- Użycie nowej instancji klasy
mysqli
, przekazując zdefiniowane wcześniej stałe jako parametry konstruktora.
- Użycie nowej instancji klasy
Sprawdzanie, czy wystąpił błąd połączenia:
- Jeśli wystąpi błąd podczas próby połączenia (
$mysqli->connect_errno
zwraca wartość różną od zera), skrypt kończy działanie i wyświetla komunikat o błędzie ($mysqli->connect_error
).
- Jeśli wystąpi błąd podczas próby połączenia (
Wykonanie zapytania SQL i przetwarzanie wyników:
- Skrypt wykonuje zapytanie SQL za pomocą metody
query
obiektumysqli
, które wybiera nazwy użytkowników z tabeliuser
w bazie danychmysql
. Baza danychmysql
jest systemową bazą danych MySQL, zawierającą informacje o użytkownikach, uprawnieniach itp. - Jeśli zapytanie się powiedzie (
$result
jest prawdziwe), skrypt przechodzi do przetwarzania wyników. - Wyniki są przeglądane w pętli
while
, gdzie każdy wiersz wyniku jest konwertowany na obiekt (fetch_object
), a następnie nazwa użytkownika ($row->user
) jest wyświetlana w formacie listy HTML.
- Skrypt wykonuje zapytanie SQL za pomocą metody
Zamknięcie połączenia z bazą danych:
- Po zakończeniu przetwarzania wyników, połączenie z bazą danych jest zamykane za pomocą metody
close
obiektumysqli
.
- Po zakończeniu przetwarzania wyników, połączenie z bazą danych jest zamykane za pomocą metody