SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
IDZ DO
         PRZYK£ADOWY ROZDZIA£

                           SPIS TRE CI   Bazy danych i MySQL.
                                         Od podstaw
           KATALOG KSI¥¯EK
                                         Autorzy: Richard Stones, Neil Matthew
                      KATALOG ONLINE     T³umaczenie: Pawe³ Gonera
                                         ISBN: 83-7197-728-X
       ZAMÓW DRUKOWANY KATALOG           Tytu³ orygina³u: Beginning Databases with MySQL
                                         Format: B5, stron: 560
                                         Przyk³ady na ftp: 45 kB
              TWÓJ KOSZYK
                                         MySQL zajmuje szczególn¹ pozycjê w ród systemów obs³ugi relacyjnych baz danych.
                    DODAJ DO KOSZYKA     Dziêki du¿ej wydajno ci, prostocie obs³ugi i dostêpno ci interfejsów programistycznych
                                         dla wielu jêzyków programowania, osi¹gn¹³ ogromn¹ popularno æ w zastosowaniach
                                         internetowych. Je li dysponujesz ograniczonym bud¿etem, powiniene rozwa¿yæ u¿ycie
         CENNIK I INFORMACJE             darmowego systemu, który pod wieloma wzglêdami mo¿e konkurowaæ z drogimi
                                         systemami komercyjnymi. MySQL rozwija siê zreszt¹ bardzo dynamicznie, a jego
                   ZAMÓW INFORMACJE      kolejne wersje dysponuj¹ coraz to bardziej wyrafinowanymi funkcjami.
                     O NOWO CIACH
                                         Do kogo adresowana jest ta ksi¹¿ka?
                       ZAMÓW CENNIK      „Bazy danych i MySQL. Od podstaw” to pozycja zarówno dla pocz¹tkuj¹cych, jak i dla
                                         zaawansowanych u¿ytkowników MySQL-a. Pocz¹tkuj¹cy dowiedz¹ siê jak instalowaæ
                                         i konfigurowaæ system MySQL, naucz¹ siê projektowania wydajnych baz danych
                 CZYTELNIA               i zg³êbi¹ tajemnice jêzyka SQL. Do wiadczeni programi ci bêd¹ mogli poznaæ interfejs
                                         pozwalaj¹cy na korzystanie z MySQL-a z poziomu ich ulubionego jêzyka programowania
          FRAGMENTY KSI¥¯EK ONLINE       (ksi¹¿ka omawia C, C++, Perla, PHP i Javê). Zainteresowaæ ich powinny tak¿e rozdzia³y
                                         po wiêcone wzorcom projektowym stosowanym przy tworzeniu aplikacji bazodanowych
                                         i omówienie mechanizmu transakcji, zaimplementowanego w najnowszych wersjach
                                         MySQL-a.
                                         Co zawiera ta ksi¹¿ka?
                                            • Przystêpne omówienie zagadnieñ zwi¹zanych z projektowaniem baz danych
                                            • Opis kompilacji, instalacji, konfiguracji i obs³ugi systemu MySQL
                                            • Kompletny kurs jêzyka SQL w wersji implementowanej w MySQL
                                            • Prezentacjê narzêdzi u³atwiaj¹cych pracê z MySQL
                                            • Omówienie zagadnieñ zwi¹zanych z administracj¹ systemem bazodanowym
                                              (replikacja, tworzenie kopii zapasowych, odtwarzanie danych)
Wydawnictwo Helion                          • Opis interfejsów umo¿liwiaj¹cych pisanie aplikacji bazodanowych w jêzykach
ul. Chopina 6                                 C, C++, PHP, Perl i Java
44-100 Gliwice                              • Dodatki, zawieraj¹ce m.in. skorowidz poleceñ SQL i informacje na temat obs³ugi
tel. (32)230-98-63                            du¿ych obiektów (pola BLOB)
e-mail: helion@helion.pl
Spis treści
    O Autorach ............................................................................................................................ 13
    Wstęp.................................................................................................................................... 15

Rozdział 1. Wprowadzenie do MySQL...............................................................................................19
    Zastosowanie danych przy programowaniu............................................................................ 19
    Bazy danych korzystające z płaskich plików........................................................................... 21
    Czym jest baza danych .......................................................................................................... 23
    Typy baz danych .................................................................................................................... 23
    Języki zapytań........................................................................................................................ 27
    System zarządzania bazą danych .......................................................................................... 30
    Czym jest MySQL................................................................................................................... 31
        Krótka historia MySQL ..................................................................................................... 31
        Architektura MySQL ......................................................................................................... 32
    Licencja open source ............................................................................................................ 33
    Zasoby .................................................................................................................................. 34

Rozdział 2. Podstawy relacyjnych baz danych ...............................................................................35
    Arkusze kalkulacyjne ............................................................................................................. 35
        Terminologia .................................................................................................................... 36
        Ograniczenia arkuszy ....................................................................................................... 37
    Różnice pomiędzy arkuszem i bazą danych ........................................................................... 38
        Wybór kolumn .................................................................................................................. 39
        Wybór typów danych dla kolumn ...................................................................................... 39
        Jednoznaczne identyfikowanie wierszy............................................................................. 40
        Kolejność wierszy ............................................................................................................ 41
    Umieszczanie danych w bazie danych ................................................................................... 41
        Dostęp przez sieć ............................................................................................................ 41
        Danych cięcie i gięcie ...................................................................................................... 43
    Podstawy projektowania baz danych z wykorzystaniem wielu tabel ....................................... 45
    Relacje między tabelami........................................................................................................ 46
    Projektowanie tabel ............................................................................................................... 49
        Kilka podstawowych zasad .............................................................................................. 49
    Baza danych „Klienci i zamówienia”...................................................................................... 51
        Rozszerzamy bazę danych ............................................................................................... 52
        Uzupełnianie projektu bazy danych .................................................................................. 54
4        Bazy danych i MySQL. Od podstaw

         Podstawowe typy danych....................................................................................................... 57
             NULL................................................................................................................................ 57
         Przykładowa baza danych ...................................................................................................... 59
         Podsumowanie ...................................................................................................................... 60

    Rozdział 3. Instalowanie i uruchamianie MySQL ..............................................................................61
         Instalacja czy uaktualnienie?................................................................................................. 61
         Instalowanie MySQL z pakietu binarnego dla Linuksa lub Uniksa.......................................... 63
         Instalowanie MySQL z kodu źródłowego ................................................................................ 67
         Instalowanie MySQL w systemie Windows ............................................................................ 82
             Instalowanie MySQL z pakietu binarnego dla Windows.................................................... 82
         Podsumowanie ...................................................................................................................... 88

    Rozdział 4. Dostęp do danych.........................................................................................................89
         Wykorzystanie narzędzia mysql.............................................................................................. 90
         Proste wyrażenia SELECT ...................................................................................................... 93
            Przesłanianie nazw kolumn.............................................................................................. 96
            Ustalanie kolejności wierszy ............................................................................................ 96
            Eliminowanie duplikatów.................................................................................................. 98
         Wykonywanie obliczeń ......................................................................................................... 101
         Wybór wierszy...................................................................................................................... 102
            Bardziej skomplikowane wyrażenia ................................................................................ 105
            Dopasowanie wzorców................................................................................................... 107
            Ograniczanie wyniku ...................................................................................................... 108
            Porównanie różnych typów danych ................................................................................. 109
            Operacje na danych dotyczących dat i czasu ................................................................. 112
            Funkcje daty i czasu ...................................................................................................... 113
         Wielokrotne złączenia tabel ................................................................................................. 117
            Łączenie dwóch tabel .................................................................................................... 117
            Synonimy nazw tabel ..................................................................................................... 122
            Łączenie trzech tabel ..................................................................................................... 123
         Podsumowanie .................................................................................................................... 127

    Rozdział 5. Narzędzia graficzne dla MySQL ...................................................................................129
         mysql................................................................................................................................... 130
            Uruchamianie mysql ...................................................................................................... 130
            Polecenia w mysql ......................................................................................................... 130
            Historia poleceń ............................................................................................................ 131
            Skrypty w mysql ............................................................................................................. 131
            Poznawanie bazy danych................................................................................................ 133
            Parametry wiersza poleceń ............................................................................................ 133
            Polecenia wewnętrzne ................................................................................................... 135
         KSql i KMySQL .................................................................................................................... 135
            Przeglądarka tabel ......................................................................................................... 137
            Eksport HTML ................................................................................................................ 138
            Edytor formularzy ........................................................................................................... 140
         MySQLGUI ........................................................................................................................... 141
         ODBC................................................................................................................................... 143
         Microsoft Access................................................................................................................. 148
            Tabele połączone........................................................................................................... 149
            Wprowadzanie danych ................................................................................................... 151
            Raporty .......................................................................................................................... 153
Spis treści              5

     Microsoft Excel.................................................................................................................... 153
     Zasoby ................................................................................................................................ 157
     Podsumowanie .................................................................................................................... 158

Rozdział 6. Modyfikacja danych....................................................................................................159
     Dodawanie danych do bazy danych ..................................................................................... 159
        Instrukcja INSERT .......................................................................................................... 160
        Wstawianie danych do kolumn typu AUTO_INCREMENT................................................. 164
        Wstawianie wartości NULL............................................................................................. 167
        Polecenie LOAD DATA .................................................................................................... 169
        Ładowanie danych za pomocą mysqlimport ................................................................... 172
        Bezpośrednie ładowanie danych z innych aplikacji ........................................................ 174
     Aktualizacja bazy danych za pomocą instrukcji UPDATE ...................................................... 176
     Usuwanie wierszy za pomocą instrukcji DELETE .................................................................. 179
     Podsumowanie .................................................................................................................... 181

Rozdział 7. Zaawansowana selekcja danych .................................................................................183
     Funkcje agregujące.............................................................................................................. 184
        COUNT() ......................................................................................................................... 184
        Funkcja MIN()................................................................................................................. 192
        Funkcja MAX() ................................................................................................................ 193
        Funkcja SUM()................................................................................................................ 194
        Funkcja AVG()................................................................................................................. 194
     Złączenia UNION ................................................................................................................. 195
     Złączenia własne ................................................................................................................. 197
     Złączenia zewnętrzne .......................................................................................................... 199
     Podzapytania ....................................................................................................................... 202
        Typy podzapytań ............................................................................................................ 203
        Podzapytania skojarzone ............................................................................................... 205
     Zastępowanie podzapytań ................................................................................................... 207
     Podsumowanie .................................................................................................................... 210

Rozdział 8. Definiowanie danych i manipulacja nimi .......................................................................213
     Typy danych......................................................................................................................... 214
        Typ logiczny.................................................................................................................... 214
        Typy znakowe................................................................................................................. 215
        Typy numeryczne............................................................................................................ 219
        Data oraz czas............................................................................................................... 221
     Operatory ............................................................................................................................ 222
        Kolejność i łączenie operatorów .................................................................................... 223
        Konwersje typów............................................................................................................ 229
        Zmienne specjalne ........................................................................................................ 230
     Funkcje wbudowane ............................................................................................................ 231
     Operacje na tabelach .......................................................................................................... 235
        Tworzenie tabel.............................................................................................................. 235
        Typy tabel MySQL .......................................................................................................... 241
        Modyfikacja tabel........................................................................................................... 242
        Usuwanie tabel .............................................................................................................. 246
        Tabele tymczasowe........................................................................................................ 246
     Klucze obce......................................................................................................................... 247
        Deklarowanie kluczy obcych........................................................................................... 249
        Opcje kluczy obcych ....................................................................................................... 253
     Podsumowanie .................................................................................................................... 254
6       Bazy danych i MySQL. Od podstaw


    Rozdział 9. Transakcje i blokowanie ............................................................................................255
        Czym są transakcje? ........................................................................................................... 256
           Zasady ACID .................................................................................................................. 259
        Obsługa transakcji dla jednego użytkownika........................................................................ 260
        Obsługa transakcji dla wielu użytkowników ......................................................................... 261
           Poziomy izolacji ANSI ..................................................................................................... 261
           Definicje ANSI/ISO......................................................................................................... 266
           Ograniczenia transakcji.................................................................................................. 266
        MySQL i transakcje ............................................................................................................. 267
           MySQL i tabele MyISAM................................................................................................. 267
           MySQL i tabele InnoDB .................................................................................................. 271
        Zakleszczenia...................................................................................................................... 276
        Podsumowanie .................................................................................................................... 278

    Rozdział 10. Administrowanie MySQL ...........................................................................................279
        Uruchamianie i zatrzymywanie serwera bazy danych ........................................................... 279
            Windows ........................................................................................................................ 280
            Linux .............................................................................................................................. 282
            Wersje serwera.............................................................................................................. 284
            Dodawanie i usuwanie baz danych ................................................................................ 285
        Konfigurowanie użytkowników ............................................................................................. 285
            Konto administratora bazy danych — root..................................................................... 285
        Zarządzanie uprawnieniami użytkowników ........................................................................... 290
            Tworzenie kont użytkowników ........................................................................................ 290
            Odbieranie uprawnień .................................................................................................... 295
            Plik śladu serwera ......................................................................................................... 297
        Pliki konfiguracyjne.............................................................................................................. 297
            Ustawienia serwera ....................................................................................................... 297
            Pierwotne pliki konfiguracyjne........................................................................................ 298
            Pliki InnoDB ................................................................................................................... 301
            Przeglądanie baz danych................................................................................................ 303
        Kopie zapasowe .................................................................................................................. 303
        Podsumowanie .................................................................................................................... 307

    Rozdział 11. Projektowanie bazy danych.......................................................................................309
        Rozpoznanie problemu ........................................................................................................ 309
        Cechy dobrego projektu bazy danych................................................................................... 310
           Przechowywanie wymaganych danych ............................................................................ 311
           Tworzenie wymaganych relacji........................................................................................ 311
           Rozwiązywanie problemów ............................................................................................. 311
           Wymuszenie integralności danych ................................................................................. 312
           Efektywny dostęp do danych.......................................................................................... 312
           Rozszerzalność .............................................................................................................. 313
        Etapy projektowania ............................................................................................................ 313
           Zbieranie informacji ....................................................................................................... 313
           Projekt logiczny .............................................................................................................. 314
           Określanie relacji i liczebności....................................................................................... 319
        Konwersja do modelu fizycznego......................................................................................... 324
           Tworzenie kluczy głównych............................................................................................. 324
           Tworzenie kluczy obcych ................................................................................................ 326
Spis treści              7

       Ustalanie typów danych ................................................................................................. 328
       Dokończenie definicji tabel ............................................................................................ 330
       Sprawdzenie projektu .................................................................................................... 331
    Postacie normalne .............................................................................................................. 332
       Pierwsza postać normalna ............................................................................................. 332
       Druga postać normalna ................................................................................................. 333
       Trzecia postać normalna................................................................................................ 333
    Często stosowane wzorce projektowe ................................................................................. 334
       Relacje wiele-do-wielu .................................................................................................... 334
       Hierarchia ...................................................................................................................... 335
       Relacje rekurencyjne...................................................................................................... 335
    Zasoby ................................................................................................................................ 337
    Podsumowanie .................................................................................................................... 338

Rozdział 12. Dostęp do MySQL z programów napisanych w językach C i C++ ................................339
    Użycie biblioteki libmysqlclient ............................................................................................ 340
    Połączenie z bazą danych.................................................................................................... 341
    Kontrola błędów .................................................................................................................. 346
       Wykorzystanie pliku Makefile ......................................................................................... 346
       Dalsze informacje .......................................................................................................... 347
    Zarządzanie połączeniami do serwera ................................................................................. 348
    Wykonywanie zapytań SQL za pomocą libmysqlclient .......................................................... 350
    Transakcje........................................................................................................................... 355
       Pobieranie danych zwracanych przez zapytania.............................................................. 356
    Przeglądanie zbioru wynikowego.......................................................................................... 361
    Operacje bez użycia kursorów ............................................................................................. 362
       Podsumowanie funkcji API ............................................................................................. 363
    Dostęp do MySQL z programów napisanych w języku C++ .................................................. 365
    Mysql++ .............................................................................................................................. 366
       Instalacja Mysql++ ........................................................................................................ 366
       Kompilowanie programów z użyciem Mysql++ ............................................................... 367
       Obiekty klasy Connection............................................................................................... 368
       Wyjątki ........................................................................................................................... 371
       Zapytania....................................................................................................................... 371
       Zbiory wynikowe............................................................................................................. 373
       Obiekty Query ................................................................................................................ 377
       Szablony zapytań ........................................................................................................... 378
    Zasoby ................................................................................................................................ 379
    Podsumowanie .................................................................................................................... 379

Rozdział 13. Dostęp do MySQL z programów napisanych w języku PHP..........................................381
    Dołączenie do PHP modułu wsparcia dla MySQL................................................................. 382
    Używanie PHP API z MySQL ................................................................................................. 383
       Połączenia z bazą danych .............................................................................................. 386
       Operacje na zbiorze wynikowym ..................................................................................... 390
       Obsługa błędów ............................................................................................................. 404
       Używanie interfejsu Database Abstraction w PEAR ........................................................ 412
    Podsumowanie .................................................................................................................... 419
8       Bazy danych i MySQL. Od podstaw


    Rozdział 14. Dostęp do MySQL z programów napisanych w języku Perl .........................................421
        Perl DBI ............................................................................................................................... 422
            Instalowanie DBI oraz MySQL DBD ................................................................................ 423
            Korzystanie z DBI........................................................................................................... 425
            Wykorzystanie DBIx::Easy .............................................................................................. 453
        Podsumowanie .................................................................................................................... 455

    Rozdział 15. Dostęp do MySQL z programów napisanych w języku Java .......................................457
        Wstęp do JDBC.................................................................................................................... 458
        Sterowniki JDBC .................................................................................................................. 458
            Typ 1 — Mostek JDBC-ODBC ......................................................................................... 459
            Typ 2 — Połączenie własnego API z kodem Java ........................................................... 459
            Typ 3 — Realizacja protokołu sieciowego przy pomocy kodu Java................................. 459
            Typ 4 — Kod języka Java realizujący protokół systemu bazy danych.............................. 460
        Kompilowanie sterownika JDBC dla MySQL......................................................................... 460
        Interfejsy DriverManager oraz Driver.................................................................................... 461
            java.sql.DriverManager .................................................................................................. 461
            java.sql.Driver ................................................................................................................ 464
        Połączenia........................................................................................................................... 466
            Tworzenie wyrażeń ......................................................................................................... 466
            Obsługa transakcji ......................................................................................................... 467
            Metadane ...................................................................................................................... 468
        Zbiory wynikowe JDBC ......................................................................................................... 470
            Typy zbiorów wynikowych oraz współbieżność................................................................ 470
            Przeglądanie zbiorów wynikowych .................................................................................. 471
            Dostęp do danych wynikowych....................................................................................... 473
            Zbiory wynikowe podlegające aktualizacji....................................................................... 474
            Inne ważne metody ........................................................................................................ 476
        Instrukcje JDBC ................................................................................................................... 476
            Instrukcje....................................................................................................................... 477
            Instrukcje przygotowywane............................................................................................. 481
        Wyjątki i ostrzeżenia SQL .................................................................................................... 485
        Aplikacja graficzna korzystająca z JDBC............................................................................... 485
            Diagram klas.................................................................................................................. 486
            Interakcja z systemem................................................................................................... 488
        Podsumowanie .................................................................................................................... 499

    Rozdział 16. Dodatkowe informacje i zasoby .................................................................................501
        Nierelacyjne źródła danych .................................................................................................. 501
        Terminologia baz danych ..................................................................................................... 502
        Zasoby ................................................................................................................................ 504
           Zasoby sieci................................................................................................................... 505
           Narzędzia uniwersalne ................................................................................................... 505
           Książki ........................................................................................................................... 506
        Podsumowanie .................................................................................................................... 507

    Dodatek A Ograniczenia bazy danych MySQL ...............................................................................509
             Rozmiar bazy danych — bez ograniczeń ........................................................................ 510
             Rozmiar tabeli — 64 TB – 16 PB ................................................................................... 510
             Ilość wierszy w tabeli — 2^64....................................................................................... 511
             Indeksy tabeli — 32 ...................................................................................................... 511
Spis treści              9

          Rozmiar kolumny — 16 MB – 4 GB................................................................................ 511
          Ilość kolumn w tabeli — 1000....................................................................................... 511
          Rozmiar wiersza — 4 GB ............................................................................................... 511
          Ograniczenia innego rodzaju .......................................................................................... 512

Dodatek B Typy danych w MySQL..................................................................................................513
     Typy numeryczne — dokładne ............................................................................................. 513
     Typy numeryczne — przybliżone .......................................................................................... 514
     Typy reprezentujące daty i czas ........................................................................................... 515
     Typy znakowe ...................................................................................................................... 515
     Inne typy.............................................................................................................................. 516

Dodatek C Składnia MySQL............................................................................................................517
     Polecenia SQL w MySQL...................................................................................................... 517
     Składnia SQL w MySQL ....................................................................................................... 517

Dodatek D Informator mysql........................................................................................................529
     Opcje programu mysql wpisywane w wierszu poleceń ......................................................... 529
     Polecenia wewnętrzne ......................................................................................................... 531

Dodatek E Schemat bazy danych i definicje tabel ..........................................................................533

Dodatek F Obsługa du ych obiektów ............................................................................................537
     Obiekty BLOB ...................................................................................................................... 537
        Dane binarne w polach BLOB......................................................................................... 538
        Definicja BLOB w MyODBC............................................................................................. 538
        Użycie GROUP BY na polach BLOB ................................................................................ 538
     Programowanie pól BLOB .................................................................................................... 539

Skorowidz...................................................................................................................................541
10
             Administrowanie MySQL
   W tym rozdziale zajmiemy się zarządzaniem serwerem MySQL. Sposób instalacji serwera
   został ju opisany w rozdziale 3. — „Instalowanie i uruchamianie MySQL”, ale konfigurację
   serwera opisaliśmy tam tylko pobie nie.

   W tym rozdziale poruszymy następujące tematy:
     n   Uruchamianie i zatrzymywanie serwera bazy danych
     n   Konfigurowanie u ytkowników
     n   Zarządzanie uprawnieniami u ytkowników
     n   Pliki konfiguracyjne
     n   Kopie zapasowe

   Administrowanie bazą danych jest zło onym przedsięwzięciem; w tym rozdziale omówimy
   jedynie podstawy administracji serwerem MySQL.



Uruchamianie i zatrzymywanie
serwera bazy danych
   Pomiędzy programem korzystającym z bazy danych a danymi zawartymi w tej bazie znajduje
   się kilka procesów zarządzających dostępem do danych. Zanim program kliencki będzie
   mógł uzyskać dostęp do danych, uruchomiony musi zostać proces serwera, co opisaliśmy
   w rozdziale 3. Wyłączając komputer musisz zapewnić, e proces ten zostanie prawidłowo
   zatrzymany. W takim przypadku proces serwera mo e odpowiednio zamknąć bazę danych,
   zapisując wszystkie dane znajdujące się w buforze. Je eli nie pozwolisz prawidłowo zamknąć
   bazy danych, ryzykujesz uszkodzeniem zapisanych w niej danych.

      Zapewnienie prawidłowego zamknięcia bazy danych jest jedną z najważniejszych czyn-
      ności, o których należy pamiętać w pracy z serwerem MySQL.
280   Bazy danych i MySQL. Od podstaw

      Najszybszą metodą sprawdzenia, czy lokalny serwer działa, jest uruchomienie programu
      mysqladmin z opcją ping:
        =TKEM"IY TKEM?   O[USNCFOKP RKPI
        O[USNF KU CNKXG
        =TKEMIY TKEM?

      Aby uzyskać bardziej wyczerpujący raport, mo na zamiast opcji ping u yć version, co spo-
      woduje wyświetlenie informacji o wersji uruchomionego serwera, czasie jego pracy oraz
      innych.

      Gdy ju wiemy, jak sprawdzić, czy serwer działa, zapoznamy się ze sposobami jego urucha-
      miania. Metody uruchamiania i zatrzymywania serwera zale ą od rodzaju systemu opera-
      cyjnego, pod kontrolą którego pracuje serwer. Na początek zajmiemy się systemem Windows,
      a później Linux i Unix.


Windows
      Je eli serwer MySQL działa w systemie Windows, najprawdopodobniej po zainstalowaniu
      programu i ponownym uruchomieniu komputera serwer zostanie uruchomiony, a podczas
      zamykania systemu automatycznie zatrzymany. Działanie takie zostało osiągnięte dzięki
      temu, e w Windows NT, 2000 i XP serwer MySQL jest domyślnie instalowany jako stan-
      dardowa usługa systemu. Mo na to zobaczyć, przeglądając zawartość okna Usługi dostępnego
      w Panelu sterowania (dokładna lokalizacja zale y od wersji Windows). Jak widać, usługa
      MySQL jest uruchamiana automatycznie. Na górnym rysunku na następnej stronie pokazana
      jest lista usług dostępnych w systemie Windows 2000.

      Dzięki takiemu ustawieniu operacje uruchamiania i zatrzymywania serwera są automatycznie
      wykonywane przez system operacyjny.

      Program WinMySQLManager, znajdujący się w podkatalogu bin katalogu z instalacją MySQL,
      pozwala na sprawowanie kontroli nad serwerem MySQL na dosyć wysokim poziomie. Zapew-
      nia on wygodny interfejs do zarządzania serwerem. Po uruchomieniu tego programu zauwa ysz,
       e po wyświetleniu okna wskazującego na start programu właściwie niewiele więcej się
      stało. Je eli jednak przyjrzysz się dokładniej, odszukasz małą ikonę przedstawiającą sygnaliza-
      tor świateł drogowych, umieszczoną w zasobniku systemowym. Zielone światło sygnalizuje
      działanie serwera MySQL. Je eli klikniesz tę ikonę prawym klawiszem myszy i wybierzesz
      pozycję menu Show me, na ekranie poka e się pełne okno programu WinMySQLAdmin
      (patrz dolny rysunek na następnej stronie).

      Okno to zawiera podstawowe informacje na temat platformy i wersji serwera. Na kolejnych
      zakładkach znajdziesz wiele szczegółowych informacji na temat statusu i konfiguracji serwera.
      Na przykład na zakładce Report mo na wygenerować raport zawierający wiele informacji
      na temat działającego serwera. Jest to szczególnie u yteczne w przypadku, gdy występują
      kłopoty z prawidłowym działaniem serwera.

      Bardzo przydatną zakładką jest Databases. Pozwala ona na przeglądanie informacji na temat
      baz danych, tabel w nich zawartych, a nawet definicji kolumn. Na rysunku na stronie 282
      pokazana została definicja tabeli customer w bazie danych bmsimple.
Rozdział 10. n Administrowanie MySQL   281
282     Bazy danych i MySQL. Od podstaw




        Klikając prawym klawiszem myszy na ikonie świateł drogowych mo na dostać się do dodat-
        kowych funkcji, dostępnych w podręcznym menu. Opcje te pozwalają na ręczne urucho-
        mienie i zatrzymanie usługi; po zatrzymaniu usługi mo na usunąć usługę MySQL.


Linux
        Nieco inaczej sprawuje się kontrolę nad serwerem MySQL w systemie Linux. Metoda zale y
        od tego, czy zainstalowałeś serwer korzystając z plików źródłowych, czy z gotowego pakietu,
        na przykład RPM dla systemów Red Hat lub SuSE Linux.

        Najłatwiejszy sposób kontroli serwera jest dostępny w przypadku instalacji z pakietu instala-
        cyjnego. Je eli wykonałeś taką instalację, najprawdopodobniej zainstalowane zostały odpo-
        wiednie skrypty słu ące do uruchamiania i zatrzymywania serwera. Dokładna lokalizacja tych
        skryptów zale y od dystrybucji. W przypadku Red Hat Linux jest to katalog /etc/rc.d/init.d.

        Zwykle system Linux posiada zdefiniowane odpowiednie poziomy działania (runlevel).
        Najczęściej numerem 3 oznacza się poziom umo liwiający pracę w środowisku tekstowym,
        z obsługą wielu u ytkowników i sieci, natomiast numerem 5 poziom z uruchomionym śro-
        dowiskiem graficznym. W większości systemów ustawienia domyślne są określone w pliku
        /etc/inittab. Gdy system przechodzi na nowy poziom (lub opuszcza go), wykonywany jest
        zestaw skryptów przypisanych do tego poziomu. Zwykle są one umieszczone w katalogu
        /etc/rc.d/rcN.d, gdzie N jest numerem poziomu. Skrypty te są najczęściej dołączeniami
        symbolicznymi do skryptów z katalogu /etc/rc/d/init.d. Nazwy skryptów wykonywanych w celu
        uruchomienia poziomu zaczynają się od litery S, po której znajduje się liczba wskazująca
        na kolejność wykonywania skryptów. Pełny opis poziomów działania oraz skryptów startowych
Rozdział 10. n Administrowanie MySQL      283

wykracza poza ramy tej ksią ki. Więcej informacji mo esz znaleźć na stronie podręcznika
man dla programu init, w dokumentacji HOWTO lub w ksią kach poświęconych admini-
stracji systemem Linux.

Najprostszą metodą ustalenia poziomu działania, na którym będzie uruchamiany serwer
MySQL jest u ycie odpowiedniego narzędzia graficznego. W systemie Red Hat 7.2 mo na
skorzystać z programu Serviceconf, znajdującego się w menu Programs, System, Serviceconf
dla GNOME lub Red Hat, System, Serviceconf dla KDE. Po uruchomieniu programu widzisz
listę dostępnych usług z polami wyboru pozwalającymi określić, czy dany program będzie
uruchamiany na wybranym poziomie.

Na poni szym rysunku przedstawiono wygląd okna Service Configuration w systemie dzia-
łającym na poziomie 3., z wybranym serwerem MySQL.




Aby potwierdzić, e MySQL działa, mo na napisać w wierszu poleceń: RU GN ^ ITGR O[USNF
i sprawdzić, czy jest uruchomiony program mysqld.

Je eli instalując MySQL korzystałeś z plików źródłowych, musisz wykonać nieco więcej
czynności. Na początek musisz odszukać skrypt mysql_start_stop, który powinien znajdować
się w podkatalogu bin katalogu bazowego programu MySQL. Mo esz u yć go do stworzenia
własnego skryptu kontrolnego; w wielu przypadkach nie musisz go ju potem modyfikować.

Skopiuj ten skrypt do katalogu ze skryptami wykonywanymi w momencie startu systemu
(w Red Hat Linux jest to /etc/rc.d/init.d), a następnie korzystając z Twojego ulubionego narzę-
dzia zmień konfigurację tak, aby skrypt startowy był uruchamiany na wymaganym poziomie.
Mo esz w tym celu wykorzystać wspomniany wcześniej program serviceconf, a je eli wolisz
narzędzia tekstowe, mo esz u yć programu chkconfig, który pozwala na wygodne zarzą-
dzanie programami uruchamianymi na określonych poziomach pracy.
284   Bazy danych i MySQL. Od podstaw

      Je eli chcesz dodać skrypt mysql do programów uruchamianych w chwili przechodzenia na
      poziom 3, mo esz skopiować ten skrypt do katalogu /etc/rc.d/init.d, a następnie — za pomocą
      polecenia EJMEQPHKI NGXGN  O[USN — spowodować, e będzie on uruchamiany na pozio-
      mie 3. Więcej informacji na ten temat mo esz znaleźć na stronie podręcznika man chkconfig.

      Mo esz oczywiście ręcznie uruchamiać i zatrzymywać serwer, ale uruchamianie automa-
      tyczne zmniejsza ryzyko przypadkowego wyłączenia komputera bez zatrzymania serwera
      bazy danych.


Wersje serwera
      W przypadku systemu Linux, instalując serwer MySQL musiałeś wybrać odpowiedni pakiet
      do instalacji. Do wyboru miałeś standardowy pakiet serwera oraz opcjonalny pakiet max.
      Pakiet max jest wymagany w przypadku, gdy oprócz standardowych tabel MyISAM chcesz
      korzystać z tabel typu InnoDB lub BDB. Zalecamy zainstalowanie standardowego pakietu
      serwera oraz pakietu max.

      Je eli samodzielnie kompilowałeś MySQL, korzystając z plików źródłowych, w trakcie konfi-
      gurowania kompilacji decydujesz, które opcje serwera będą Ci potrzebne (patrz rozdział 3.).
      Począwszy od MySQL 4.0, domyślnie dołączana jest obsługa tabel InnoDB. Po wykonaniu
      programów configure, make oraz make install zostaje zainstalowana odpowiednia wersja
      programu serwera.

      W przypadku Windows sprawa nieco się komplikuje, poniewa zwykle w pakiecie instalacyj-
      nym znajduje się kilka wersji serwera, a u ytkownik musi wybrać odpowiadającą mu wersję.
      Operacje tę mo na wykonać za pomocą programu WinMySQLAdmin, korzystając z opcji na
      zakładce my.ini Setup (patrz rysunek na następnej stronie).

      Po lewej stronie okna przedstawionego na rysunku na następnej stronie znajdują się nazwy do-
      stępnych serwerów. Aby zmienić wersję serwera, nale y wykonać następujące kroki:
        n   Wybierz nowy typ serwera.
        n   Zatrzymaj usługę.
        n   Usuń usługę.
        n   Zainstaluj usługę.
        n   Uruchom usługę.

      Mo na to wykonać korzystając z wiersza poleceń, uruchamiając stary program z parametrem
      TGOQXG, a następnie nową wersję programu serwera z opcją KPUVCNN, co spowoduje zain-
      stalowanie podanego w poleceniu pliku jako nowej usługi MySQL. Więcej informacji na ten
      temat znajduje się w podręczniku MySQL. Sugerujemy u ycie wersji serwera mysqld-max-
      -NT, jak jest to pokazane na rysunku na następnej stronie.

      Je eli chcesz korzystać z tabel InnoDB, których u ywaliśmy w rozdziale 9. — „Transakcje
      i blokowanie”, przy omawianiu transakcji oraz kluczy obcych, zalecamy korzystanie z wersji
      max lub max-nt.
Rozdział 10. n Administrowanie MySQL   285




Dodawanie i usuwanie baz danych
    Dodawanie i usuwanie baz danych jest dosyć proste. Aby stworzyć bazę danych, nale y
    wykonać instrukcję:
      %4'#6' #6#$#5' PCYCADC[

    Aby usunąć bazę danych, nale y wykonać:
      412 #6#$#5' PCYCADC[

    Aby wykonać te operacje, u ytkownik podłączony do serwera musi posiadać odpowiednie
    uprawnienia, o których napiszemy w kolejnym podrozdziale.



Konfigurowanie u ytkowników
    Teraz, gdy nasz serwer bazy danych jest automatycznie uruchamiany i — co wa niejsze
    — automatycznie zatrzymywany, mo emy zająć się opisem konfigurowania u ytkowników.


Konto administratora bazy danych — root
    Podczas instalowania serwera MySQL tworzone są dwa konta u ytkowników — domyślne
    konto administratora oraz konto anonimowe. Konto administratora nosi nazwę root, ale nie
    jest to konto związane w jakikolwiek sposób z kontem w systemie Linux o tej samej nazwie.
286   Bazy danych i MySQL. Od podstaw

      Domyślnie u ytkownik root nie ma hasła oraz posiada pełną kontrolę nad bazą danych.
      Pierwszą czynnością powinno być przydzielenie hasła dla tego u ytkownika.

      Istnieje kilka sposobów ustawienia hasła u ytkownika. Opiszemy tutaj dwa z nich: za pomocą
      programu mysqladmin oraz poprzez bezpośrednią zmianę danych u ytkownika w bazie danych.

      Ustawienie hasła u ytkownika root (administratora) za pomocą programu mysqladmin wygląda
      następująco:
        O[USNCFOKP WUGTTQQV RCUUYQTF PQYGJCU Q

      Na przykład:
        =TKEMIY DO[US?      O[USNCFOKP WUGTTQQV RCUUYQTF UGETGV
        =TKEMIY DO[US?

      Po ustawieniu hasła mo na je zmieniać za pomocą programu mysqladmin, ale w takim przy-
      padku nale y podać poprzednie hasło za pomocą opcji RCUUYQTFUVCTGAJCU Q.

      Sposób tworzenia domyślnych u ytkowników powoduje, e dla ka dego u ytkownika wystę-
      pują zwykle dwie pozycje — jedna do logowania lokalnego oraz druga do logowania przez
      sieć. Program ustawia hasło dla wykorzystywanej metody logowania, co mo e spowodo-
      wać, e baza danych nie będzie zabezpieczona tak dobrze, jak się tego mogłeś spodziewać.
      Z tego powodu zalecamy wykorzystanie innej metody zmiany hasła, która wymaga zalogo-
      wania się do bazy danych.

      Je eli nie ustawiałeś jeszcze hasła u ytkownika root, mo esz zalogować się jako admini-
      strator w następujący sposób:
        =TKEMIY TKEM? O[USN WUGTTQQV
        9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ  QT I
        ;QWT /[53. EQPPGEVKQP KF KU  VQ UGTXGT XGTUKQP CNRJC

        6[RG    JGNR   QT   J   HQT JGNR 6[RG   E   VQ ENGCT VJG DWHHGT

        O[USN

      Je eli skorzystałeś ju z programu mysqladmin do ustawienia hasła, musisz podać hasło,
      dodając parametr RCUUYQTFJCU Q, lub lepiej (nikt nie będzie mógł wtedy podejrzeć hasła)
      parametr R, co spowoduje, e program mysql zapyta o hasło:
        =TKEMIY TKEM? O[USN WUGTTQQV R
        'PVGT RCUUYQTF
9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ  QT I
        ;QWT /[53. EQPPGEVKQP KF KU  VQ UGTXGT XGTUKQP CNRJC

        6[RG    JGNR   QT   J   HQT JGNR 6[RG   E   VQ ENGCT VJG DWHHGT

        O[USN

      Poniewa jesteśmy podłączeni do serwera bazy danych jako u ytkownik root, mamy
      uprawnienia do wykonania dowolnego polecenia we wszystkich bazach danych. Wybieramy
      bazę danych mysql, która zawiera tabele systemowe, w tym tabele wykorzystywane przy
      sprawdzaniu uprawnień u ytkowników:
Rozdział 10. n Administrowanie MySQL   287

  O[USN WUG O[USN
  4GCFKPI VCDNG KPHQTOCVKQP HQT EQORNGVKQP QH VCDNG CPF EQNWOP PCOGU
  ;QW ECP VWTP QHH VJKU HGCVWTG VQ IGV C SWKEMGT UVCTVWR YKVJ #

  CVCDCUG EJCPIGF
  O[USN

Teraz zmieniamy hasło dla u ytkownika root, poprzez zmianę wartości w tabeli user:
  O[USN 72#6' WUGT 5'6 RCUUYQTF2#55914
 UGETGVRCUUYQTF 
       9*'4' WUGT TQQV 
  3WGT[ 1-  TQYU CHHGEVGF 
 UGE
  4QYU OCVEJGF  %JCPIGF  9CTPKPIU 

  O[USN

Jest to zwykła instrukcja 72#6', wykorzystująca funkcję 2#55914
. Instrukcja ta wymaga
podania nowego hasła (ciągu znaków) i zwraca je w postaci zaszyfrowanej. Zwróć uwagę
na to, e zmienione zostały dwa wiersze; powód tego przedstawimy za chwilę. Zaszyfro-
wane hasło jest zapisywane w tabeli user. Korzystając z tej metody mo emy ustawić hasło
dla dowolnego u ytkownika, poniewa administrator posiada wszystkie prawa do tej tabeli.

Aby wprowadzone zmiany zaczęły obowiązywać, musimy wykonać instrukcję (.75*
24+8+.')'5:
  O[USN (.75* 24+8+.')'5
  3WGT[ 1-  TQYU CHHGEVGF 
 UGE

  O[USN

Instrukcja ta powoduje, e MySQL ponownie wczytuje uprawnienia u ytkowników do we-
wnętrznych buforów.

Popatrzmy na fragment tabeli user:
  O[USN 5'.'%6 WUGT JQUV RCUUYQTF (41/ WUGT
  



  ^ WUGT ^ JQUV      ^ RCUUYQTF         ^
  



  ^ TQQV ^ NQECNJQUV ^ GGFCCE ^
  ^ TQQV ^ IY       ^ GGFCCE ^
  ^      ^ NQECNJQUV ^                  ^
  ^      ^ IY       ^                  ^
  



   TQYU KP UGV 
 UGE

  O[USN

Jak widać, u ytkownik root posiada ustawione hasło, ale występują dla tego u ytkownika
dwie pozycje. Obie zawierają to samo zaszyfrowane hasło (zignoruj na razie pozycje bez
nazwy u ytkownika, omówimy je nieco później). Powodem powstania podwójnych wpisów
jest praca w sieci. Hasło wykorzystywane do połączenia się z MySQL mo e być inne dla
połączeń realizowanych z lokalnego komputera i inne dla komputera lub grupy komputerów
w sieci. Nasz komputer posiada nazwę gw1, ale podczas instalacji serwera MySQL dodany
288   Bazy danych i MySQL. Od podstaw

      został wpis dla komputera localhost (nazwa lokalnego połączenia). W niektórych instala-
      cjach zamiast localhost mo e znajdować się tu adres IP 127.0.0.1. Mo liwe jest stworzenie
      kont u ytkowników, którzy posiadają prawo do zalogowania się do bazy danych z lokalnego
      komputera, ale nie mogą się zalogować z innych komputerów podłączonych do sieci.

         Dobrym pomysłem jest pozwolenie na logowanie się użytkownika root jedynie z kom-
         putera z serwerem MySQL. Zmniejsza to ryzyko zdobycia dostępu do serwera przez
         nieautoryzowanych użytkowników.



Przywracanie hasła administratora

      Mo e zdarzyć się sytuacja, e konto administratora zostanie usunięte z serwera — albo
      z powodu uszkodzenia danych, albo przez błąd człowieka.

      Na szczęście istnieje kilka sposobów wyjścia z tej sytuacji. Je eli jesteś nadal zalogowany jako
      root, problem mo na łatwo naprawić. Przełącz się do bazy danych mysql i wstaw nowy
      wiersz dla u ytkownika root, komputera localhost, bez hasła i ze znakami Y w pozostałych
      kolumnach. Następnie ustaw hasło administratora w przedstawiony wcześniej sposób:
        72#6' WUGT 5'6 RCUUYQTF2#55914
 UGETGVRCUUYQTF 9*'4' WUGT TQQV

      Je eli nie jesteś zalogowany do bazy, istnieje kilka sposobów na naprawę sytuacji. Na początek
      musisz zatrzymać pracę serwera. W systemie Windows mo esz do zatrzymania serwera u yć
      programu WinMySQLAdmin; mo esz tak e zatrzymać usługę mysql ręcznie, korzystając
      z konta u ytkownika o prawach administratora. Równie w systemie Linux do uruchomienia
      skryptu zatrzymującego serwer musisz posiadać prawa administratora.

      Najlepszą metodą przywracania konta administratora jest ręczne uruchomienie procesu
      serwera ze specjalnym parametrem UMKRITCPVVCDNGU. Powoduje to, e serwer ignoruje
      tabele uprawnień i pozwala na zalogowanie się jako u ytkownik root bez konieczności poda-
      wania hasła. Dodatkowo musisz podać inne parametry, takie jak poło enie katalogu data.
      Na przykład po zainstalowaniu MySQL w katalogu /usr/local/mysql w systemie Linux powi-
      nieneś wydać następujące polecenie:
        WUTNQECNO[USNDKPO[USNFAUCHG UMKRITCPVVCDNGU FCVCFKTWUTNQECNO[USNXCT
        RKFHKNGWUTNQECNO[USNXCTIYRKF

      W systemie Windows mo na uruchomić serwer z wiesza poleceń w następujący sposób:
        O[USNFPV UVCPFCNQPG UMKRITCPVVCDNGU

      Je eli w systemie Linux instalowałeś serwer korzystając z plików źródłowych, istnieje jeszcze
      jeden sposób przywrócenia konta u ytkownika root (choć nie jest on zalecany). W czasie
      instalacji musiałeś wykonać skrypt o nazwie mysql_install_db. Skrypt ten tworzy tabele
      uprawnień, a jego powtórne wykonanie spowoduje utworzenie domyślnych tabel. Powoduje
      to jednak utratę wszystkich kont u ytkowników utworzonych w trakcie pracy z bazą danych.

         Jeżeli jest to tylko możliwe, do odtwarzania konta administratora zalecamy korzystanie
         z opcji --skip-grant-tables.
Rozdział 10. n Administrowanie MySQL   289

     Mo emy teraz uruchomić program mysql w zwykły sposób, podłączyć się do serwera bazy
     danych jako root bez konieczności podawania hasła i ponownie wykonać instrukcje, które
     odtworzą konto administratora. Następnie nale y zatrzymać serwer i uruchomić go ju w nor-
     malnym trybie, po czym w opisywany wcześniej sposób ustawić hasło u ytkownika root.


Usuwanie domyślnego u ytkownika

     Bie ąca wersja MySQL instaluje domyślnego u ytkownika, który mo e podłączyć się do
     serwera z lokalnego komputera i korzystać z baz danych, których nazwy zaczynają się od
     test. Jest to wygodne w przypadku, gdy pierwszy raz instalujesz MySQL i chcesz sprawdzić,
     czy inni ni root u ytkownicy mogą podłączyć się do bazy. Zawsze istnieje jednak ryzyko,
      e na serwerze produkcyjnym pozostanie aktywne konto domyślnego u ytkownika, utwo-
     rzone w czasie instalacji. Z tego powodu sugerujemy usunięcie takiego konta natychmiast
     po stwierdzeniu, e baza danych działa prawidłowo. Aby to zrobić, zaloguj się do bazy jako
     root i uwa nie wykonaj następujące instrukcje:
       O[USN WUG O[USN
       4GCFKPI VCDNG KPHQTOCVKQP HQT EQORNGVKQP QH VCDNG CPF EQNWOP PCOGU
       ;QW ECP VWTP QHH VJKU HGCVWTG VQ IGV C SWKEMGT UVCTVWR YKVJ #

       CVCDCUG EJCPIGF
       O[USN '.'6' (41/ WUGT 9*'4' WUGT     
       3WGT[ 1-  TQYU CHHGEVGF 
 UGE

     Je eli pomylisz się w poleceniu '.'6', mo esz usunąć z bazy danych swoje konto u yt-
     kownika. Sprawdź, czy usunięte zostały tylko dwa wiersze. Je eli przypadkowo usunąłeś
     własne konto, poszukaj w dalszej części tego rozdziału przykładu tworzenia nowego konta
     administratora i wykonaj podany w nim kod.

     Aby upewnić się, e wszystko zostało wykonane prawidłowo, sprawdźmy, czy w tabeli user
     znajduje się u ytkownik root, który mo e się logować z komputera localhost:
       O[USN 5'.'%6 WUGT JQUV (41/ WUGT 9*'4' WUGT    TQQV 
       


       ^ WUGT ^ JQUV      ^
       


       ^ TQQV ^ IY       ^
       ^ TQQV ^ NQECNJQUV ^
       


        TQYU KP UGV 
 UGE

       O[USN

     W wyniku tego zapytania powinien znajdować się co najmniej jeden wiersz zawierający
     wpisy root i localhost. Je eli wszystko zostało wykonane prawidłowo, mo emy za ądać
     przeładowania uprawnień przez serwer MySQL:
       O[USN (.75* 24+8+.')'5
       3WGT[ 1-  TQYU CHHGEVGF 
 UGE

       O[USN

     Konto domyślnego u ytkownika zostało usunięte.
290   Bazy danych i MySQL. Od podstaw



Zarządzanie uprawnieniami u ytkowników
      Po zabezpieczeniu konta root mo emy zająć się tworzeniem kont zwykłych u ytkowników,
      nadawaniem uprawnień u ytkownikom oraz — gdy to konieczne — usuwaniem ich kont.


Tworzenie kont u ytkowników
      Starsze wersje MySQL posiadały program mysqlaccess, który był przeznaczony do tworzenia
      kont u ytkowników w bazie danych. Jest on nadal dostępny, ale zalecamy korzystanie z nowego
      polecenia )4#06, które zostało wprowadzone w wersji 3.2.1. Omówimy tu tworzenie kont
      u ytkowników za pomocą polecenia )4#06 dostępnego w wierszu poleceń mysql. Istnieją
      niewielkie ró nice w działaniu polecenia )4#06 w wersjach 3.2.1 i 4.0 MySQL. W MySQL 3.2.1
      nale ało jawnie nadawać u ytkownikom uprawnienia do dostępu do bazy danych (nadanie
      prawa dostępu do tabeli nie powodowało automatycznego nadania prawa dostępu do bazy
      danych). W wersji 4.0 nadanie prawa dostępu do co najmniej jednej tabeli w bazie danych
      powoduje umo liwienie dostępu do bazy danych. Instrukcja )4#06 ma dosyć prostą składnię,
      ale posiada wiele mo liwych opcji:
        )4#06 RTCYQ =
NKUVC MQNWOP? 10 DCCANWDAVCDGNC 61 W [VMQYPKM
            =+'06+(+' $; JCU Q ? =9+6* )4#06 126+10?

      Zapoznamy się teraz z opcjami instrukcji )4#06 i ich praktycznym zastosowaniem. Popa-
      trzmy w tym celu na listę dostępnych uprawnień (patrz górna tabela na następnej stronie);
      jest ona dosyć długa:

      Kolejną częścią instrukcji )4#06 jest opcjonalna lista kolumn, która pozwala na określenie,
      do których kolumn będą stosowane nadane uprawnienia. Jest to u yteczne jedynie w przy-
      padku, gdy nadawane są uprawnienia do konkretnej tabeli; pozwala to jednak na bardzo
      precyzyjne określanie uprawnień do ró nych części bazy danych. W dalszej części roz-
      działu poka emy przykład praktycznego wykorzystania instrukcji )4#06 z listą kolumn.

      Następną częścią polecenia jest wyra enie DCCANWDAVCDGNC . Pozwala ono określić jeden
      z trzech poziomów dostępu, przy wykorzystaniu składni DCCAFCP[EJVCDGNC, gdzie znak
słu y jako znak specjalny. Przykład przedstawiono w dolnej tabeli na następnej stronie.

      Kolejną częścią instrukcji jest nazwa u ytkownika. Jak wcześniej wspomnieliśmy, mo emy
      nadać ró ne uprawnienia dla u ytkownika, w zale ności od komputera, z którego podłącza
      się do bazy danych. Realizujemy to, korzystając z tej właśnie części instrukcji )4#06 oraz
      odpowiednio wypełniając pole host w tabeli user znajdującej się w bazie danych mysql.

      Nazwa u ytkownika składa się z trzech części — nazwy podawanej przy logowaniu się do
      bazy, symbolu  oraz wyra enia określającego komputer. Je eli chcesz nadać u ytkowni-
      kowi uprawnienia obowiązujące jedynie w przypadku logowania realizowanego na kom-
      puterze, na którym działa proces serwera, podaną nazwą komputera musi być localhost. Je-
       eli chcesz nadać uprawnienia dla wszystkich komputerów, powinieneś u yć symbolu
      (wraz z apostrofami). Trzeba pamiętać o podaniu nazwy komputera w pojedynczych apo-
      strofach, poniewa bez nich uprawnienia nie zostaną nadane.
Rozdział 10. n Administrowanie MySQL       291


Słowo kluczowe      Znaczenie
#..                 Nadaje u ytkownikowi wszystkie wymienione dalej uprawnienia
#.. 24+8+.')'5      Takie samo jak dla #..
#.6'4               Pozwala na wykonanie polecenia #.6'4 VCDGNC
%4'#6'              Pozwala na tworzenie baz danych i tabel
'.'6'              Pozwala na usuwanie danych z tabel
412                Pozwala na usuwanie baz danych i tabel
(+.'                Pozwala na dostęp do plików zapisanych na serwerze
+0':               Pozwala na zarządzanie indeksami
+05'46              Pozwala na wstawianie danych do tabel
241%'55             Pozwala na przeglądanie informacji o procesie serwera
4'('4'0%'5          Jest to zarezerwowane słowo kluczowe; na razie nie ma przypisanego adnego działania
4'.1#              Pozwala na powtórne załadowanie informacji z tabel uprawnień do serwera
5'.'%6              Pozwala na pobieranie danych z tabel
5*76190            Pozwala na zatrzymanie bazy danych
72#6'              Pozwala na zmianę informacji w tabelach
75#)'               Pozwala na utworzenie konta u ytkownika bez adnych uprawnień


Poziom dostępu                   Znaczenie
Nazwa bazy danych lub tabeli     Zasięg nadawanego uprawnienia
Wszystkie tabele we wszystkich bazach danych, w tym prawo do tworzenia
                                 nowych baz danych
DOUKORNG
Wszystkie tabele w bazie bmsimple, w tym prawo do utworzenia bazy
                                 danych o podanej nazwie
DOUKORNGEWUVQOGT                Tabela customer w bazie danych bmsimple

        Mo na równie określić dowolny komputer z domeny; na przykład aby nadać uprawnienia
        u ytkownikowi Deborah z dowolnego komputera w domenie docbox.co.uk, nazwę u ytkow-
        nika określamy jako FGDQTCJ FQEDQZEQWM . Mo na równie określać zakres kompute-
        rów, podając adres IP podsieci — na przykład FGDQTCJ  — co umo liwi
        logowanie się z dowolnego komputera z podsieci klasy C o adresach rozpoczynających się
        od 192.168.100.

        Następna część instrukcji — +'06+(+' $; JCU Q — jest opcjonalna i u ywana jedynie
        w czasie tworzenia konta nowego u ytkownika; pozwala ona określić przypisane doń hasło.
        Je eli nadajesz prawa dla nieistniejącego u ytkownika i nie podasz opcji +'06+(+' $;,
        utworzony zostanie nowy u ytkownik bez hasła, co nie jest właściwe ze względu na bezpie-
        czeństwo serwera.
292   Bazy danych i MySQL. Od podstaw

      Ostatnią częścią instrukcji jest 9+6* )4#06 126+10. Część ta jest równie opcjonalna. Je eli
      zostanie podana, nowy u ytkownik będzie mógł przekazywać innym u ytkownikom upraw-
      nienia, które posiada. Mo e być to przydatne w przypadku du ej ilości u ytkowników, kiedy
      administrator przekazuje część odpowiedzialności za zarządzanie określonymi bazami danych
      innym u ytkownikom. Operacja taka musi być przemyślana.

      Działanie instrukcji )4#06 kumuluje się, więc mo na wykonać tę instrukcję kilkukrotnie,
      nadając u ytkownikowi kolejne uprawnienia. Pamiętaj, e aby zadziałały nowe uprawnienia,
      nale y wykonać instrukcję (.75* 24+8+.')'5.


      Instrukcja GRANT
      Utwórzmy konto u ytkownika Deborah, który posiada uprawnienia do połączenia się z kom-
      putera z domeny FQEDQZEQWM i dostęp tylko do tabel w bazie danych bmsimple:
        O[USN )4#06 #.. 10 DOUKORNG
61 FGDQTCJ   FQEDQZEQWM
             +'06+(+' $; UGETGV 
        3WGT[ 1-  TQYU CHHGEVGF 
 UGE

        O[USN

      Zauwa , e określenie komputera, z którego mo e się logować u ytkownik zostało ujęte
      w apostrofy, poniewa zawiera znak specjalny , u ywany do wybrania wszystkich kompute-
      rów z domeny docbox.co.uk. Poniewa nadaliśmy u ytkownikowi Deborah wszystkie
      uprawnienia, mo e on wykonywać wszystkie operacje na tabelach w bazie danych — w tym
      równie tworzyć nowe tabele. Je eli chcielibyśmy dać mu mo liwość korzystania z dowolnego
      komputera w sieci, powinniśmy skorzystać z instrukcji:
        )4#06 #.. 10 DOUKORNG
61 FGDQTCJ     +'06+(+' $;   UGETGV

      Je eli chcesz pozwolić u ytkownikowi Deborah na logowanie się z komputera, na którym
      działa serwer bazy danych, powinieneś wykonać osobną instrukcję )4#06, podając przy nazwie
      u ytkownika nazwę lokalnego komputera, czyli localhost:
        O[USN )4#06 #.. 10 DOUKORNG
61 FGDQTCJNQECNJQUV +'06+(+' $;    UGETGV 
        3WGT[ 1-  TQYU CHHGEVGF 
 UGE

        O[USN

      Po tych operacjach w tabeli mysql.user pojawiły się dwa wiersze:
        O[USN 5'.'%6 WUGT JQUV RCUUYQTF (41/ WUGT 9*'4' WUGT FGDQTCJ 
        



        ^ WUGT    ^ JQUV           ^ RCUUYQTF         ^
        



        ^ FGDQTCJ ^ NQECNJQUV      ^ H ^
        ^ FGDQTCJ ^ FQEDQZEQWM ^ H ^
        



         TQYU KP UGV 
 UGE

        O[USN
Rozdział 10. n Administrowanie MySQL    293

Kolejnym przykładem będzie utworzenie konta u ytkownika manager1, który będzie miał
bardzo ograniczone uprawnienia. Załó my, e u ytkownik manager1 będzie mógł pobierać
dane z niektórych kolumn tabeli customer, zapisanej w bazie danych bmsimple. Dodatkowo
będzie mógł się zalogować tylko z komputera, na którym znajduje się baza danych. Aby
zrealizować te zało enia, skorzystamy z prawa 5'.'%6, które umo liwia jedynie odczyty-
wanie danych. Dodatkowo wymienimy nazwy kolumn, do których nadamy te uprawnienia.
Korzystając z tych ograniczonych uprawnień u ytkownik manager1 mo e się podłączyć do
bazy jako lokalny u ytkownik.
  O[USN )4#06 5'.'%6 
VKVNG HPCOG NPCOG QP DOUKORNGEWUVQOGT 61 OCPCIGTNQECNJQUV
  +'06+(+' $; HQQ 
  3WGT[ 1-  TQYU CHHGEVGF 
 UGE

  O[USN

Sprawdźmy, czy nadane uprawnienia działają prawidłowo:
  =TKEMIY TKEM? O[USN WUGTOCPCIGT R
  'PVGT RCUUYQTF

Más contenido relacionado

La actualidad más candente

PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIWydawnictwo Helion
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaWydawnictwo Helion
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawWydawnictwo Helion
 
Oracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraOracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraWydawnictwo Helion
 
Projektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyProjektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyWydawnictwo Helion
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyWydawnictwo Helion
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaWydawnictwo Helion
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościWydawnictwo Helion
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIWydawnictwo Helion
 
Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWydawnictwo Helion
 

La actualidad más candente (20)

MySQL. Szybki start
MySQL. Szybki startMySQL. Szybki start
MySQL. Szybki start
 
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie IIIPHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
PHP i MySQL. Witryna WWW oparta na bazie danych. Wydanie III
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
Access 2003 PL. Kurs
Access 2003 PL. KursAccess 2003 PL. Kurs
Access 2003 PL. Kurs
 
Oracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstawOracle9i. Administrowanie bazami danych od podstaw
Oracle9i. Administrowanie bazami danych od podstaw
 
Oracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratoraOracle Database 10g. Kompendium administratora
Oracle Database 10g. Kompendium administratora
 
Projektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalistyProjektowanie baz danych XML. Vademecum profesjonalisty
Projektowanie baz danych XML. Vademecum profesjonalisty
 
Access 2007 PL. Kurs
Access 2007 PL. KursAccess 2007 PL. Kurs
Access 2007 PL. Kurs
 
Delphi 7 i bazy danych
Delphi 7 i bazy danychDelphi 7 i bazy danych
Delphi 7 i bazy danych
 
Mandrake Linux
Mandrake LinuxMandrake Linux
Mandrake Linux
 
Po prostu Access 2003 PL
Po prostu Access 2003 PLPo prostu Access 2003 PL
Po prostu Access 2003 PL
 
PHP 5. Nowe możliwości
PHP 5. Nowe możliwościPHP 5. Nowe możliwości
PHP 5. Nowe możliwości
 
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalistyMySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
MySQL. Budowanie interfejsów użytkownika. Vademecum profesjonalisty
 
Bazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktykaBazy danych SQL. Teoria i praktyka
Bazy danych SQL. Teoria i praktyka
 
Oracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwościOracle Database 10g. Nowe możliwości
Oracle Database 10g. Nowe możliwości
 
SQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowySQL. Leksykon kieszonkowy
SQL. Leksykon kieszonkowy
 
Access 2003 PL dla każdego
Access 2003 PL dla każdegoAccess 2003 PL dla każdego
Access 2003 PL dla każdego
 
Windows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratoraWindows Server 2003. Podręcznik administratora
Windows Server 2003. Podręcznik administratora
 
PHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie IIPHP, MySQL i Apache dla każdego. Wydanie II
PHP, MySQL i Apache dla każdego. Wydanie II
 
Wprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danychWprowadzenie do systemów baz danych
Wprowadzenie do systemów baz danych
 

Similar a Bazy danych i MySQL. Od podstaw

PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychWydawnictwo Helion
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIWydawnictwo Helion
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaWydawnictwo Helion
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startWydawnictwo Helion
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyWydawnictwo Helion
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIWydawnictwo Helion
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychWydawnictwo Helion
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawWydawnictwo Helion
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaWydawnictwo Helion
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery WindowsWydawnictwo Helion
 
Projektowanie struktur Active Directory
Projektowanie struktur Active DirectoryProjektowanie struktur Active Directory
Projektowanie struktur Active DirectoryWydawnictwo Helion
 

Similar a Bazy danych i MySQL. Od podstaw (17)

PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danychPHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
PHP, Microsoft IIS i SQL Server. Projektowanie i programowanie baz danych
 
MySQL. Podstawy
MySQL. PodstawyMySQL. Podstawy
MySQL. Podstawy
 
Wprowadzenie do baz danych
Wprowadzenie do baz danychWprowadzenie do baz danych
Wprowadzenie do baz danych
 
PHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie IIIPHP, MySQL i Apache dla każdego. Wydanie III
PHP, MySQL i Apache dla każdego. Wydanie III
 
Visual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga ekspertaVisual Basic .NET. Bazy danych. Księga eksperta
Visual Basic .NET. Bazy danych. Księga eksperta
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
PHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki startPHP i MySQL. Dynamiczne strony WWW. Szybki start
PHP i MySQL. Dynamiczne strony WWW. Szybki start
 
Java. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalistyJava. Usługi WWW. Vademecum profesjonalisty
Java. Usługi WWW. Vademecum profesjonalisty
 
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie IIPHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
PHP i MySQL. Tworzenie sklepów internetowych. Wydanie II
 
Oracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danychOracle9i. Podręcznik administratora baz danych
Oracle9i. Podręcznik administratora baz danych
 
PHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstawPHP5, Apache i MySQL. Od podstaw
PHP5, Apache i MySQL. Od podstaw
 
PHP5 i MySQL. Biblia
PHP5 i MySQL. BibliaPHP5 i MySQL. Biblia
PHP5 i MySQL. Biblia
 
Java w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga ekspertaJava w komercyjnych usługach sieciowych. Księga eksperta
Java w komercyjnych usługach sieciowych. Księga eksperta
 
JBuilder i bazy danych
JBuilder i bazy danychJBuilder i bazy danych
JBuilder i bazy danych
 
100 sposobów na serwery Windows
100 sposobów na serwery Windows100 sposobów na serwery Windows
100 sposobów na serwery Windows
 
Projektowanie struktur Active Directory
Projektowanie struktur Active DirectoryProjektowanie struktur Active Directory
Projektowanie struktur Active Directory
 
Relacyjne bazy danych
Relacyjne bazy danychRelacyjne bazy danych
Relacyjne bazy danych
 

Más de Wydawnictwo Helion

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyWydawnictwo Helion
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikWydawnictwo Helion
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuWydawnictwo Helion
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIWydawnictwo Helion
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningWydawnictwo Helion
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykWydawnictwo Helion
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
 

Más de Wydawnictwo Helion (20)

Tworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. ProjektyTworzenie filmów w Windows XP. Projekty
Tworzenie filmów w Windows XP. Projekty
 
Blog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnikBlog, więcej niż internetowy pamiętnik
Blog, więcej niż internetowy pamiętnik
 
Access w biurze i nie tylko
Access w biurze i nie tylkoAccess w biurze i nie tylko
Access w biurze i nie tylko
 
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktycznePozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczne
 
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieE-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesie
 
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsMicrosoft Visual C++ 2008. Tworzenie aplikacji dla Windows
Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows
 
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IICo potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie II
 
Makrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółuMakrofotografia. Magia szczegółu
Makrofotografia. Magia szczegółu
 
Windows PowerShell. Podstawy
Windows PowerShell. PodstawyWindows PowerShell. Podstawy
Windows PowerShell. Podstawy
 
Java. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie IIJava. Efektywne programowanie. Wydanie II
Java. Efektywne programowanie. Wydanie II
 
JavaScript. Pierwsze starcie
JavaScript. Pierwsze starcieJavaScript. Pierwsze starcie
JavaScript. Pierwsze starcie
 
Ajax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny treningAjax, JavaScript i PHP. Intensywny trening
Ajax, JavaScript i PHP. Intensywny trening
 
PowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktykPowerPoint 2007 PL. Seria praktyk
PowerPoint 2007 PL. Seria praktyk
 
Excel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktykExcel 2007 PL. Seria praktyk
Excel 2007 PL. Seria praktyk
 
Access 2007 PL. Seria praktyk
Access 2007 PL. Seria praktykAccess 2007 PL. Seria praktyk
Access 2007 PL. Seria praktyk
 
Word 2007 PL. Seria praktyk
Word 2007 PL. Seria praktykWord 2007 PL. Seria praktyk
Word 2007 PL. Seria praktyk
 
Serwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacjaSerwisy społecznościowe. Budowa, administracja i moderacja
Serwisy społecznościowe. Budowa, administracja i moderacja
 
AutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PLAutoCAD 2008 i 2008 PL
AutoCAD 2008 i 2008 PL
 
Bazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcieBazy danych. Pierwsze starcie
Bazy danych. Pierwsze starcie
 
Inventor. Pierwsze kroki
Inventor. Pierwsze krokiInventor. Pierwsze kroki
Inventor. Pierwsze kroki
 

Bazy danych i MySQL. Od podstaw

  • 1. IDZ DO PRZYK£ADOWY ROZDZIA£ SPIS TRE CI Bazy danych i MySQL. Od podstaw KATALOG KSI¥¯EK Autorzy: Richard Stones, Neil Matthew KATALOG ONLINE T³umaczenie: Pawe³ Gonera ISBN: 83-7197-728-X ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Beginning Databases with MySQL Format: B5, stron: 560 Przyk³ady na ftp: 45 kB TWÓJ KOSZYK MySQL zajmuje szczególn¹ pozycjê w ród systemów obs³ugi relacyjnych baz danych. DODAJ DO KOSZYKA Dziêki du¿ej wydajno ci, prostocie obs³ugi i dostêpno ci interfejsów programistycznych dla wielu jêzyków programowania, osi¹gn¹³ ogromn¹ popularno æ w zastosowaniach internetowych. Je li dysponujesz ograniczonym bud¿etem, powiniene rozwa¿yæ u¿ycie CENNIK I INFORMACJE darmowego systemu, który pod wieloma wzglêdami mo¿e konkurowaæ z drogimi systemami komercyjnymi. MySQL rozwija siê zreszt¹ bardzo dynamicznie, a jego ZAMÓW INFORMACJE kolejne wersje dysponuj¹ coraz to bardziej wyrafinowanymi funkcjami. O NOWO CIACH Do kogo adresowana jest ta ksi¹¿ka? ZAMÓW CENNIK „Bazy danych i MySQL. Od podstaw” to pozycja zarówno dla pocz¹tkuj¹cych, jak i dla zaawansowanych u¿ytkowników MySQL-a. Pocz¹tkuj¹cy dowiedz¹ siê jak instalowaæ i konfigurowaæ system MySQL, naucz¹ siê projektowania wydajnych baz danych CZYTELNIA i zg³êbi¹ tajemnice jêzyka SQL. Do wiadczeni programi ci bêd¹ mogli poznaæ interfejs pozwalaj¹cy na korzystanie z MySQL-a z poziomu ich ulubionego jêzyka programowania FRAGMENTY KSI¥¯EK ONLINE (ksi¹¿ka omawia C, C++, Perla, PHP i Javê). Zainteresowaæ ich powinny tak¿e rozdzia³y po wiêcone wzorcom projektowym stosowanym przy tworzeniu aplikacji bazodanowych i omówienie mechanizmu transakcji, zaimplementowanego w najnowszych wersjach MySQL-a. Co zawiera ta ksi¹¿ka? • Przystêpne omówienie zagadnieñ zwi¹zanych z projektowaniem baz danych • Opis kompilacji, instalacji, konfiguracji i obs³ugi systemu MySQL • Kompletny kurs jêzyka SQL w wersji implementowanej w MySQL • Prezentacjê narzêdzi u³atwiaj¹cych pracê z MySQL • Omówienie zagadnieñ zwi¹zanych z administracj¹ systemem bazodanowym (replikacja, tworzenie kopii zapasowych, odtwarzanie danych) Wydawnictwo Helion • Opis interfejsów umo¿liwiaj¹cych pisanie aplikacji bazodanowych w jêzykach ul. Chopina 6 C, C++, PHP, Perl i Java 44-100 Gliwice • Dodatki, zawieraj¹ce m.in. skorowidz poleceñ SQL i informacje na temat obs³ugi tel. (32)230-98-63 du¿ych obiektów (pola BLOB) e-mail: helion@helion.pl
  • 2. Spis treści O Autorach ............................................................................................................................ 13 Wstęp.................................................................................................................................... 15 Rozdział 1. Wprowadzenie do MySQL...............................................................................................19 Zastosowanie danych przy programowaniu............................................................................ 19 Bazy danych korzystające z płaskich plików........................................................................... 21 Czym jest baza danych .......................................................................................................... 23 Typy baz danych .................................................................................................................... 23 Języki zapytań........................................................................................................................ 27 System zarządzania bazą danych .......................................................................................... 30 Czym jest MySQL................................................................................................................... 31 Krótka historia MySQL ..................................................................................................... 31 Architektura MySQL ......................................................................................................... 32 Licencja open source ............................................................................................................ 33 Zasoby .................................................................................................................................. 34 Rozdział 2. Podstawy relacyjnych baz danych ...............................................................................35 Arkusze kalkulacyjne ............................................................................................................. 35 Terminologia .................................................................................................................... 36 Ograniczenia arkuszy ....................................................................................................... 37 Różnice pomiędzy arkuszem i bazą danych ........................................................................... 38 Wybór kolumn .................................................................................................................. 39 Wybór typów danych dla kolumn ...................................................................................... 39 Jednoznaczne identyfikowanie wierszy............................................................................. 40 Kolejność wierszy ............................................................................................................ 41 Umieszczanie danych w bazie danych ................................................................................... 41 Dostęp przez sieć ............................................................................................................ 41 Danych cięcie i gięcie ...................................................................................................... 43 Podstawy projektowania baz danych z wykorzystaniem wielu tabel ....................................... 45 Relacje między tabelami........................................................................................................ 46 Projektowanie tabel ............................................................................................................... 49 Kilka podstawowych zasad .............................................................................................. 49 Baza danych „Klienci i zamówienia”...................................................................................... 51 Rozszerzamy bazę danych ............................................................................................... 52 Uzupełnianie projektu bazy danych .................................................................................. 54
  • 3. 4 Bazy danych i MySQL. Od podstaw Podstawowe typy danych....................................................................................................... 57 NULL................................................................................................................................ 57 Przykładowa baza danych ...................................................................................................... 59 Podsumowanie ...................................................................................................................... 60 Rozdział 3. Instalowanie i uruchamianie MySQL ..............................................................................61 Instalacja czy uaktualnienie?................................................................................................. 61 Instalowanie MySQL z pakietu binarnego dla Linuksa lub Uniksa.......................................... 63 Instalowanie MySQL z kodu źródłowego ................................................................................ 67 Instalowanie MySQL w systemie Windows ............................................................................ 82 Instalowanie MySQL z pakietu binarnego dla Windows.................................................... 82 Podsumowanie ...................................................................................................................... 88 Rozdział 4. Dostęp do danych.........................................................................................................89 Wykorzystanie narzędzia mysql.............................................................................................. 90 Proste wyrażenia SELECT ...................................................................................................... 93 Przesłanianie nazw kolumn.............................................................................................. 96 Ustalanie kolejności wierszy ............................................................................................ 96 Eliminowanie duplikatów.................................................................................................. 98 Wykonywanie obliczeń ......................................................................................................... 101 Wybór wierszy...................................................................................................................... 102 Bardziej skomplikowane wyrażenia ................................................................................ 105 Dopasowanie wzorców................................................................................................... 107 Ograniczanie wyniku ...................................................................................................... 108 Porównanie różnych typów danych ................................................................................. 109 Operacje na danych dotyczących dat i czasu ................................................................. 112 Funkcje daty i czasu ...................................................................................................... 113 Wielokrotne złączenia tabel ................................................................................................. 117 Łączenie dwóch tabel .................................................................................................... 117 Synonimy nazw tabel ..................................................................................................... 122 Łączenie trzech tabel ..................................................................................................... 123 Podsumowanie .................................................................................................................... 127 Rozdział 5. Narzędzia graficzne dla MySQL ...................................................................................129 mysql................................................................................................................................... 130 Uruchamianie mysql ...................................................................................................... 130 Polecenia w mysql ......................................................................................................... 130 Historia poleceń ............................................................................................................ 131 Skrypty w mysql ............................................................................................................. 131 Poznawanie bazy danych................................................................................................ 133 Parametry wiersza poleceń ............................................................................................ 133 Polecenia wewnętrzne ................................................................................................... 135 KSql i KMySQL .................................................................................................................... 135 Przeglądarka tabel ......................................................................................................... 137 Eksport HTML ................................................................................................................ 138 Edytor formularzy ........................................................................................................... 140 MySQLGUI ........................................................................................................................... 141 ODBC................................................................................................................................... 143 Microsoft Access................................................................................................................. 148 Tabele połączone........................................................................................................... 149 Wprowadzanie danych ................................................................................................... 151 Raporty .......................................................................................................................... 153
  • 4. Spis treści 5 Microsoft Excel.................................................................................................................... 153 Zasoby ................................................................................................................................ 157 Podsumowanie .................................................................................................................... 158 Rozdział 6. Modyfikacja danych....................................................................................................159 Dodawanie danych do bazy danych ..................................................................................... 159 Instrukcja INSERT .......................................................................................................... 160 Wstawianie danych do kolumn typu AUTO_INCREMENT................................................. 164 Wstawianie wartości NULL............................................................................................. 167 Polecenie LOAD DATA .................................................................................................... 169 Ładowanie danych za pomocą mysqlimport ................................................................... 172 Bezpośrednie ładowanie danych z innych aplikacji ........................................................ 174 Aktualizacja bazy danych za pomocą instrukcji UPDATE ...................................................... 176 Usuwanie wierszy za pomocą instrukcji DELETE .................................................................. 179 Podsumowanie .................................................................................................................... 181 Rozdział 7. Zaawansowana selekcja danych .................................................................................183 Funkcje agregujące.............................................................................................................. 184 COUNT() ......................................................................................................................... 184 Funkcja MIN()................................................................................................................. 192 Funkcja MAX() ................................................................................................................ 193 Funkcja SUM()................................................................................................................ 194 Funkcja AVG()................................................................................................................. 194 Złączenia UNION ................................................................................................................. 195 Złączenia własne ................................................................................................................. 197 Złączenia zewnętrzne .......................................................................................................... 199 Podzapytania ....................................................................................................................... 202 Typy podzapytań ............................................................................................................ 203 Podzapytania skojarzone ............................................................................................... 205 Zastępowanie podzapytań ................................................................................................... 207 Podsumowanie .................................................................................................................... 210 Rozdział 8. Definiowanie danych i manipulacja nimi .......................................................................213 Typy danych......................................................................................................................... 214 Typ logiczny.................................................................................................................... 214 Typy znakowe................................................................................................................. 215 Typy numeryczne............................................................................................................ 219 Data oraz czas............................................................................................................... 221 Operatory ............................................................................................................................ 222 Kolejność i łączenie operatorów .................................................................................... 223 Konwersje typów............................................................................................................ 229 Zmienne specjalne ........................................................................................................ 230 Funkcje wbudowane ............................................................................................................ 231 Operacje na tabelach .......................................................................................................... 235 Tworzenie tabel.............................................................................................................. 235 Typy tabel MySQL .......................................................................................................... 241 Modyfikacja tabel........................................................................................................... 242 Usuwanie tabel .............................................................................................................. 246 Tabele tymczasowe........................................................................................................ 246 Klucze obce......................................................................................................................... 247 Deklarowanie kluczy obcych........................................................................................... 249 Opcje kluczy obcych ....................................................................................................... 253 Podsumowanie .................................................................................................................... 254
  • 5. 6 Bazy danych i MySQL. Od podstaw Rozdział 9. Transakcje i blokowanie ............................................................................................255 Czym są transakcje? ........................................................................................................... 256 Zasady ACID .................................................................................................................. 259 Obsługa transakcji dla jednego użytkownika........................................................................ 260 Obsługa transakcji dla wielu użytkowników ......................................................................... 261 Poziomy izolacji ANSI ..................................................................................................... 261 Definicje ANSI/ISO......................................................................................................... 266 Ograniczenia transakcji.................................................................................................. 266 MySQL i transakcje ............................................................................................................. 267 MySQL i tabele MyISAM................................................................................................. 267 MySQL i tabele InnoDB .................................................................................................. 271 Zakleszczenia...................................................................................................................... 276 Podsumowanie .................................................................................................................... 278 Rozdział 10. Administrowanie MySQL ...........................................................................................279 Uruchamianie i zatrzymywanie serwera bazy danych ........................................................... 279 Windows ........................................................................................................................ 280 Linux .............................................................................................................................. 282 Wersje serwera.............................................................................................................. 284 Dodawanie i usuwanie baz danych ................................................................................ 285 Konfigurowanie użytkowników ............................................................................................. 285 Konto administratora bazy danych — root..................................................................... 285 Zarządzanie uprawnieniami użytkowników ........................................................................... 290 Tworzenie kont użytkowników ........................................................................................ 290 Odbieranie uprawnień .................................................................................................... 295 Plik śladu serwera ......................................................................................................... 297 Pliki konfiguracyjne.............................................................................................................. 297 Ustawienia serwera ....................................................................................................... 297 Pierwotne pliki konfiguracyjne........................................................................................ 298 Pliki InnoDB ................................................................................................................... 301 Przeglądanie baz danych................................................................................................ 303 Kopie zapasowe .................................................................................................................. 303 Podsumowanie .................................................................................................................... 307 Rozdział 11. Projektowanie bazy danych.......................................................................................309 Rozpoznanie problemu ........................................................................................................ 309 Cechy dobrego projektu bazy danych................................................................................... 310 Przechowywanie wymaganych danych ............................................................................ 311 Tworzenie wymaganych relacji........................................................................................ 311 Rozwiązywanie problemów ............................................................................................. 311 Wymuszenie integralności danych ................................................................................. 312 Efektywny dostęp do danych.......................................................................................... 312 Rozszerzalność .............................................................................................................. 313 Etapy projektowania ............................................................................................................ 313 Zbieranie informacji ....................................................................................................... 313 Projekt logiczny .............................................................................................................. 314 Określanie relacji i liczebności....................................................................................... 319 Konwersja do modelu fizycznego......................................................................................... 324 Tworzenie kluczy głównych............................................................................................. 324 Tworzenie kluczy obcych ................................................................................................ 326
  • 6. Spis treści 7 Ustalanie typów danych ................................................................................................. 328 Dokończenie definicji tabel ............................................................................................ 330 Sprawdzenie projektu .................................................................................................... 331 Postacie normalne .............................................................................................................. 332 Pierwsza postać normalna ............................................................................................. 332 Druga postać normalna ................................................................................................. 333 Trzecia postać normalna................................................................................................ 333 Często stosowane wzorce projektowe ................................................................................. 334 Relacje wiele-do-wielu .................................................................................................... 334 Hierarchia ...................................................................................................................... 335 Relacje rekurencyjne...................................................................................................... 335 Zasoby ................................................................................................................................ 337 Podsumowanie .................................................................................................................... 338 Rozdział 12. Dostęp do MySQL z programów napisanych w językach C i C++ ................................339 Użycie biblioteki libmysqlclient ............................................................................................ 340 Połączenie z bazą danych.................................................................................................... 341 Kontrola błędów .................................................................................................................. 346 Wykorzystanie pliku Makefile ......................................................................................... 346 Dalsze informacje .......................................................................................................... 347 Zarządzanie połączeniami do serwera ................................................................................. 348 Wykonywanie zapytań SQL za pomocą libmysqlclient .......................................................... 350 Transakcje........................................................................................................................... 355 Pobieranie danych zwracanych przez zapytania.............................................................. 356 Przeglądanie zbioru wynikowego.......................................................................................... 361 Operacje bez użycia kursorów ............................................................................................. 362 Podsumowanie funkcji API ............................................................................................. 363 Dostęp do MySQL z programów napisanych w języku C++ .................................................. 365 Mysql++ .............................................................................................................................. 366 Instalacja Mysql++ ........................................................................................................ 366 Kompilowanie programów z użyciem Mysql++ ............................................................... 367 Obiekty klasy Connection............................................................................................... 368 Wyjątki ........................................................................................................................... 371 Zapytania....................................................................................................................... 371 Zbiory wynikowe............................................................................................................. 373 Obiekty Query ................................................................................................................ 377 Szablony zapytań ........................................................................................................... 378 Zasoby ................................................................................................................................ 379 Podsumowanie .................................................................................................................... 379 Rozdział 13. Dostęp do MySQL z programów napisanych w języku PHP..........................................381 Dołączenie do PHP modułu wsparcia dla MySQL................................................................. 382 Używanie PHP API z MySQL ................................................................................................. 383 Połączenia z bazą danych .............................................................................................. 386 Operacje na zbiorze wynikowym ..................................................................................... 390 Obsługa błędów ............................................................................................................. 404 Używanie interfejsu Database Abstraction w PEAR ........................................................ 412 Podsumowanie .................................................................................................................... 419
  • 7. 8 Bazy danych i MySQL. Od podstaw Rozdział 14. Dostęp do MySQL z programów napisanych w języku Perl .........................................421 Perl DBI ............................................................................................................................... 422 Instalowanie DBI oraz MySQL DBD ................................................................................ 423 Korzystanie z DBI........................................................................................................... 425 Wykorzystanie DBIx::Easy .............................................................................................. 453 Podsumowanie .................................................................................................................... 455 Rozdział 15. Dostęp do MySQL z programów napisanych w języku Java .......................................457 Wstęp do JDBC.................................................................................................................... 458 Sterowniki JDBC .................................................................................................................. 458 Typ 1 — Mostek JDBC-ODBC ......................................................................................... 459 Typ 2 — Połączenie własnego API z kodem Java ........................................................... 459 Typ 3 — Realizacja protokołu sieciowego przy pomocy kodu Java................................. 459 Typ 4 — Kod języka Java realizujący protokół systemu bazy danych.............................. 460 Kompilowanie sterownika JDBC dla MySQL......................................................................... 460 Interfejsy DriverManager oraz Driver.................................................................................... 461 java.sql.DriverManager .................................................................................................. 461 java.sql.Driver ................................................................................................................ 464 Połączenia........................................................................................................................... 466 Tworzenie wyrażeń ......................................................................................................... 466 Obsługa transakcji ......................................................................................................... 467 Metadane ...................................................................................................................... 468 Zbiory wynikowe JDBC ......................................................................................................... 470 Typy zbiorów wynikowych oraz współbieżność................................................................ 470 Przeglądanie zbiorów wynikowych .................................................................................. 471 Dostęp do danych wynikowych....................................................................................... 473 Zbiory wynikowe podlegające aktualizacji....................................................................... 474 Inne ważne metody ........................................................................................................ 476 Instrukcje JDBC ................................................................................................................... 476 Instrukcje....................................................................................................................... 477 Instrukcje przygotowywane............................................................................................. 481 Wyjątki i ostrzeżenia SQL .................................................................................................... 485 Aplikacja graficzna korzystająca z JDBC............................................................................... 485 Diagram klas.................................................................................................................. 486 Interakcja z systemem................................................................................................... 488 Podsumowanie .................................................................................................................... 499 Rozdział 16. Dodatkowe informacje i zasoby .................................................................................501 Nierelacyjne źródła danych .................................................................................................. 501 Terminologia baz danych ..................................................................................................... 502 Zasoby ................................................................................................................................ 504 Zasoby sieci................................................................................................................... 505 Narzędzia uniwersalne ................................................................................................... 505 Książki ........................................................................................................................... 506 Podsumowanie .................................................................................................................... 507 Dodatek A Ograniczenia bazy danych MySQL ...............................................................................509 Rozmiar bazy danych — bez ograniczeń ........................................................................ 510 Rozmiar tabeli — 64 TB – 16 PB ................................................................................... 510 Ilość wierszy w tabeli — 2^64....................................................................................... 511 Indeksy tabeli — 32 ...................................................................................................... 511
  • 8. Spis treści 9 Rozmiar kolumny — 16 MB – 4 GB................................................................................ 511 Ilość kolumn w tabeli — 1000....................................................................................... 511 Rozmiar wiersza — 4 GB ............................................................................................... 511 Ograniczenia innego rodzaju .......................................................................................... 512 Dodatek B Typy danych w MySQL..................................................................................................513 Typy numeryczne — dokładne ............................................................................................. 513 Typy numeryczne — przybliżone .......................................................................................... 514 Typy reprezentujące daty i czas ........................................................................................... 515 Typy znakowe ...................................................................................................................... 515 Inne typy.............................................................................................................................. 516 Dodatek C Składnia MySQL............................................................................................................517 Polecenia SQL w MySQL...................................................................................................... 517 Składnia SQL w MySQL ....................................................................................................... 517 Dodatek D Informator mysql........................................................................................................529 Opcje programu mysql wpisywane w wierszu poleceń ......................................................... 529 Polecenia wewnętrzne ......................................................................................................... 531 Dodatek E Schemat bazy danych i definicje tabel ..........................................................................533 Dodatek F Obsługa du ych obiektów ............................................................................................537 Obiekty BLOB ...................................................................................................................... 537 Dane binarne w polach BLOB......................................................................................... 538 Definicja BLOB w MyODBC............................................................................................. 538 Użycie GROUP BY na polach BLOB ................................................................................ 538 Programowanie pól BLOB .................................................................................................... 539 Skorowidz...................................................................................................................................541
  • 9. 10 Administrowanie MySQL W tym rozdziale zajmiemy się zarządzaniem serwerem MySQL. Sposób instalacji serwera został ju opisany w rozdziale 3. — „Instalowanie i uruchamianie MySQL”, ale konfigurację serwera opisaliśmy tam tylko pobie nie. W tym rozdziale poruszymy następujące tematy: n Uruchamianie i zatrzymywanie serwera bazy danych n Konfigurowanie u ytkowników n Zarządzanie uprawnieniami u ytkowników n Pliki konfiguracyjne n Kopie zapasowe Administrowanie bazą danych jest zło onym przedsięwzięciem; w tym rozdziale omówimy jedynie podstawy administracji serwerem MySQL. Uruchamianie i zatrzymywanie serwera bazy danych Pomiędzy programem korzystającym z bazy danych a danymi zawartymi w tej bazie znajduje się kilka procesów zarządzających dostępem do danych. Zanim program kliencki będzie mógł uzyskać dostęp do danych, uruchomiony musi zostać proces serwera, co opisaliśmy w rozdziale 3. Wyłączając komputer musisz zapewnić, e proces ten zostanie prawidłowo zatrzymany. W takim przypadku proces serwera mo e odpowiednio zamknąć bazę danych, zapisując wszystkie dane znajdujące się w buforze. Je eli nie pozwolisz prawidłowo zamknąć bazy danych, ryzykujesz uszkodzeniem zapisanych w niej danych. Zapewnienie prawidłowego zamknięcia bazy danych jest jedną z najważniejszych czyn- ności, o których należy pamiętać w pracy z serwerem MySQL.
  • 10. 280 Bazy danych i MySQL. Od podstaw Najszybszą metodą sprawdzenia, czy lokalny serwer działa, jest uruchomienie programu mysqladmin z opcją ping: =TKEM"IY TKEM? O[USNCFOKP RKPI O[USNF KU CNKXG =TKEMIY TKEM? Aby uzyskać bardziej wyczerpujący raport, mo na zamiast opcji ping u yć version, co spo- woduje wyświetlenie informacji o wersji uruchomionego serwera, czasie jego pracy oraz innych. Gdy ju wiemy, jak sprawdzić, czy serwer działa, zapoznamy się ze sposobami jego urucha- miania. Metody uruchamiania i zatrzymywania serwera zale ą od rodzaju systemu opera- cyjnego, pod kontrolą którego pracuje serwer. Na początek zajmiemy się systemem Windows, a później Linux i Unix. Windows Je eli serwer MySQL działa w systemie Windows, najprawdopodobniej po zainstalowaniu programu i ponownym uruchomieniu komputera serwer zostanie uruchomiony, a podczas zamykania systemu automatycznie zatrzymany. Działanie takie zostało osiągnięte dzięki temu, e w Windows NT, 2000 i XP serwer MySQL jest domyślnie instalowany jako stan- dardowa usługa systemu. Mo na to zobaczyć, przeglądając zawartość okna Usługi dostępnego w Panelu sterowania (dokładna lokalizacja zale y od wersji Windows). Jak widać, usługa MySQL jest uruchamiana automatycznie. Na górnym rysunku na następnej stronie pokazana jest lista usług dostępnych w systemie Windows 2000. Dzięki takiemu ustawieniu operacje uruchamiania i zatrzymywania serwera są automatycznie wykonywane przez system operacyjny. Program WinMySQLManager, znajdujący się w podkatalogu bin katalogu z instalacją MySQL, pozwala na sprawowanie kontroli nad serwerem MySQL na dosyć wysokim poziomie. Zapew- nia on wygodny interfejs do zarządzania serwerem. Po uruchomieniu tego programu zauwa ysz, e po wyświetleniu okna wskazującego na start programu właściwie niewiele więcej się stało. Je eli jednak przyjrzysz się dokładniej, odszukasz małą ikonę przedstawiającą sygnaliza- tor świateł drogowych, umieszczoną w zasobniku systemowym. Zielone światło sygnalizuje działanie serwera MySQL. Je eli klikniesz tę ikonę prawym klawiszem myszy i wybierzesz pozycję menu Show me, na ekranie poka e się pełne okno programu WinMySQLAdmin (patrz dolny rysunek na następnej stronie). Okno to zawiera podstawowe informacje na temat platformy i wersji serwera. Na kolejnych zakładkach znajdziesz wiele szczegółowych informacji na temat statusu i konfiguracji serwera. Na przykład na zakładce Report mo na wygenerować raport zawierający wiele informacji na temat działającego serwera. Jest to szczególnie u yteczne w przypadku, gdy występują kłopoty z prawidłowym działaniem serwera. Bardzo przydatną zakładką jest Databases. Pozwala ona na przeglądanie informacji na temat baz danych, tabel w nich zawartych, a nawet definicji kolumn. Na rysunku na stronie 282 pokazana została definicja tabeli customer w bazie danych bmsimple.
  • 11. Rozdział 10. n Administrowanie MySQL 281
  • 12. 282 Bazy danych i MySQL. Od podstaw Klikając prawym klawiszem myszy na ikonie świateł drogowych mo na dostać się do dodat- kowych funkcji, dostępnych w podręcznym menu. Opcje te pozwalają na ręczne urucho- mienie i zatrzymanie usługi; po zatrzymaniu usługi mo na usunąć usługę MySQL. Linux Nieco inaczej sprawuje się kontrolę nad serwerem MySQL w systemie Linux. Metoda zale y od tego, czy zainstalowałeś serwer korzystając z plików źródłowych, czy z gotowego pakietu, na przykład RPM dla systemów Red Hat lub SuSE Linux. Najłatwiejszy sposób kontroli serwera jest dostępny w przypadku instalacji z pakietu instala- cyjnego. Je eli wykonałeś taką instalację, najprawdopodobniej zainstalowane zostały odpo- wiednie skrypty słu ące do uruchamiania i zatrzymywania serwera. Dokładna lokalizacja tych skryptów zale y od dystrybucji. W przypadku Red Hat Linux jest to katalog /etc/rc.d/init.d. Zwykle system Linux posiada zdefiniowane odpowiednie poziomy działania (runlevel). Najczęściej numerem 3 oznacza się poziom umo liwiający pracę w środowisku tekstowym, z obsługą wielu u ytkowników i sieci, natomiast numerem 5 poziom z uruchomionym śro- dowiskiem graficznym. W większości systemów ustawienia domyślne są określone w pliku /etc/inittab. Gdy system przechodzi na nowy poziom (lub opuszcza go), wykonywany jest zestaw skryptów przypisanych do tego poziomu. Zwykle są one umieszczone w katalogu /etc/rc.d/rcN.d, gdzie N jest numerem poziomu. Skrypty te są najczęściej dołączeniami symbolicznymi do skryptów z katalogu /etc/rc/d/init.d. Nazwy skryptów wykonywanych w celu uruchomienia poziomu zaczynają się od litery S, po której znajduje się liczba wskazująca na kolejność wykonywania skryptów. Pełny opis poziomów działania oraz skryptów startowych
  • 13. Rozdział 10. n Administrowanie MySQL 283 wykracza poza ramy tej ksią ki. Więcej informacji mo esz znaleźć na stronie podręcznika man dla programu init, w dokumentacji HOWTO lub w ksią kach poświęconych admini- stracji systemem Linux. Najprostszą metodą ustalenia poziomu działania, na którym będzie uruchamiany serwer MySQL jest u ycie odpowiedniego narzędzia graficznego. W systemie Red Hat 7.2 mo na skorzystać z programu Serviceconf, znajdującego się w menu Programs, System, Serviceconf dla GNOME lub Red Hat, System, Serviceconf dla KDE. Po uruchomieniu programu widzisz listę dostępnych usług z polami wyboru pozwalającymi określić, czy dany program będzie uruchamiany na wybranym poziomie. Na poni szym rysunku przedstawiono wygląd okna Service Configuration w systemie dzia- łającym na poziomie 3., z wybranym serwerem MySQL. Aby potwierdzić, e MySQL działa, mo na napisać w wierszu poleceń: RU GN ^ ITGR O[USNF i sprawdzić, czy jest uruchomiony program mysqld. Je eli instalując MySQL korzystałeś z plików źródłowych, musisz wykonać nieco więcej czynności. Na początek musisz odszukać skrypt mysql_start_stop, który powinien znajdować się w podkatalogu bin katalogu bazowego programu MySQL. Mo esz u yć go do stworzenia własnego skryptu kontrolnego; w wielu przypadkach nie musisz go ju potem modyfikować. Skopiuj ten skrypt do katalogu ze skryptami wykonywanymi w momencie startu systemu (w Red Hat Linux jest to /etc/rc.d/init.d), a następnie korzystając z Twojego ulubionego narzę- dzia zmień konfigurację tak, aby skrypt startowy był uruchamiany na wymaganym poziomie. Mo esz w tym celu wykorzystać wspomniany wcześniej program serviceconf, a je eli wolisz narzędzia tekstowe, mo esz u yć programu chkconfig, który pozwala na wygodne zarzą- dzanie programami uruchamianymi na określonych poziomach pracy.
  • 14. 284 Bazy danych i MySQL. Od podstaw Je eli chcesz dodać skrypt mysql do programów uruchamianych w chwili przechodzenia na poziom 3, mo esz skopiować ten skrypt do katalogu /etc/rc.d/init.d, a następnie — za pomocą polecenia EJMEQPHKI NGXGN O[USN — spowodować, e będzie on uruchamiany na pozio- mie 3. Więcej informacji na ten temat mo esz znaleźć na stronie podręcznika man chkconfig. Mo esz oczywiście ręcznie uruchamiać i zatrzymywać serwer, ale uruchamianie automa- tyczne zmniejsza ryzyko przypadkowego wyłączenia komputera bez zatrzymania serwera bazy danych. Wersje serwera W przypadku systemu Linux, instalując serwer MySQL musiałeś wybrać odpowiedni pakiet do instalacji. Do wyboru miałeś standardowy pakiet serwera oraz opcjonalny pakiet max. Pakiet max jest wymagany w przypadku, gdy oprócz standardowych tabel MyISAM chcesz korzystać z tabel typu InnoDB lub BDB. Zalecamy zainstalowanie standardowego pakietu serwera oraz pakietu max. Je eli samodzielnie kompilowałeś MySQL, korzystając z plików źródłowych, w trakcie konfi- gurowania kompilacji decydujesz, które opcje serwera będą Ci potrzebne (patrz rozdział 3.). Począwszy od MySQL 4.0, domyślnie dołączana jest obsługa tabel InnoDB. Po wykonaniu programów configure, make oraz make install zostaje zainstalowana odpowiednia wersja programu serwera. W przypadku Windows sprawa nieco się komplikuje, poniewa zwykle w pakiecie instalacyj- nym znajduje się kilka wersji serwera, a u ytkownik musi wybrać odpowiadającą mu wersję. Operacje tę mo na wykonać za pomocą programu WinMySQLAdmin, korzystając z opcji na zakładce my.ini Setup (patrz rysunek na następnej stronie). Po lewej stronie okna przedstawionego na rysunku na następnej stronie znajdują się nazwy do- stępnych serwerów. Aby zmienić wersję serwera, nale y wykonać następujące kroki: n Wybierz nowy typ serwera. n Zatrzymaj usługę. n Usuń usługę. n Zainstaluj usługę. n Uruchom usługę. Mo na to wykonać korzystając z wiersza poleceń, uruchamiając stary program z parametrem TGOQXG, a następnie nową wersję programu serwera z opcją KPUVCNN, co spowoduje zain- stalowanie podanego w poleceniu pliku jako nowej usługi MySQL. Więcej informacji na ten temat znajduje się w podręczniku MySQL. Sugerujemy u ycie wersji serwera mysqld-max- -NT, jak jest to pokazane na rysunku na następnej stronie. Je eli chcesz korzystać z tabel InnoDB, których u ywaliśmy w rozdziale 9. — „Transakcje i blokowanie”, przy omawianiu transakcji oraz kluczy obcych, zalecamy korzystanie z wersji max lub max-nt.
  • 15. Rozdział 10. n Administrowanie MySQL 285 Dodawanie i usuwanie baz danych Dodawanie i usuwanie baz danych jest dosyć proste. Aby stworzyć bazę danych, nale y wykonać instrukcję: %4'#6' #6#$#5' PCYCADC[ Aby usunąć bazę danych, nale y wykonać: 412 #6#$#5' PCYCADC[ Aby wykonać te operacje, u ytkownik podłączony do serwera musi posiadać odpowiednie uprawnienia, o których napiszemy w kolejnym podrozdziale. Konfigurowanie u ytkowników Teraz, gdy nasz serwer bazy danych jest automatycznie uruchamiany i — co wa niejsze — automatycznie zatrzymywany, mo emy zająć się opisem konfigurowania u ytkowników. Konto administratora bazy danych — root Podczas instalowania serwera MySQL tworzone są dwa konta u ytkowników — domyślne konto administratora oraz konto anonimowe. Konto administratora nosi nazwę root, ale nie jest to konto związane w jakikolwiek sposób z kontem w systemie Linux o tej samej nazwie.
  • 16. 286 Bazy danych i MySQL. Od podstaw Domyślnie u ytkownik root nie ma hasła oraz posiada pełną kontrolę nad bazą danych. Pierwszą czynnością powinno być przydzielenie hasła dla tego u ytkownika. Istnieje kilka sposobów ustawienia hasła u ytkownika. Opiszemy tutaj dwa z nich: za pomocą programu mysqladmin oraz poprzez bezpośrednią zmianę danych u ytkownika w bazie danych. Ustawienie hasła u ytkownika root (administratora) za pomocą programu mysqladmin wygląda następująco: O[USNCFOKP WUGTTQQV RCUUYQTF PQYGJCU Q Na przykład: =TKEMIY DO[US? O[USNCFOKP WUGTTQQV RCUUYQTF UGETGV =TKEMIY DO[US? Po ustawieniu hasła mo na je zmieniać za pomocą programu mysqladmin, ale w takim przy- padku nale y podać poprzednie hasło za pomocą opcji RCUUYQTFUVCTGAJCU Q. Sposób tworzenia domyślnych u ytkowników powoduje, e dla ka dego u ytkownika wystę- pują zwykle dwie pozycje — jedna do logowania lokalnego oraz druga do logowania przez sieć. Program ustawia hasło dla wykorzystywanej metody logowania, co mo e spowodo- wać, e baza danych nie będzie zabezpieczona tak dobrze, jak się tego mogłeś spodziewać. Z tego powodu zalecamy wykorzystanie innej metody zmiany hasła, która wymaga zalogo- wania się do bazy danych. Je eli nie ustawiałeś jeszcze hasła u ytkownika root, mo esz zalogować się jako admini- strator w następujący sposób: =TKEMIY TKEM? O[USN WUGTTQQV 9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ QT I ;QWT /[53. EQPPGEVKQP KF KU VQ UGTXGT XGTUKQP CNRJC 6[RG JGNR QT J HQT JGNR 6[RG E VQ ENGCT VJG DWHHGT O[USN Je eli skorzystałeś ju z programu mysqladmin do ustawienia hasła, musisz podać hasło, dodając parametr RCUUYQTFJCU Q, lub lepiej (nikt nie będzie mógł wtedy podejrzeć hasła) parametr R, co spowoduje, e program mysql zapyta o hasło: =TKEMIY TKEM? O[USN WUGTTQQV R 'PVGT RCUUYQTF
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23. 9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ QT I ;QWT /[53. EQPPGEVKQP KF KU VQ UGTXGT XGTUKQP CNRJC 6[RG JGNR QT J HQT JGNR 6[RG E VQ ENGCT VJG DWHHGT O[USN Poniewa jesteśmy podłączeni do serwera bazy danych jako u ytkownik root, mamy uprawnienia do wykonania dowolnego polecenia we wszystkich bazach danych. Wybieramy bazę danych mysql, która zawiera tabele systemowe, w tym tabele wykorzystywane przy sprawdzaniu uprawnień u ytkowników:
  • 24. Rozdział 10. n Administrowanie MySQL 287 O[USN WUG O[USN 4GCFKPI VCDNG KPHQTOCVKQP HQT EQORNGVKQP QH VCDNG CPF EQNWOP PCOGU ;QW ECP VWTP QHH VJKU HGCVWTG VQ IGV C SWKEMGT UVCTVWR YKVJ # CVCDCUG EJCPIGF O[USN Teraz zmieniamy hasło dla u ytkownika root, poprzez zmianę wartości w tabeli user: O[USN 72#6' WUGT 5'6 RCUUYQTF2#55914 UGETGVRCUUYQTF 9*'4' WUGT TQQV 3WGT[ 1- TQYU CHHGEVGF UGE 4QYU OCVEJGF %JCPIGF 9CTPKPIU O[USN Jest to zwykła instrukcja 72#6', wykorzystująca funkcję 2#55914 . Instrukcja ta wymaga podania nowego hasła (ciągu znaków) i zwraca je w postaci zaszyfrowanej. Zwróć uwagę na to, e zmienione zostały dwa wiersze; powód tego przedstawimy za chwilę. Zaszyfro- wane hasło jest zapisywane w tabeli user. Korzystając z tej metody mo emy ustawić hasło dla dowolnego u ytkownika, poniewa administrator posiada wszystkie prawa do tej tabeli. Aby wprowadzone zmiany zaczęły obowiązywać, musimy wykonać instrukcję (.75* 24+8+.')'5: O[USN (.75* 24+8+.')'5 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Instrukcja ta powoduje, e MySQL ponownie wczytuje uprawnienia u ytkowników do we- wnętrznych buforów. Popatrzmy na fragment tabeli user: O[USN 5'.'%6 WUGT JQUV RCUUYQTF (41/ WUGT ^ WUGT ^ JQUV ^ RCUUYQTF ^ ^ TQQV ^ NQECNJQUV ^ GGFCCE ^ ^ TQQV ^ IY ^ GGFCCE ^ ^ ^ NQECNJQUV ^ ^ ^ ^ IY ^ ^ TQYU KP UGV UGE O[USN Jak widać, u ytkownik root posiada ustawione hasło, ale występują dla tego u ytkownika dwie pozycje. Obie zawierają to samo zaszyfrowane hasło (zignoruj na razie pozycje bez nazwy u ytkownika, omówimy je nieco później). Powodem powstania podwójnych wpisów jest praca w sieci. Hasło wykorzystywane do połączenia się z MySQL mo e być inne dla połączeń realizowanych z lokalnego komputera i inne dla komputera lub grupy komputerów w sieci. Nasz komputer posiada nazwę gw1, ale podczas instalacji serwera MySQL dodany
  • 25. 288 Bazy danych i MySQL. Od podstaw został wpis dla komputera localhost (nazwa lokalnego połączenia). W niektórych instala- cjach zamiast localhost mo e znajdować się tu adres IP 127.0.0.1. Mo liwe jest stworzenie kont u ytkowników, którzy posiadają prawo do zalogowania się do bazy danych z lokalnego komputera, ale nie mogą się zalogować z innych komputerów podłączonych do sieci. Dobrym pomysłem jest pozwolenie na logowanie się użytkownika root jedynie z kom- putera z serwerem MySQL. Zmniejsza to ryzyko zdobycia dostępu do serwera przez nieautoryzowanych użytkowników. Przywracanie hasła administratora Mo e zdarzyć się sytuacja, e konto administratora zostanie usunięte z serwera — albo z powodu uszkodzenia danych, albo przez błąd człowieka. Na szczęście istnieje kilka sposobów wyjścia z tej sytuacji. Je eli jesteś nadal zalogowany jako root, problem mo na łatwo naprawić. Przełącz się do bazy danych mysql i wstaw nowy wiersz dla u ytkownika root, komputera localhost, bez hasła i ze znakami Y w pozostałych kolumnach. Następnie ustaw hasło administratora w przedstawiony wcześniej sposób: 72#6' WUGT 5'6 RCUUYQTF2#55914 UGETGVRCUUYQTF 9*'4' WUGT TQQV Je eli nie jesteś zalogowany do bazy, istnieje kilka sposobów na naprawę sytuacji. Na początek musisz zatrzymać pracę serwera. W systemie Windows mo esz do zatrzymania serwera u yć programu WinMySQLAdmin; mo esz tak e zatrzymać usługę mysql ręcznie, korzystając z konta u ytkownika o prawach administratora. Równie w systemie Linux do uruchomienia skryptu zatrzymującego serwer musisz posiadać prawa administratora. Najlepszą metodą przywracania konta administratora jest ręczne uruchomienie procesu serwera ze specjalnym parametrem UMKRITCPVVCDNGU. Powoduje to, e serwer ignoruje tabele uprawnień i pozwala na zalogowanie się jako u ytkownik root bez konieczności poda- wania hasła. Dodatkowo musisz podać inne parametry, takie jak poło enie katalogu data. Na przykład po zainstalowaniu MySQL w katalogu /usr/local/mysql w systemie Linux powi- nieneś wydać następujące polecenie: WUTNQECNO[USNDKPO[USNFAUCHG UMKRITCPVVCDNGU FCVCFKTWUTNQECNO[USNXCT RKFHKNGWUTNQECNO[USNXCTIYRKF W systemie Windows mo na uruchomić serwer z wiesza poleceń w następujący sposób: O[USNFPV UVCPFCNQPG UMKRITCPVVCDNGU Je eli w systemie Linux instalowałeś serwer korzystając z plików źródłowych, istnieje jeszcze jeden sposób przywrócenia konta u ytkownika root (choć nie jest on zalecany). W czasie instalacji musiałeś wykonać skrypt o nazwie mysql_install_db. Skrypt ten tworzy tabele uprawnień, a jego powtórne wykonanie spowoduje utworzenie domyślnych tabel. Powoduje to jednak utratę wszystkich kont u ytkowników utworzonych w trakcie pracy z bazą danych. Jeżeli jest to tylko możliwe, do odtwarzania konta administratora zalecamy korzystanie z opcji --skip-grant-tables.
  • 26. Rozdział 10. n Administrowanie MySQL 289 Mo emy teraz uruchomić program mysql w zwykły sposób, podłączyć się do serwera bazy danych jako root bez konieczności podawania hasła i ponownie wykonać instrukcje, które odtworzą konto administratora. Następnie nale y zatrzymać serwer i uruchomić go ju w nor- malnym trybie, po czym w opisywany wcześniej sposób ustawić hasło u ytkownika root. Usuwanie domyślnego u ytkownika Bie ąca wersja MySQL instaluje domyślnego u ytkownika, który mo e podłączyć się do serwera z lokalnego komputera i korzystać z baz danych, których nazwy zaczynają się od test. Jest to wygodne w przypadku, gdy pierwszy raz instalujesz MySQL i chcesz sprawdzić, czy inni ni root u ytkownicy mogą podłączyć się do bazy. Zawsze istnieje jednak ryzyko, e na serwerze produkcyjnym pozostanie aktywne konto domyślnego u ytkownika, utwo- rzone w czasie instalacji. Z tego powodu sugerujemy usunięcie takiego konta natychmiast po stwierdzeniu, e baza danych działa prawidłowo. Aby to zrobić, zaloguj się do bazy jako root i uwa nie wykonaj następujące instrukcje: O[USN WUG O[USN 4GCFKPI VCDNG KPHQTOCVKQP HQT EQORNGVKQP QH VCDNG CPF EQNWOP PCOGU ;QW ECP VWTP QHH VJKU HGCVWTG VQ IGV C SWKEMGT UVCTVWR YKVJ # CVCDCUG EJCPIGF O[USN '.'6' (41/ WUGT 9*'4' WUGT 3WGT[ 1- TQYU CHHGEVGF UGE Je eli pomylisz się w poleceniu '.'6', mo esz usunąć z bazy danych swoje konto u yt- kownika. Sprawdź, czy usunięte zostały tylko dwa wiersze. Je eli przypadkowo usunąłeś własne konto, poszukaj w dalszej części tego rozdziału przykładu tworzenia nowego konta administratora i wykonaj podany w nim kod. Aby upewnić się, e wszystko zostało wykonane prawidłowo, sprawdźmy, czy w tabeli user znajduje się u ytkownik root, który mo e się logować z komputera localhost: O[USN 5'.'%6 WUGT JQUV (41/ WUGT 9*'4' WUGT TQQV ^ WUGT ^ JQUV ^ ^ TQQV ^ IY ^ ^ TQQV ^ NQECNJQUV ^ TQYU KP UGV UGE O[USN W wyniku tego zapytania powinien znajdować się co najmniej jeden wiersz zawierający wpisy root i localhost. Je eli wszystko zostało wykonane prawidłowo, mo emy za ądać przeładowania uprawnień przez serwer MySQL: O[USN (.75* 24+8+.')'5 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Konto domyślnego u ytkownika zostało usunięte.
  • 27. 290 Bazy danych i MySQL. Od podstaw Zarządzanie uprawnieniami u ytkowników Po zabezpieczeniu konta root mo emy zająć się tworzeniem kont zwykłych u ytkowników, nadawaniem uprawnień u ytkownikom oraz — gdy to konieczne — usuwaniem ich kont. Tworzenie kont u ytkowników Starsze wersje MySQL posiadały program mysqlaccess, który był przeznaczony do tworzenia kont u ytkowników w bazie danych. Jest on nadal dostępny, ale zalecamy korzystanie z nowego polecenia )4#06, które zostało wprowadzone w wersji 3.2.1. Omówimy tu tworzenie kont u ytkowników za pomocą polecenia )4#06 dostępnego w wierszu poleceń mysql. Istnieją niewielkie ró nice w działaniu polecenia )4#06 w wersjach 3.2.1 i 4.0 MySQL. W MySQL 3.2.1 nale ało jawnie nadawać u ytkownikom uprawnienia do dostępu do bazy danych (nadanie prawa dostępu do tabeli nie powodowało automatycznego nadania prawa dostępu do bazy danych). W wersji 4.0 nadanie prawa dostępu do co najmniej jednej tabeli w bazie danych powoduje umo liwienie dostępu do bazy danych. Instrukcja )4#06 ma dosyć prostą składnię, ale posiada wiele mo liwych opcji: )4#06 RTCYQ = NKUVC MQNWOP? 10 DCCANWDAVCDGNC 61 W [VMQYPKM =+'06+(+' $; JCU Q ? =9+6* )4#06 126+10? Zapoznamy się teraz z opcjami instrukcji )4#06 i ich praktycznym zastosowaniem. Popa- trzmy w tym celu na listę dostępnych uprawnień (patrz górna tabela na następnej stronie); jest ona dosyć długa: Kolejną częścią instrukcji )4#06 jest opcjonalna lista kolumn, która pozwala na określenie, do których kolumn będą stosowane nadane uprawnienia. Jest to u yteczne jedynie w przy- padku, gdy nadawane są uprawnienia do konkretnej tabeli; pozwala to jednak na bardzo precyzyjne określanie uprawnień do ró nych części bazy danych. W dalszej części roz- działu poka emy przykład praktycznego wykorzystania instrukcji )4#06 z listą kolumn. Następną częścią polecenia jest wyra enie DCCANWDAVCDGNC . Pozwala ono określić jeden z trzech poziomów dostępu, przy wykorzystaniu składni DCCAFCP[EJVCDGNC, gdzie znak
  • 28. słu y jako znak specjalny. Przykład przedstawiono w dolnej tabeli na następnej stronie. Kolejną częścią instrukcji jest nazwa u ytkownika. Jak wcześniej wspomnieliśmy, mo emy nadać ró ne uprawnienia dla u ytkownika, w zale ności od komputera, z którego podłącza się do bazy danych. Realizujemy to, korzystając z tej właśnie części instrukcji )4#06 oraz odpowiednio wypełniając pole host w tabeli user znajdującej się w bazie danych mysql. Nazwa u ytkownika składa się z trzech części — nazwy podawanej przy logowaniu się do bazy, symbolu oraz wyra enia określającego komputer. Je eli chcesz nadać u ytkowni- kowi uprawnienia obowiązujące jedynie w przypadku logowania realizowanego na kom- puterze, na którym działa proces serwera, podaną nazwą komputera musi być localhost. Je- eli chcesz nadać uprawnienia dla wszystkich komputerów, powinieneś u yć symbolu (wraz z apostrofami). Trzeba pamiętać o podaniu nazwy komputera w pojedynczych apo- strofach, poniewa bez nich uprawnienia nie zostaną nadane.
  • 29. Rozdział 10. n Administrowanie MySQL 291 Słowo kluczowe Znaczenie #.. Nadaje u ytkownikowi wszystkie wymienione dalej uprawnienia #.. 24+8+.')'5 Takie samo jak dla #.. #.6'4 Pozwala na wykonanie polecenia #.6'4 VCDGNC %4'#6' Pozwala na tworzenie baz danych i tabel '.'6' Pozwala na usuwanie danych z tabel 412 Pozwala na usuwanie baz danych i tabel (+.' Pozwala na dostęp do plików zapisanych na serwerze +0': Pozwala na zarządzanie indeksami +05'46 Pozwala na wstawianie danych do tabel 241%'55 Pozwala na przeglądanie informacji o procesie serwera 4'('4'0%'5 Jest to zarezerwowane słowo kluczowe; na razie nie ma przypisanego adnego działania 4'.1# Pozwala na powtórne załadowanie informacji z tabel uprawnień do serwera 5'.'%6 Pozwala na pobieranie danych z tabel 5*76190 Pozwala na zatrzymanie bazy danych 72#6' Pozwala na zmianę informacji w tabelach 75#)' Pozwala na utworzenie konta u ytkownika bez adnych uprawnień Poziom dostępu Znaczenie Nazwa bazy danych lub tabeli Zasięg nadawanego uprawnienia
  • 30. Wszystkie tabele we wszystkich bazach danych, w tym prawo do tworzenia nowych baz danych DOUKORNG
  • 31. Wszystkie tabele w bazie bmsimple, w tym prawo do utworzenia bazy danych o podanej nazwie DOUKORNGEWUVQOGT Tabela customer w bazie danych bmsimple Mo na równie określić dowolny komputer z domeny; na przykład aby nadać uprawnienia u ytkownikowi Deborah z dowolnego komputera w domenie docbox.co.uk, nazwę u ytkow- nika określamy jako FGDQTCJ FQEDQZEQWM . Mo na równie określać zakres kompute- rów, podając adres IP podsieci — na przykład FGDQTCJ — co umo liwi logowanie się z dowolnego komputera z podsieci klasy C o adresach rozpoczynających się od 192.168.100. Następna część instrukcji — +'06+(+' $; JCU Q — jest opcjonalna i u ywana jedynie w czasie tworzenia konta nowego u ytkownika; pozwala ona określić przypisane doń hasło. Je eli nadajesz prawa dla nieistniejącego u ytkownika i nie podasz opcji +'06+(+' $;, utworzony zostanie nowy u ytkownik bez hasła, co nie jest właściwe ze względu na bezpie- czeństwo serwera.
  • 32. 292 Bazy danych i MySQL. Od podstaw Ostatnią częścią instrukcji jest 9+6* )4#06 126+10. Część ta jest równie opcjonalna. Je eli zostanie podana, nowy u ytkownik będzie mógł przekazywać innym u ytkownikom upraw- nienia, które posiada. Mo e być to przydatne w przypadku du ej ilości u ytkowników, kiedy administrator przekazuje część odpowiedzialności za zarządzanie określonymi bazami danych innym u ytkownikom. Operacja taka musi być przemyślana. Działanie instrukcji )4#06 kumuluje się, więc mo na wykonać tę instrukcję kilkukrotnie, nadając u ytkownikowi kolejne uprawnienia. Pamiętaj, e aby zadziałały nowe uprawnienia, nale y wykonać instrukcję (.75* 24+8+.')'5. Instrukcja GRANT Utwórzmy konto u ytkownika Deborah, który posiada uprawnienia do połączenia się z kom- putera z domeny FQEDQZEQWM i dostęp tylko do tabel w bazie danych bmsimple: O[USN )4#06 #.. 10 DOUKORNG
  • 33. 61 FGDQTCJ FQEDQZEQWM +'06+(+' $; UGETGV 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Zauwa , e określenie komputera, z którego mo e się logować u ytkownik zostało ujęte w apostrofy, poniewa zawiera znak specjalny , u ywany do wybrania wszystkich kompute- rów z domeny docbox.co.uk. Poniewa nadaliśmy u ytkownikowi Deborah wszystkie uprawnienia, mo e on wykonywać wszystkie operacje na tabelach w bazie danych — w tym równie tworzyć nowe tabele. Je eli chcielibyśmy dać mu mo liwość korzystania z dowolnego komputera w sieci, powinniśmy skorzystać z instrukcji: )4#06 #.. 10 DOUKORNG
  • 34. 61 FGDQTCJ +'06+(+' $; UGETGV Je eli chcesz pozwolić u ytkownikowi Deborah na logowanie się z komputera, na którym działa serwer bazy danych, powinieneś wykonać osobną instrukcję )4#06, podając przy nazwie u ytkownika nazwę lokalnego komputera, czyli localhost: O[USN )4#06 #.. 10 DOUKORNG
  • 35. 61 FGDQTCJNQECNJQUV +'06+(+' $; UGETGV 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Po tych operacjach w tabeli mysql.user pojawiły się dwa wiersze: O[USN 5'.'%6 WUGT JQUV RCUUYQTF (41/ WUGT 9*'4' WUGT FGDQTCJ ^ WUGT ^ JQUV ^ RCUUYQTF ^ ^ FGDQTCJ ^ NQECNJQUV ^ H ^ ^ FGDQTCJ ^ FQEDQZEQWM ^ H ^ TQYU KP UGV UGE O[USN
  • 36. Rozdział 10. n Administrowanie MySQL 293 Kolejnym przykładem będzie utworzenie konta u ytkownika manager1, który będzie miał bardzo ograniczone uprawnienia. Załó my, e u ytkownik manager1 będzie mógł pobierać dane z niektórych kolumn tabeli customer, zapisanej w bazie danych bmsimple. Dodatkowo będzie mógł się zalogować tylko z komputera, na którym znajduje się baza danych. Aby zrealizować te zało enia, skorzystamy z prawa 5'.'%6, które umo liwia jedynie odczyty- wanie danych. Dodatkowo wymienimy nazwy kolumn, do których nadamy te uprawnienia. Korzystając z tych ograniczonych uprawnień u ytkownik manager1 mo e się podłączyć do bazy jako lokalny u ytkownik. O[USN )4#06 5'.'%6 VKVNG HPCOG NPCOG QP DOUKORNGEWUVQOGT 61 OCPCIGTNQECNJQUV +'06+(+' $; HQQ 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Sprawdźmy, czy nadane uprawnienia działają prawidłowo: =TKEMIY TKEM? O[USN WUGTOCPCIGT R 'PVGT RCUUYQTF
  • 37.
  • 38.
  • 39. 9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ QT I 6[RG JGNR QT J HQT JGNR 6[RG E VQ ENGCT VJG DWHHGT O[USN WUG O[USN '4414 #EEGUU FGPKGF HQT WUGT OCPCIGTNQECNJQUV VQ FCVCDCUG O[USN O[USN WUG DOUKORNG 4GCFKPI VCDNG KPHQTOCVKQP HQT EQORNGVKQP QH VCDNG CPF EQNWOP PCOGU ;QW ECP VWTP QHH VJKU HGCVWTG VQ IGV C SWKEMGT UVCTVWR YKVJ # CVCDCUG EJCPIGF O[USN U ytkownik manager1 mo e korzystać jedynie z bazy danych bmsimple. Nie ma natomiast praw do tabeli item, na której będzie pracował: O[USN 5'.'%6
  • 40. (41/ KVGO '4414 UGNGEV EQOOCPF FGPKGF VQ WUGT OCPCIGTNQECNJQUV HQT VCDNG KVGO O[USN Spróbujmy teraz wykonać zapytanie 5'.'%6 na tabeli customer. Zwróć uwagę na to, e w tym przypadku zwrócony jest nieco inny komunikat błędu, poniewa tym razem u ytkownik mo e korzystać z tabeli, ale u yty w poleceniu znak
  • 41. powoduje próbę dostępu do kolumn, do których nie posiada dostępu: O[USN 5'.'%6
  • 42. (41/ EWUVQOGT '4414 UGNGEV EQOOCPF FGPKGF VQ WUGT OCPCIGTNQECNJQUV HQT EQNWOP EWUVQOGTAKF KP VCDNG EWUVQOGT O[USN Jak widać, udało się nam nadać uprawnienia do poszczególnych pól tabeli. Wypróbujmy działanie innych kolumn z tabeli customer:
  • 43. 294 Bazy danych i MySQL. Od podstaw O[USN 5'.'%6 VKVNG HPCOG NPCOG (41/ EWUVQOGT 9*'4' NPCOG ,QPGU ^ VKVNG ^ HPCOG ^ NPCOG ^ ^ /T ^ CXG ^ ,QPGU ^ TQY KP UGV UGE O[USN Zwróć uwagę na to, e nie mo emy nawet utworzyć warunku (9*'4' EWUVQOGTAKF ) na kolumnie, do której nie posiadamy uprawnień do odczytu: O[USN 5'.'%6 VKVNG HPCOG NPCOG (41/ EWUVQOGT 9*'4' EWUVQOGTAKF '4414 UGNGEV EQOOCPF FGPKGF VQ WUGT OCPCIGTNQECNJQUV HQT EQNWOP EWUVQOGTAKF KP VCDNG EWUVQOGT O[USN Na koniec upewnimy się, e nie posiadamy uprawnień do dodawania nowych danych do tabeli customer: O[USN +05'46 +061 EWUVQOGT 8#.7'5 07.. /T /CVVJGY *CTXG[ VJG FTKXG 5NQYVQYP 56 *) '4414 KPUGTV EQOOCPF FGPKGF VQ WUGT OCPCIGTNQECNJQUV HQT VCDNG EWUVQOGT O[USN Zakończmy nasze eksperymenty utworzeniem konta u ytkownika, który posiadać będzie wszystkie uprawnienia u ytkownika root, w tym prawo do nadawania uprawnień innym u yt- kownikom. Umo liwimy mu ponadto logowanie się do serwera tylko z lokalnego komputera. Podłącz się do bazy danych jako root i wykonaj następującą instrukcję: O[USN )4#06 #.. 10
  • 44. 61 CFOKPNQECNJQUV +'06+(+' $; RCUUYQTF 9+6* )4#06 126+10 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Instrukcja ta tworzy nowe konto administratora, o nazwie admin247; posiada on te same uprawnienia, co właściwy u ytkownik root. Mo e być to niebezpieczne, ale niezbędne w sytu- acji, gdy usunąłeś konto u ytkownika root. Sytuacja taka utrudnia zadanie osobie, która usiłuje włamać się do systemu, poniewa teraz zamiast próbować odgadnąć hasło u ytkownika root, będzie musiała odgadnąć zarówno nazwę u ytkownika administrującego systemem, jak i jego hasło. Jak to działa? Instrukcja )4#06 zmienia dane w ró nych tabelach uprawnień zawartych w bazie danych mysql. Szczegółowy opis tych danych wykracza poza ramy tej ksią ki, jednak odczytywanie nazwy u ytkownika, komputera i hasła wydaje się być przydatne. Mo na w ten sposób stworzyć czytelną listę u ytkowników oraz komputerów, z których mogą się logować.
  • 45. Rozdział 10. n Administrowanie MySQL 295 Odbieranie uprawnień Odbieranie uprawnień wykonywane jest za pomocą instrukcji 4'81-', której składnia jest bardzo podobna do składni instrukcji )4#06: 4'81-' RTCYQ = NKUVCAMQNWOP? 10 DCCANWDAVCDGNC (41/ W [VMQYPKM Wszystkie opcje są identyczne, jak w przypadku instrukcji )4#06, mo na więc jawnie podać listę kolumn i odebrać uprawnienia na poziomie bazy danych lub na poziomie tabeli. Po wykonaniu instrukcji 4'81-' nale y u yć instrukcji: (.75* 24+8+.')'5 Powoduje to ponowne odczytanie tabel z uprawnieniami, dzięki czemu widoczne są efekty działania polecenia. Mo na wyświetlić wszystkie uprawnienia u ytkownika. W tym celu korzystamy z polecenia: 5*19 )4#065 (14 W [VMQYPKM na przykład: O[USN UJQY ITCPVU HQT TKEM ^ )TCPVU HQT TKEM ^ ^ )4#06 75#)' 10
  • 46. 61 TKEM +'06+(+' $; 2#55914 EGCFE ^ ^ )4#06 #.. 24+8+.')'5 10 DOUKORNG
  • 47. 61 TKEM ^ TQYU KP UGV UGE O[USN Aby instrukcja ta mogła zadziałać, u ytkownik musi mieć nadane uprawnienia. Odbieranie uprawnień Rozpoczniemy od utworzenia konta u ytkownika manager2, z nadanymi uprawnieniami do tabeli item: O[USN )4#06 5'.'%6 10 DOUKORNGKVGO 61 OCPCIGTNQECNJQUV 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Teraz zalogujemy się jako u ytkownik manager2 i sprawdzimy, czy mo emy odczytać dane z tabeli item: O[USN 5'.'%6
  • 48. (41/ KVGO ^ KVGOAKF ^ FGUETKRVKQP ^ EQUVARTKEG ^ UGNNARTKEG ^ ^ ^ 9QQF 2WNG ^ ^ ^ ^ ^ 4WDKM %WDG ^ ^ ^
  • 49. 296 Bazy danych i MySQL. Od podstaw ^ ^ .KPWZ % ^ ^ ^ ^ ^ 6KUUWGU ^ ^ ^ ^ ^ 2KEVWTG (TCOG ^ ^ ^ ^ ^ (CP 5OCNN ^ ^ ^ ^ ^ (CP .CTIG ^ ^ ^ ^ ^ 6QQVJDTWUJ ^ ^ ^ ^ ^ 4QOCP %QKP ^ ^ ^ ^ ^ %CTTKGT $CI ^ ^ ^ ^ ^ 5RGCMGTU ^ ^ ^ TQYU KP UGV UGE O[USN Zaloguj się ponownie jako root i odbierz uprawnienia: O[USN 4'81-' 5'.'%6 10 DOUKORNGKVGO (41/ OCPCIGTNQECNJQUV 3WGT[ 1- TQYU CHHGEVGF UGE O[USN (.75* 24+8+.')'5 3WGT[ 1- TQYU CHHGEVGF UGE O[USN Spróbujmy — znów jako manager2 — odczytać dane z tabeli item: O[USN 5'.'%6
  • 50. (41/ KVGO '4414 UGNGEV EQOOCPF FGPKGF VQ WUGT OCPCIGTNQECNJQUV HQT VCDNG KVGO O[USN Jak to działa? Instrukcja 4'81-' usuwa z tabel bazy danych mysql informacje na temat nadanych uprawnień. Zawsze sprawdzaj, czy udało się odebrać uprawnienia. W czasie, kiedy powstawała ta książka, implementacje )4#06 i 4'81-' były jeszcze nowe. Odbieranie uprawnień domyśl- nemu użytkownikowi tworzonemu przez MySQL może również działać w nieoczekiwany sposób. Je eli chcesz odebrać jakiemuś u ytkownikowi wszystkie uprawnienia, mo esz ręcznie usunąć jego konto z tabeli mysql.user; operacja daje efekt identyczny z usunięciem go z bazy danych: '.'6' (41/ WUGT 9*'4' WUGT PCYCAW [VMQYPKMCAFQAWUWPKGEKC Nale y rozwa nie wykonywać taką operację, poniewa nie usuwa ona uprawnień nadanych u ytkownikowi, lecz nie pozwala mu na podłączenie się do bazy danych. Uprawnienia, jakie posiadał, pozostają niezmienione i je eli kiedykolwiek ponownie utworzysz konto tego u ytkownika, mo e się okazać, e posiada on więcej uprawnień ni powinien.
  • 51. Rozdział 10. n Administrowanie MySQL 297 Plik śladu serwera Czasami występują problemy z pracą serwera. Aby dowiedzieć się, co stanowi przyczynę pro- blemu, musimy przejrzeć plik śladu serwera. Zwykle MySQL tworzy plik śladu o nazwie nazwakomputera.err, który zawiera informacje o uruchomieniu i zatrzymaniu pracy. W przy- padku instalacji z plików źródłowych dla systemu Linux, na naszym komputerze gw1 ście ka dostępu do tego pliku to /usr/local/mysql/var/gw1.err, zaś sam plik zawiera następujące wpisy: O[USNF UVCTVGF +PPQ$ UVCTVGF WUTNQECNO[USNNKDGZGEO[USNF TGCF[ HQT EQPPGEVKQPU WUTNQECNO[USNNKDGZGEO[USNF 0QTOCN UJWVFQYP +PPQ$ 5VCTVKPI UJWVFQYP +PPQ$ 5JWVFQYP EQORNGVGF WUTNQECNO[USNNKDGZGEO[USNF 5JWVFQYP %QORNGVG /[53. GPFGF O[USNF UVCTVGF +PPQ$ UVCTVGF WUTNQECNO[USNNKDGZGEO[USNF TGCF[ HQT EQPPGEVKQPU W przypadku Windows wpisy te są niemal identyczne, ale plik ten zwykle nosi nazwę mysql.err i znajduje się w podkatalogu data katalogu, w którym zainstalowałeś MySQL. Pliki konfiguracyjne MySQL posiada kilka plików pozwalających na ustawienie opcji konfiguracji serwera. Pliki te umo liwiają równie określenie domyślnych parametrów dla programu mysqld i innych narzędzi dostarczanych wraz z MySQL. Poło enie i nazwy tych plików ró nią się pomiędzy systemem Linux i Windows, ale dane zawarte w tych plikach i zbiór dostępnych opcji są w obu systemach niemal identyczne. Korzystając z plików konfiguracyjnych mo na ustawić opcje zarówno dla serwera, jak i dla poszczególnych u ytkowników (w systemie Linux). Ustawienia serwera Ustawienia konfiguracji znajdują się w następujących plikach: Nazwa pliku Zawartość /etc/my.cnf Ustawienia konfiguracji w systemie Linux (UNIX) c:my.cnf Globalny plik konfiguracyjny w systemie Windows katalog Windowsmy.ini Dodatkowy lub alternatywny plik konfiguracyjny w systemie Windows
  • 52. 298 Bazy danych i MySQL. Od podstaw Nale y pamiętać, e w systemie Windows 2000 (i późniejszych wersjach) rozszerzenie .cnf jest skojarzone z programem Speeddial i z tego powodu mo e być ukrywane przez system. W Windows, je eli korzystasz z obu plików konfiguracyjnych — c:my.cnf i my.ini w katalogu Windows, oba pliki będą odczytane, po czym pozycje z pliku my.cnf zostaną zastąpione przez odpowiednie opcje z pliku my.ini. W programie WinMySQLAdmin dostępna jest opcja edycji pliku my.ini. W przypadku Windows mo na korzystać z dowolnego z tych dwóch plików, poza przypad- kiem, gdy zainstalowałeś MySQL w innym katalogu ni c:mysql. Nale y wtedy utworzyć plik c:my.cnf, w którym skonfigurowane zostaną niektóre krytyczne dla pracy programu ście ki. Pierwotne pliki konfiguracyjne Po zainstalowaniu MySQL tworzony jest przykładowy plik konfiguracyjny Katalog instalacji MySQLmy-example.cnf, a w przypadku samodzielnej kompilacji MySQL w katalogu katalog ze źródłami/support_files znajduje się kilka wariantów plików konfiguracyjnych. Pliki te są przykładami konfiguracji małego, średniego i du ego serwera. Je eli nie jesteś pewien, którego pliku powinieneś u yć, sugerujemy skorzystanie z pliku my-medium.cnf, który nale y skopiować do /etc/my.cnf. Format pliku konfiguracyjnego jest podobny do formatu pliku windows.ini: Opcja Znaczenie Rozpoczyna wiersz komentarza =ITWRC? Rozpoczyna grupę opcji 1RELC Ustawia opcję QRELCYCTVQ è Ustawia opcję na określoną wartość UGVXCTKCDNGPCYCAOKGPPGL PCFCYCPCAYCTVQ è Ustawia zmienną na określoną wartość Pierwsza sekcja jest przeznaczona dla programów klienckich i wygląda następująco: =ENKGPV? RCUUYQTFO[ARCUUYQTF RQTV Wpisany jest tu domyślny numer portu, który jest u ywany przez program kliencki do podłączania się do serwera. Nie zalecamy zmiany tego numeru! Mo na równie ustawić domyślne hasło dla programów klienckich, ale nie jest to rozwiązanie zbyt bezpieczne. Zale- camy zatem pozostawienie w tym wierszu komentarza. Kolejna sekcja jest zwykle konfiguracją serwera i jest du o bardziej skomplikowana. Jest to grupa mysqld: 6JG /[53. UGTXGT =O[USNF? RQTV UQEMGV/[53.
  • 53. Rozdział 10. n Administrowanie MySQL 299 UMKRNQEMKPI FGHCWNVEJCTCEVGTUGVNCVKP UGVXCTKCDNG MG[ADWHHGT/ UGVXCTKCDNG OCZACNNQYGFARCEMGV/ UGVXCTKCDNG VJTGCFAUVCEM- UGVXCTKCDNG HNWUJAVKOG Na początku grupy mysqld ustawiany jest numer portu, na którym nasłuchuje serwer, domyślny zestaw znaków i kilka parametrów konfiguracyjnych. Nie zalecamy zmiany tych ustawień. Kolejną częścią pliku są ustawienia dotyczące poło enia instalacji: 7PEQOOGPV VJG HQNNQYKPI TQY KH [QW OQXG VJG /[53. FKUVTKDWVKQP VQ CPQVJGT NQECVKQP DCUGFKT GO[USN FCVCFKT GO[USNFCVC Sekcja ta jest niezmiernie wa na w Windows w przypadku, gdy zainstalowałeś serwer w innym katalogu ni domyślny c:mysql. W przykładowym pliku wiersze basedir i datadir są wyłą- czone za pomocą komentarza, a w naszym przykładzie pokazaliśmy sposób ich ustawiania w przypadku instalacji serwera w katalogu e:mysql. Kolejna sekcja pliku to sekcja konfiguracji tabel InnoDB, którą omówimy dokładniej w dalszej części rozdziału. Je eli nie chcesz u ywać tabel typu InnoDB lub korzystasz z minimalnej konfiguracji, mo esz usunąć komentarz z wiersza skip-innodb, co znacznie zmniejszy ilość pamięci zajmowanej przez serwer: 7PEQOOGPV VJG HQNNQYKPI TQY KH [QW CTG WUKPI C /CZ UGTXGT CPF [QW FQP V YCPV VJG +PPQD VCDNGU UMKRKPPQFD W pliku tym zawartych jest jeszcze kilka innych sekcji, ale nie powinieneś ich zmieniać. Ustawienia klienta Ustawienia programów klienckich powinny się znajdować w pliku katalog Windows/my.ini w przypadku Windows i .my.cnf w katalogu domowym w przypadku Linuksa. Pamiętaj, e w systemie Linux (i UNIX) nazwy plików rozpoczynające się od kropki są domyślnie ukryte. Mo na umieścić ustawienia klienta w globalnym pliku konfiguracyjnym, ale nie jest to najlepsze rozwiązanie. Program mysql i inne programy dostępne w instalacji MySQL korzy- stają z parametrów znajdujących się w sekcji [client] plików konfiguracyjnych. Parametry te są odczytywane po parametrach pliku c:my.cnf lub /etc/my.cnf, więc mo na przesłonić globalne opcje, podając w lokalnym pliku inne wartości. Specyfikacja lokalnego pliku konfiguracyjnego jest identyczna ze specyfikacją pliku global- nego. Inny jest tylko typ ustawień, jakie mogą być w nim zawarte. Najbardziej u yteczne wydaje się przechowywanie domyślnych parametrów połączenia z serwerem. Przedstawimy teraz sekcję client, która powoduje automatyczne podłączenie się do serwera MySQL uru- chomionego na komputerze gw1. Zwykle korzystam w tym celu z u ytkownika rick z hasłem secret, a następnie wybieram bazę danych bmsimple:
  • 54. 300 Bazy danych i MySQL. Od podstaw =ENKGPV? WUGTTKEM RCUUYQTF FCVCDCUGDOUKORNG JQUVIY Zwróć uwagę na wiersz, w którym wpisane jest słowo password bez znaku = (znaku rów- ności) ani wartości. Nie chcemy przechowywać hasła w pliku (choć moglibyśmy tu wpisać password=secret); w ten sposób wskazujemy programowi mysql, e powinien zapytać o hasło. Je eli nie wpiszemy wiersza zawierającego password, otrzymamy następujący wynik: EO[USNDKP O[USN '4414 #EEGUU FGPKGF HQT WUGT TKEMIY 7UKPI RCUUYQTF 01 EO[USNDKP Poniewa mysql zało ył, e hasło nie jest wymagane, otrzymaliśmy komunikat o wystąpieniu błędu. Je eli dodamy wiersz password, mysql spyta o hasło. Program klienta „widzi” wartości zapisane w tej sekcji, tak jakby były one podane w wierszu poleceń z prefiksem , na przykład: O[USN WUGTTKEM Wyłączanie wartości domyślnych Choć podawanie wartości domyślnych w pliku my.ini lub ~/.my.cnf jest bardzo wygodne, istnieją przypadki, gdy niezbędne jest tymczasowe zignorowanie podanych wartości domyśl- nych. Czasami mo e wystąpić problem, je eli w pliku konfiguracyjnym podamy rzadziej u ywaną opcję, na przykład ZON i uruchomimy pogram, na przykład mysqldump, który nie rozpoznaje takiej opcji. Sytuacja taka jest dosyć myląca, poniewa uruchamiasz program bez parametrów, a otrzymujesz komunikat o błędzie oznajmiający, e podałeś nieprawi- dłowy parametr. Dzieje się tak dlatego, e wszystkie pogramy mysql… odczytują parametry z sekcji client i je eli program nie zinterpretuje któregoś z parametrów, zwraca komunikat o błędzie. Aby rozwiązać ten problem, nale y u yć parametru PQFGHCWNVU, który powoduje wyłączenie odczytu zmiennych konfiguracyjnych z pliku my.ini lub ~/.my.cnf. Na przykład, pozostawiając niezmieniony plik my.ini, który zawiera domyślne połączenie z serwerem na komputerze z Linuksem, dzięki wyłączeniu domyślnych wartości mo emy wywołać program mysql, aby połączył się z lokalnym serwerem: EO[USNDKP O[USN PQFGHCWNVU WUGTTKEM RCUUYQTF 'PVGT RCUUYQTF
  • 55.
  • 56.
  • 57.
  • 58. 9GNEQOG VQ VJG /[53. OQPKVQT %QOOCPFU GPF YKVJ QT I ;QWT /[53. EQPPGEVKQP KF KU VQ UGTXGT XGTUKQP CNRJCOCZPV 6[RG JGNR QT J HQT JGNR 6[RG E VQ ENGCT VJG DWHHGT O[USN