Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00370 006520 13232828 na godz. na dobę w sumie
MySQL. Vademecum profesjonalisty. Wydanie V - książka
MySQL. Vademecum profesjonalisty. Wydanie V - książka
Autor: Liczba stron: 1216
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-8146-4 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> bazy danych >> mysql - programowanie
Porównaj ceny (książka, ebook, audiobook).

Kompendium wiedzy o MySQL!

MySQL to jedna z najpopularniejszych baz danych wykorzystywanych we współczesnych aplikacjach internetowych. Swój sukces zawdzięcza prostej konfiguracji, niewielkim wymaganiom oraz wysokiej niezawodności. Jeżeli do tego dołożymy genialny współczynnik możliwości do ceny — baza jest darmowa — oraz doskonałą współpracę z językiem PHP, to otrzymamy rewelacyjny produkt. Warto pamiętać, że MySQL to prawdziwy system bazodanowy, wspierający zaawansowane techniki replikacji danych i mogący przechowywać bez problemu miliardy rekordów.

Ta książka to kompletny poradnik poświęcony wykorzystaniu bazy danych MySQL oraz administrowaniu tą bazą. W trakcie lektury dowiesz się, jak najlepiej składować dane w bazie, jak optymalizować zapytania oraz jak pobierać metadane. Ponadto nauczysz się uzyskiwać dostęp do bazy z użyciem języków C, Perl oraz PHP. Niezwykle istotna jest część trzecia niniejszej publikacji. Poświęcona została w całości zagadnieniom związanym z administrowaniem bazą MySQL. Zrozumiesz dzięki niej, w jaki sposób baza przechowuje dane, jak zoptymalizować jej wydajność oraz co musisz zrobić, by zagwarantować najwyższy poziom bezpieczeństwa. Warto, żebyś zawczasu zapoznał się z rozdziałem poświęconym wykonywaniu i odtwarzaniu kopii zapasowej. Książka jest doskonałym źródłem informacji zarówno dla programistów, jak i administratorów korzystających z tej bazy danych.

Dzięki tej książce:
- poznasz dogłębnie bazę danych MySQL
- zoptymalizujesz jej działanie
- podłączysz się do jej zasobów za pomocą języków C, Perl i PHP
- w pełni wykorzystasz potencjał bazy danych MySQL

Wykorzystaj potencjał bazy danych MySQL!

 


 

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Tłumaczenie: Robert Górczyński ISBN: 978-83-246-8146-4 Authorized translation from the English language edition, entitled: MYSQL, Fifth Edition; ISBN 0321833872; by Paul DuBois; published by Pearson Education, Inc, publishing as Addison Wesley. Copyright © 2013 Pearson Education, Inc. All rights reserved. No part of this book may by reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. Polish language edition published by HELION S.A. Copyright © 2014. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Pliki z przykładami omawianymi w książce można znaleźć pod adresem: ftp://ftp.helion.pl/przyklady/mysvp5.zip Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/mysvp5 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treści O autorze ...........................................................................17 Wprowadzenie ...................................................................19 CzöĈè I Ogólne uĔycie MySQL Rozdziaä 1. Rozpoczöcie pracy z MySQL ...............................................33 1.1. W jaki sposób MySQL moĔe Ci pomóc? ....................................33 1.2. Przykäadowa baza danych ........................................................37 1.2.1. Projekt „Liga Historyczna USA” ......................................37 1.2.2. Projekt „Oceny uczniów” ...............................................40 1.2.3. Jak przykäadowa baza danych moĔe Ci pomóc? ...............41 1.3. Podstawowa terminologia bazy danych .....................................41 1.3.1. Terminologia strukturalna .............................................42 1.3.2. Terminologia jözyka zapytaþ ..........................................44 1.3.3. Terminologia architekturalna MySQL ..............................45 1.4. Przewodnik po MySQL ............................................................46 1.4.1. Pobranie przykäadowej bazy danych ................................47 1.4.2. Wymagania wstöpne .....................................................47 1.4.3. Nawiñzywanie i zrywanie poäñczenia z serwerem MySQL ....49 1.4.4. Wykonywanie zapytaþ SQL ............................................51 1.4.5. Tworzenie bazy danych .................................................54 1.4.6. Tworzenie tabel ............................................................55 1.4.7. Dodawanie nowych rekordów .........................................75 1.4.8. Przywrócenie bazy danych sampdb do znanego stanu ......79 1.4.9. Pobieranie informacji ....................................................80 1.4.10. Usuwanie lub uaktualnianie istniejñcych rekordów ......110 1.5. Wskazówki przydatne podczas pracy z klientem mysql .............113 1.5.1. Uproszczenie procesu nawiñzywania poäñczenia ............113 1.5.2. Wpisywanie mniejszej iloĈci tekstu przy wykonywaniu zapytaþ .....................................................................115 1.6. Co dalej? .............................................................................120 Poleć książkęKup książkę 4 MySQL. Vademecum profesjonalisty Rozdziaä 2. UĔycie MySQL do zarzñdzania danymi ...............................123 2.1. Tryby SQL serwera ................................................................124 2.2. Identyfikatory skäadni MySQL i reguäy nadawania nazw ............126 2.3. WielkoĈè liter w zapytaniach SQL ...........................................128 2.4. Obsäuga kodowania znaków ..................................................130 2.4.1. OkreĈlenie kodowania znaków .....................................131 2.4.2. OkreĈlenie dostöpnoĈci kodowania znaków i ustawieþ bieĔñcych ...................................................132 2.4.3. Obsäuga Unicode ........................................................133 2.5. Wybór, utworzenie, usuniöcie i zmiana bazy danych ................134 2.5.1. Wybór bazy danych .....................................................134 2.5.2. Utworzenie bazy danych ..............................................135 2.5.3. Usuniöcie bazy danych ................................................136 2.5.4. Zmiana bazy danych ...................................................136 2.6. Tworzenie, usuwanie, indeksowanie i modyfikowanie tabel ......137 2.6.1. Cechy charakterystyczne silników bazy danych ..............137 2.6.2. Tworzenie tabel ..........................................................143 2.6.3. Usuwanie tabel ..........................................................152 2.6.4. Indeksowanie tabel ....................................................153 2.6.5. Zmiana struktury tabeli ...............................................158 2.7. Pobieranie metadanych bazy danych ......................................161 2.7.1. Pobieranie metadanych za pomocñ zapytania SHOW .....162 2.7.2. Pobieranie metadanych z bazy danych INFORMATION_SCHEMA ..............................................164 2.7.3. Pobieranie metadanych z poziomu wiersza poleceþ .......166 2.8. Pobieranie danych z wielu tabel za pomocñ zäñczeþ ................167 2.8.1. Zäñczenia wewnötrzne .................................................169 2.8.2. Kwalifikowane odwoäania do kolumn z poziomu zäñczonych tabel ..........................................170 2.8.3. Zäñczenia typu LEFT i RIGHT (OUTER) ...........................171 2.9. Pobieranie informacji z wielu tabel za pomocñ podzapytaþ .......175 2.9.1. Podzapytania uĔywajñce wzglödnych operatorów porównania ...............................................176 2.9.2. Podzapytania IN i NOT IN ............................................177 2.9.3. Podzapytania ALL, ANY i SOME ...................................178 2.9.4. Podzapytania EXISTS i NOT EXISTS ..............................179 2.9.5. Podzapytania skorelowane ..........................................180 2.9.6. Podzapytania w klauzuli FROM .....................................181 2.9.7. Przepisywanie podzapytaþ na postaè zäñczeþ ................181 2.10. Pobieranie informacji z wielu tabel za pomocñ zapytaþ UNION ....................................................183 2.11. Usuwanie i uaktualnianie rekordów w wielu tabelach ...............186 Poleć książkęKup książkę Spis treĈci 5 2.12. Przeprowadzanie transakcji ...................................................188 2.12.1. UĔycie transakcji do zapewnienia bezpiecznego Ĉrodowiska wykonywania ......................190 2.12.2. UĔycie punktów poĈrednich transakcji ........................194 2.12.3. Izolacja transakcji .....................................................194 2.13. Klucze zewnötrzne i integralnoĈè odwoäaþ ..............................197 2.14. Wyszukiwanie peänego tekstu ................................................204 2.14.1. Wyszukiwanie peänego tekstu w jözyku naturalnym ......207 2.14.2. Wyszukiwanie peänego tekstu w trybie boolowskim ......208 2.14.3. Wyszukiwanie rozszerzone o wynik zapytania ..............210 2.14.4. Konfiguracja silnika wyszukiwania peänego tekstu .......211 Rozdziaä 3. Typy danych ...................................................................213 3.1. Kategorie wartoĈci danych ....................................................215 3.1.1. WartoĈci liczbowe .......................................................215 3.1.2. WartoĈci ciñgu tekstowego ..........................................217 3.1.3. WartoĈci daty i godziny ...............................................226 3.1.4. WartoĈci przestrzenne ................................................226 3.1.5. WartoĈci boolowskie ...................................................227 3.1.6. WartoĈè NULL ............................................................227 3.2. Typy danych w MySQL ...........................................................227 3.2.1. Ogólny opis typów danych ...........................................228 3.2.2. OkreĈlenie typów kolumn w definicji tabeli ....................230 3.2.3. Definiowanie wartoĈci domyĈlnych kolumn ...................231 3.2.4. Liczbowe typy danych .................................................232 3.2.5. Typy danych w postaci ciñgów tekstowych ....................240 3.2.6. Typy danych dla wartoĈci daty i czasu ..........................256 3.3. Jak MySQL obsäuguje nieprawidäowe wartoĈci danych? ............267 3.4. Praca z sekwencjami ............................................................270 3.4.1. Ogólne wäaĈciwoĈci AUTO_INCREMENT ........................270 3.4.2. WäaĈciwoĈci AUTO_INCREMENT charakterystyczne dla silnika bazy danych ...............................................272 3.4.3. Kwestie dotyczñce kolumn AUTO_INCREMENT ..............275 3.4.4. Wskazówki pomocne podczas pracy z kolumnami AUTO_INCREMENT .....................................................276 3.4.5. Generowanie sekwencji bez AUTO_INCREMENT ............278 3.5. Obliczanie wyraĔeþ i konwersja typu .......................................280 3.5.1. Tworzenie wyraĔeþ ......................................................281 3.5.2. Konwersja typu ..........................................................289 3.6. Wybór typu danych ...............................................................297 3.6.1. Jakie wartoĈci bödñ przechowywane w kolumnie? .........299 3.6.2. Czy przechowywane wartoĈci pochodzñ z okreĈlonego zakresu? ..............................................302 Poleć książkęKup książkę 6 MySQL. Vademecum profesjonalisty Rozdziaä 4. Widoki i programy skäadowane .........................................305 4.1. UĔywanie widoków ................................................................306 4.2. UĔywanie programów skäadowanych .......................................309 4.2.1. Zapytania zäoĔone i ograniczniki zapytaþ .......................310 4.2.2. Procedury i funkcje skäadowane ...................................311 4.2.3. Wyzwalacze ...............................................................316 4.2.4. Zdarzenia ..................................................................318 4.3. Zapewnienie bezpieczeþstwa widokom i programom skäadowanym ....................................................320 Rozdziaä 5. Optymalizacja zapytaþ ......................................................323 5.1. UĔycie indeksowania ............................................................324 5.1.1. Zalety wynikajñce z indeksowania ................................324 5.1.2. Koszt indeksowania ....................................................327 5.1.3. Wybór indeksów .........................................................328 5.2. Optymalizator zapytaþ MySQL ...............................................333 5.2.1. Jak dziaäa optymalizator zapytaþ? ................................334 5.2.2. UĔycie zapytania EXPLAIN do sprawdzenia operacji optymalizatora ...............................................338 5.3. Wybór typu danych zapewniajñcego efektywne wykonywanie zapytaþ ............................................................344 5.4. Wybór formatu tabeli dla efektywnych zapytaþ ........................347 5.5. Efektywne wczytywanie danych ..............................................349 5.6. Harmonogram, blokady i wspóäbieĔnoĈè .................................352 CzöĈè II UĔycie interfejsu programowania MySQL Rozdziaä 6. Wprowadzenie do programowania MySQL ..........................355 6.1. Dlaczego tworzyè wäasne aplikacje MySQL? ............................355 6.2. API dostöpne dla MySQL .......................................................359 6.2.1. API C .........................................................................360 6.2.2. API Perl DBI ...............................................................360 6.2.3. API PHP .....................................................................362 6.3. Wybór API ............................................................................363 6.3.1. Przewidywane Ĉrodowisko dziaäania .............................364 6.3.2. WydajnoĈè .................................................................365 6.3.3. Czas potrzebny na opracowanie aplikacji ......................366 6.4.3. PrzenoĈnoĈè ..............................................................367 Rozdziaä 7. Tworzenie programów MySQL przy uĔyciu jözyka C ............369 7.1. Kompilacja i linkowanie programów klienckich ........................370 7.2. Nawiñzanie poäñczenia z serwerem ........................................373 7.3. Obsäuga bäödów i przetwarzanie opcji polecenia ......................377 7.3.1. Sprawdzanie pod kñtem bäödów ..................................377 Poleć książkęKup książkę Spis treĈci 7 7.3.2. Pobieranie parametrów poäñczenia w trakcie dziaäania programu .......................................382 7.3.3. Implementacja przetwarzania opcji w programie klienta ...395 7.4. Przetwarzanie zapytaþ SQL ...................................................399 7.4.1. Obsäuga zapytaþ modyfikujñcych rekordy ......................401 7.4.2. Obsäuga zapytaþ zwracajñcych zbiór wynikowy ...............402 7.4.3. Procedury obsäugi zapytaþ ogólnego przeznaczenia .......405 7.4.4. Alternatywne podejĈcia do przetwarzania zapytaþ ..........407 7.4.5. Funkcja mysql_store_result() kontra mysql_use_result() ...........................................408 7.4.6. UĔywanie metadanych zbioru wynikowego .....................411 7.4.7. Kodowanie znaków specjalnych i danych binarnych .......416 7.5. Program do interaktywnego wykonywania zapytaþ ...................420 7.6. Utworzenie klienta z obsäugñ SSL ..........................................421 7.7. Jednoczesne wykonywanie wielu zapytaþ ...............................426 7.8. UĔywanie zapytaþ preinterpretowanych ...................................428 7.9. UĔycie preinterpretowanego zapytania CALL ...........................440 Rozdziaä 8. Tworzenie programów MySQL przy uĔyciu Perl DBI ............445 8.1. Cechy charakterystyczne skryptu Perl .....................................446 8.2. Ogólny opis Perl DBI .............................................................447 8.2.1. Typy danych DBI .........................................................447 8.2.2. Prosty skrypt DBI ........................................................448 8.2.3. Obsäuga bäödów .........................................................453 8.2.4. Obsäuga zapytaþ modyfikujñcych rekordy ......................456 8.2.5. Obsäuga zapytaþ zwracajñcych zbiór wynikowy ...............458 8.2.6. Cytowanie znaków specjalnych w ciñgach tekstowych zapytaþ .....................................467 8.2.7. Miejsca zarezerwowane i zapytania preinterpretowane ...470 8.2.8. Doäñczanie wyniku zapytania do zmiennych skryptu .......474 8.2.9. OkreĈlenie parametrów poäñczenia ..............................475 8.2.10. Usuwanie bäödów .....................................................478 8.2.11. UĔywanie metadanych zbioru wynikowego ...................482 8.2.12. Przeprowadzanie transakcji .......................................486 8.3. Praca z DBI ..........................................................................488 8.3.1. Generowanie katalogu Ligi Historycznej ........................488 8.3.2. Wysyäanie czäonkom Ligi przypomnieþ o koniecznoĈci przedäuĔenia czäonkostwa .....................495 8.3.3. Edycja rekordu czäonka Ligi Historycznej .......................500 8.3.4. Wyszukiwanie czäonków Ligi Historycznej o takich samych zainteresowaniach .............................506 8.3.5. Udostöpnienie w internecie katalogu Ligi Historycznej ...507 8.4. UĔycie DBI w aplikacjach sieciowych ......................................510 8.4.1. Konfiguracja Apache w celu obsäugi skryptów CGI .........512 8.4.2. Krótki opis moduäu CGI.pm .........................................513 Poleć książkęKup książkę 8 MySQL. Vademecum profesjonalisty 8.4.3. Nawiñzanie poäñczenia z serwerem MySQL z poziomu skryptu sieciowego .....................................521 8.4.4. Przeglñdarka bazy danych ...........................................523 8.4.5. Przeglñdarka tabel projektu ocen uczniów ....................528 8.4.6. Wyszukiwanie wspólnych zainteresowaþ w projekcie Ligi Historycznej ........................................531 Rozdziaä 9. Tworzenie programów MySQL przy uĔyciu jözyka PHP ........537 9.1. Ogólny opis PHP ...................................................................539 9.1.1. Prosty skrypt PHP .......................................................541 9.1.2. UĔycie biblioteki plików PHP w celu hermetyzacji kodu ...545 9.1.3. Prosta strona pobierajñca dane ...................................550 9.1.4. Przetwarzanie wyników zapytania .................................554 9.1.5. Sprawdzanie pod kñtem wartoĈci NULL w wynikach zapytania ..................................................558 9.1.6. UĔywanie zapytaþ preinterpretowanych .........................559 9.1.7. UĔycie miejsc zarezerwowanych do obsäugi kwestii zwiñzanych z cytowaniem danych .................................559 9.1.8. Obsäuga bäödów .........................................................561 9.2. Praca z PHP .........................................................................564 9.2.1. Aplikacja pozwalajñca na wprowadzenie wyników uzyskanych przez uczniów ...........................................564 9.2.2. Tworzenie interaktywnego quizu w internecie ................577 9.2.3. Edycja informacji o czäonkach Ligi Historycznej ..............582 CzöĈè III Administracja MySQL Rozdziaä 10. Wprowadzenie do administracji bazñ danych MySQL ..........591 10.1. Komponenty MySQL ...........................................................592 10.2. Ogólna administracja MySQL ...............................................593 10.3. Kontrola dostöpu i zapewnianie bezpieczeþstwa ...................594 10.4. Obsäuga bazy danych, tworzenie kopii zapasowych i replikacja .........................................................................595 Rozdziaä 11. Katalog danych w MySQL .................................................597 11.1. PoäoĔenie katalogu danych ..................................................598 11.2. Struktura katalogu danych ..................................................599 11.2.1. W jaki sposób serwer MySQL zapewnia dostöp do danych? ............................................................600 11.2.2. Przedstawienie baz danych w systemie plików ..........602 11.2.3. Przedstawienie tabel w systemie plików ...................603 11.2.4. Przedstawienie widoków i wyzwalaczy w systemie plików ..................................................604 11.2.5. Jak zapytania SQL sñ mapowane na operacje na pliku tabeli? ......................................................604 11.2.6. Ograniczenia systemu operacyjnego w zakresie nazw obiektów bazy danych ....................605 Poleć książkęKup książkę Spis treĈci 9 11.2.7. Czynniki wpäywajñce na maksymalnñ wielkoĈè tabeli .......................................................607 11.2.8. Wpäyw struktury katalogu danych na wydajnoĈè systemu ............................................609 11.2.9. Pliki dzienników zdarzeþ i stanu MySQL ...................611 11.3. Przeniesienie zawartoĈci katalogu danych ............................613 11.3.1. Metody przenoszenia katalogu danych lub jego elementów ................................................614 11.3.2. Przygotowania do operacji przeniesienia ...................615 11.3.3. Uzyskanie dostöpu do wyniku przeniesienia ..............615 11.3.4. Przeniesienie caäego katalogu danych ......................617 11.3.5. Przeniesienie poszczególnych baz danych ................617 11.3.6. Przeniesienie poszczególnych tabel .........................618 11.3.7. Przeniesienie systemowej przestrzeni tabel InnoDB .........................................................618 11.3.8. Przeniesienie plików dzienników zdarzeþ i stanu .......619 Rozdziaä 12. Ogólna administracja bazñ danych MySQL ........................621 12.1. Zabezpieczenie nowej instalacji MySQL ................................622 12.1.1. Definiowanie haseä dla poczñtkowych kont MySQL ........622 12.1.2. Konfiguracja haseä dla serwerów dodatkowych ..........627 12.2. Konfiguracja uruchamiania i zamykania serwera MySQL ........628 12.2.1. Uruchamianie serwera MySQL w systemach UNIX .....628 12.2.2. Uruchamianie serwera MySQL w systemach Windows ............................................634 12.2.3. OkreĈlanie opcji startowych serwera ........................637 12.2.4. W jaki sposób serwer nasäuchuje poäñczeþ? .............639 12.2.5. Zatrzymanie serwera ..............................................640 12.2.6. Odzyskanie kontroli nad serwerem, gdy nie moĔna nawiñzaè z nim poäñczenia ................641 12.3. UĔywanie zmiennych systemowych i stanu ............................644 12.3.1. Sprawdzanie i ustawienie wartoĈci zmiennych systemowych .........................................645 12.3.2. Sprawdzenie wartoĈci zmiennej stanu ......................649 12.4. Interfejs wtyczek ................................................................651 12.5. Konfiguracja silnika bazy danych .........................................654 12.5.1. Wybór silnika bazy danych .......................................655 12.5.2. Wybór domyĈlnego silnika bazy danych ....................656 12.5.3. Konfiguracja silnika InnoDB ....................................656 12.6. Kwestie zwiñzane z globalizacjñ ...........................................664 12.6.1. Konfiguracja obsäugi stref czasowych .......................664 12.6.2. Ustawienie domyĈlnego kodowania znaków i kolejnoĈci sortowania ...........................................667 12.6.3. Wybór jözyka wyĈwietlania komunikatów bäödów .......667 12.6.4. Wybór ustawieþ jözykowych .....................................668 Poleć książkęKup książkę 10 MySQL. Vademecum profesjonalisty 12.7. Dostrajanie serwera ...........................................................668 12.7.1. Zmienne systemowe ogólnego przeznaczenia do dostrajania serwera ...........................................670 12.7.2. Dostrajanie silnika bazy danych ...............................673 12.7.3. UĔywanie bufora zapytaþ .........................................680 12.7.4. Optymalizacje sprzötowe .........................................682 12.8. Dzienniki zdarzeþ serwera ...................................................684 12.8.1. Dziennik bäödów .....................................................687 12.8.2. Ogólny dziennik zapytaþ ..........................................688 12.8.3. Dziennik wolno wykonywanych zapytaþ .....................689 12.8.4. Binarny dziennik zdarzeþ .........................................690 12.8.5. Dziennik przekazywania ..........................................692 12.8.6. Rejestracja zdarzeþ w tabelach ...............................692 12.8.7. Zarzñdzanie dziennikami zdarzeþ .............................693 12.9. Uruchamianie wielu serwerów MySQL ..................................701 12.9.1. Ogólne kwestie zwiñzane z uruchamianiem wielu serwerów ............................702 12.9.2. Konfiguracja i kompilacja róĔnych serwerów ..............705 12.9.3. Strategie podawania opcji startowych ......................707 12.9.4. UĔycie skryptu mysqld_multi do zarzñdzania serwerem ........................................708 12.9.5. Uruchamianie wielu serwerów w Windows ................710 12.9.6. Uruchamianie klientów wielu serwerów ....................712 12.10. Uaktualnianie MySQL .......................................................712 Rozdziaä 13. Bezpieczeþstwo i kontrola dostöpu ...................................715 13.1. Zabezpieczenie dostöpu do MySQL przez system plików ........716 13.1.1. Jak ukraĈè dane? ...................................................717 13.1.2. Zabezpieczenie instalacji MySQL .............................718 13.2. Zarzñdzanie kontami uĔytkowników w MySQL .......................725 13.2.1. Zarzñdzanie kontem MySQL na wysokim poziomie ....727 13.2.2. Nadawanie uprawnieþ ............................................732 13.2.3. WyĈwietlanie uprawnieþ uĔytkownika .......................744 13.2.4. Odbieranie uprawnieþ .............................................744 13.2.5. Zmiana hasäa lub zerowanie zapomnianego ..............745 13.2.6. Unikanie ryzyka zwiñzanego z kontrolñ dostöpu .........746 13.2.7. Wtyczki metod uwierzytelniania i uĔytkownicy proxy ...750 13.3. Struktura i zawartoĈè tabel uprawnieþ .................................754 13.3.1. Istniejñce w tabelach uprawnieþ kolumny dotyczñce zasiögu udzielanego dostöpu ...................757 13.3.2. Istniejñce w tabelach uprawnieþ kolumny uprawnieþ ................................................758 13.3.3. Istniejñce w tabelach uprawnieþ kolumny uwierzytelnienia ........................................759 Poleć książkęKup książkę Spis treĈci 11 13.3.4. Istniejñce w tabelach uprawnieþ kolumny dotyczñce SSL ..........................................759 13.3.5. Istniejñce w tabelach uprawnieþ kolumny zarzñdzania zasobami .............................................760 13.4. W jaki sposób serwer kontroluje dostöp uzyskiwany przez klientów? ..................................................................761 13.4.1. ZawartoĈè kolumn zasiögu ......................................762 13.4.2. Weryfikacja uprawnieþ zapytania .............................764 13.4.3. KolejnoĈè dopasowania kolumn zasiögu ..................766 13.4.4. Puzzle uprawnieþ ...................................................767 13.5. Konfiguracja bezpiecznych poäñczeþ za pomocñ SSL .............770 Rozdziaä 14. Obsäuga bazy danych, kopie zapasowe i replikacja ............775 14.1. Zasady obsäugi profilaktycznej .............................................775 14.2. Obsäuga bazy danych w dziaäajñcym serwerze .......................777 14.2.1. Blokowanie poszczególnych tabel w celu uzyskania dostöpu tylko do odczytu lub odczytu i zapisu ...........779 14.2.2. NaäoĔenie na wszystkie bazy danych blokady pozwalajñcej jedynie na ich odczyt ...........................782 14.3. Ogólne dziaäania profilaktyczne ............................................783 14.3.1. UĔywanie moĔliwoĈci serwera w zakresie automatycznej naprawy ..........................783 14.3.2. Harmonogram dziaäaþ profilaktycznych .....................784 14.4. Tworzenie kopii zapasowej bazy danych ...............................785 14.4.1. Cechy charakterystyczne przenoĈnoĈci silników bazy danych ...........................................................788 14.4.2. Tworzenie kopii zapasowej za pomocñ narzödzia mysqldump ............................................................790 14.4.3. Tworzenie binarnej kopii zapasowej .........................793 14.4.4. Tworzenie kopii zapasowej tabel InnoDB ..................795 14.5. Kopiowanie baz danych do innego serwera ...........................796 14.5.1. Kopiowanie bazy danych za pomocñ pliku kopii zapasowej .............................797 14.5.2. Kopiowanie baz danych z jednego serwera do innego ..............................................................798 14.6. Sprawdzanie i naprawianie tabel bazy danych .......................798 14.6.1. Sprawdzanie tabel za pomocñ zapytania CHECK TABLE .........................800 14.6.2. Naprawa tabel za pomocñ zapytania REPAIR TABLE ..801 14.6.3. UĔycie narzödzia mysqlcheck do sprawdzania i naprawy tabel ......................................................801 14.7. UĔycie kopii zapasowej do przywrócenia danych ....................803 14.7.1. Przywracanie caäych baz danych ..............................803 14.7.2. Przywracanie poszczególnych tabel ..........................804 Poleć książkęKup książkę 12 MySQL. Vademecum profesjonalisty 14.7.3. Ponowne wykonanie zapytaþ zapisanych w plikach binarnego dziennika zdarzeþ .....................805 14.7.4. Rozwiñzywanie problemów zwiñzanych z automatycznñ naprawñ w InnoDB ..........................807 14.8. Konfiguracja serwerów replikacji ..........................................809 14.8.1. Jak dziaäa replikacja? .............................................809 14.8.2. Utworzenie relacji typu gäówny – podlegäy ..................811 14.8.3. Formaty rejestracji zdarzeþ w dzienniku binarnym ......815 14.8.4. UĔycie serwera podlegäego replikacji do tworzenia kopii zapasowych ................................815 Dodatki Dodatek A Oprogramowanie wymagane do uĔycia tej ksiñĔki ..............819 A.1. Pobranie dystrybucji sampdb zawierajñcej przykäadowñ bazö danych ...................................819 A.2. Pobieranie serwera MySQL i powiñzanego z nim oprogramowania ....................................820 A.3. Instalacja MySQL .................................................................822 A.3.1. Tworzenie konta logowania dla uĔytkownika MySQL .......823 A.3.2. Instalacja MySQL .......................................................823 A.3.3. Konfiguracja zmiennej Ĉrodowiskowej PATH ..................824 A.3.4. Inicjalizacja katalogu danych i tabel uprawnieþ .............825 A.3.5. Uruchamianie serwera ................................................826 A.3.6. Inicjalizacja innych tabel systemowych .........................827 A.4. Informacje dotyczñce instalacji Perl DBI .................................828 A.5. Informacje dotyczñce instalacji PHP i PDO ..............................829 Dodatek B Przewodnik po typach danych ...........................................831 B.1. Typy liczbowe .......................................................................833 B.1.1. Typy liczb caäkowitych .................................................834 B.1.2. Typy liczb o staäej iloĈci cyfr ........................................836 B.1.3. Typy liczb zmiennoprzecinkowych .................................836 B.1.4. Typ BIT ......................................................................837 B.2. Typy tekstowe ......................................................................838 B.2.1. Typy binarnych ciñgów tekstowych ...............................840 B.2.2. Typy niebinarnych ciñgów tekstowych ...........................842 B.2.3. Typy ENUM i SET ........................................................845 B.3. Typy daty i godziny ...............................................................845 Dodatek C Przewodnik po operatorach i funkcjach .............................851 C.1. Operatory ............................................................................852 C.1.1. KolejnoĈè operatorów .................................................852 C.1.2. Operatory grupowania .................................................853 C.1.3. Operatory arytmetyczne ..............................................854 Poleć książkęKup książkę Spis treĈci 13 C.1.4. Operatory porównania .................................................856 C.1.5. Operatory bitowe ........................................................861 C.1.6. Operatory logiczne ......................................................862 C.1.7. Operatory rzutowania ..................................................864 C.1.8. Operatory dopasowania wzorca ...................................865 C.2. Funkcje ...............................................................................869 C.2.1. Funkcje porównaþ ......................................................870 C.2.2. Funkcje rzutowania .....................................................872 C.2.3. Funkcje liczbowe ........................................................873 C.2.4. Funkcje ciñgu tekstowego ...........................................878 C.2.5. Funkcje daty i godziny .................................................892 C.2.6. Funkcje podsumowaþ .................................................907 C.2.7. Funkcje zapewnienia bezpieczeþstwa oraz zwiñzane z kompresjñ ..........................................911 C.2.8. Funkcje nakäadania blokad doradczych .........................915 C.2.9. Funkcje zwiñzane z adresem IP ...................................917 C.2.10. Funkcje XML ..............................................................919 C.2.11. Funkcje przestrzenne .................................................920 C.2.12. RóĔne funkcje ............................................................920 Dodatek D Przewodnik po zmiennych systemowych, stanu i uĔytkownika .........................................................927 D.1. Zmienne systemowe ............................................................927 D.1.1. Zmienne systemowe InnoDB ......................................972 D.2. Zmienne stanu ....................................................................987 D.2.1. Zmienne stanu InnoDB ...............................................994 D.2.2. Zmienne stanu bufora zapytaþ ....................................998 D.2.3. Zmienne stanu SSL ...................................................999 D.3. Zmienne zdefiniowane przez uĔytkownika .............................1000 Dodatek E Przewodnik po skäadni SQL .............................................1003 E.1. Skäadnia zapytaþ SQL (zapytania niezäoĔone) ........................1004 E.2. Skäadnia zapytaþ SQL (zapytania zäoĔone) ............................1103 E.2.1. Polecenia struktury kontrolnej ...................................1103 E.2.2. Zapytania obsäugi deklaracji ......................................1105 E.2.3. Zapytania obsäugi kursora .........................................1107 E.2.4. Zapytania obsäugi warunków .....................................1108 E.3. Skäadnia komentarzy ..........................................................1112 Dodatek F Przewodnik po programie SQL ........................................1115 F.1. WyĈwietlanie komunikatu pomocy programu .........................1116 F.2. OkreĈlanie opcji programu ...................................................1117 F.2.1. Opcje standardowe programu MySQL .........................1119 F.2.2. Pliki opcji .................................................................1124 F.2.3. Zmienne Ĉrodowiskowe .............................................1129 Poleć książkęKup książkę 14 MySQL. Vademecum profesjonalisty F.3. Narzödzie myisamchk .........................................................1130 F.3.1. Opcje standardowe obsäugiwane przez myisamchk ......1132 F.3.2. Opcje charakterystyczne dla myisamchk .....................1132 F.3.3. Zmienne narzödzia myisamchk ..................................1136 F.4. mysql ................................................................................1137 F.4.1. Opcje standardowe obsäugiwane przez mysql ..............1139 F.4.2. Opcje charakterystyczne dla mysql .............................1140 F.4.3. Zmienne programu mysql ..........................................1145 F.4.4. Polecenia programu mysql .........................................1145 F.4.5. Sekwencje definiujñce znak zachöty mysql ..................1148 F.5. mysql.server ......................................................................1150 F.5.1. Opcje obsäugiwane przez mysql.server ........................1150 F.6. mysql_config ......................................................................1150 F.6.1. Opcje charakterystyczne dla mysql_config ...................1151 F.7. Skrypt mysql_install_db ......................................................1152 F.7.1. Opcje standardowe obsäugiwane przez mysql_install_db ..............................................1152 F.7.2. Opcje charakterystyczne dla mysql_install_db .............1152 F.8. mysql_upgrade ...................................................................1153 F.8.1. Opcje standardowe obsäugiwane przez mysql_upgrade ................................................1153 F.8.2. Opcje charakterystyczne dla mysql_upgrade ................1154 F.9. mysqladmin .......................................................................1154 F.9.1. Opcje standardowe obsäugiwane przez mysqladmin .....1154 F.9.2. Opcje charakterystyczne dla mysqladmin ....................1155 F.9.3. Zmienne dla mysqladmin ..........................................1155 F.9.4. Polecenia mysqladmin ..............................................1156 F.10. mysqlbinlog ......................................................................1158 F.10.1. Opcje standardowe obsäugiwane przez mysqlbinlog ...1159 F.10.2. Opcje charakterystyczne dla mysqlbinlog ..................1159 F.10.3. Zmienne dla mysqlbinlog .........................................1162 F.11. mysqlcheck ......................................................................1163 F.11.1. Opcje standardowe obsäugiwane przez mysqlcheck ....1163 F.11.2. Opcje charakterystyczne dla mysqlcheck ..................1163 F.12. mysqld ............................................................................1167 F.12.1. Opcje standardowe obsäugiwane przez mysqld ..........1168 F.12.2. Opcje charakterystyczne dla mysqld .........................1168 F.12.3. Zmienne dla mysqld ................................................1180 F.13. mysqld_multi ....................................................................1180 F.13.1. Opcje standardowe obsäugiwane przez mysqld_multi .................................................1180 F.13.2. Opcje charakterystyczne dla mysqld_multi ................1181 Poleć książkęKup książkę Spis treĈci 15 F.14. mysqld_safe ....................................................................1181 F.14.1. Opcje standardowe obsäugiwane przez mysqld_safe ..................................................1182 F.14.2. Opcje charakterystyczne dla mysqld_safe .................1182 F.15. mysqldump ......................................................................1184 F.15.1. Opcje standardowe obsäugiwane przez mysqldump ....1184 F.15.2. Opcje charakterystyczne dla mysqldump ...................1185 F.15.3. Oferowane przez mysqldump opcje formatu danych ....1193 F.15.4. Zmienne dla mysqldump .........................................1193 F.16. mysqlimport .....................................................................1194 F.16.1. Opcje standardowe obsäugiwane przez mysqlimport ...1194 F.16.2. Opcje charakterystyczne dla mysqlimport ..................1194 F.16.3. Oferowane przez mysqlimport opcje formatu danych ..............................................1196 F.17. mysqlshow .......................................................................1196 F.17.1. Opcje standardowe obsäugiwane przez mysqlshow .....1197 F.17.2. Opcje charakterystyczne dla mysqlshow ...................1197 F.18. perror ..............................................................................1198 F.18.1. Opcje standardowe obsäugiwane przez perror ............1198 Skorowidz.......................................................................1199 Poleć książkęKup książkę 16 MySQL. Vademecum profesjonalisty Poleć książkęKup książkę 11 Katalog danych w MySQL P od względem koncepcyjnym różne systemy baz danych mają jedną wspólną cechę: zarządzają zestawem baz danych zawierających zestawy tabel. Jednak każdy system bazy danych charakteryzuje się własnym rozwiązaniem w zakresie zarządzania danymi i MySQL nie jest tutaj wyjątkiem. Domyślnie, serwer MySQL (mysqld) przechowuje wszystkie informacje w lokalizacji nazywanej katalogiem danych MySQL. We wspomnianym katalogu znajdują się wszystkie bazy danych, pliki stanu i pliki dzienników zdarzeń dostarczających informacje o działalności serwera. Jeżeli jesteś w jakimkolwiek stopniu odpowiedzialny za zadania administracyjne instalacji MySQL, powinieneś zapoznać się z projektem i sposobem używania katalogu danych, ponieważ ta wiedza będzie Ci potrzebna w wypełnianiu obowiązków administracyjnych. Nawet jeśli nie zamierzasz zajmować się administracją MySQL, to lektura niniejszego rozdziału może przynieść pewne korzyści, a wiedza o sposobie działania serwera na pewno nie zaszkodzi. W tym rozdziale zostaną omówione wymienione poniżej zagadnienia: „ Położenie katalogu danych. Ponieważ katalog danych odgrywa ważną rolę w działalności serwera MySQL, powinieneś potrafić wskazać jego położenie, aby efektywnie administrować zawartością katalogu danych. „ Sposób, w jaki serwer organizuje dostęp do baz danych i tabel oraz nim zarządza. To bardzo ważne w celu konfiguracji harmonogramu obsługi serwera, a także przeprowadzania procesu odzyskiwania danych w przypadku uszkodzenia tabel. „ Rodzaje generowanych plików stanu i dzienników zdarzeń oraz ich zawartość. Wspomniane pliki zawierają użyteczne informacje na temat działania serwera i są wręcz nieocenione po wystąpieniu jakichkolwiek problemów. „ Sposób zmiany domyślnego położenia i organizacji katalogu danych. To może być ważne podczas zarządzania alokacją zasobów dyskowych w systemie, na przykład przez zrównoważenie aktywności dyskowej między dostępnymi napędami lub przez przeniesienie danych do systemów plików z większą ilością wolnej przestrzeni. Zdobyta tutaj wiedza jest także użyteczna podczas planowania miejsca położenia nowych baz danych. Poleć książkęKup książkę 598 Rozdziaä 11. Katalog danych w MySQL W rozdziale przyjęto założenie, że w przypadku systemów UNIX istnieje konto logowania przeznaczone do wykonywania zadań administracyjnych oraz dla działającego serwera. W tej książce nazwa użytkownika i grupy wspomnianego konta to mysql. W podpunkcie 12.2.1.1, zatytułowanym „Działanie serwera w ramach pozbawionego uprawnień konta logowania”, przedstawiono powody, dla których warto używać oddzielnego konta logowania do wykonywania zadań administracyjnych MySQL. 11.1. PoäoĔenie katalogu danych Domyślne położenie katalogu danych (data) jest skompilowane w serwerze. W systemach UNIX z reguły będzie to katalog /usr/local/mysql/data w przypadku instalacji MySQL z dystrybucji binarnej bądź źródłowej lub /var/lib/mysql po instalacji z pakietu RPM. Z kolei w systemach Windows najczęściej będzie to katalog C:\ProgramData\MySQL lub C:\Documents and Settings\All Users\ Application Data\MySQL, w zależności od używanej wersji Windows. Jeżeli kompilujesz MySQL ze źródeł, domyślne położenie katalogu danych możesz wskazać za pomocą opcji wiersza poleceń -DMYSQL_DATADIR=nazwa_katalogu podczas uruchamiania CMake. Aby położenie katalogu danych wskazać w chwili uruchamiania serwera, należy użyć opcji --datadir=nazwa_katalogu. To użyteczne rozwiązanie w celu wskazania innego katalogu niż domyślny zdefiniowany w trakcie kompilacji. Jeszcze innym sposobem jest podanie katalogu w pliku opcji odczytywanym przez serwer w chwili jego uruchamiania. W takim przypadku nie ma konieczności podawania katalogu danych w wierszu poleceń w trakcie każdego uruchamiania serwera. Jako administrator MySQL powinieneś znać miejsce położenia katalogu danych serwera, ale jeśli go nie znasz (prawdopodobnie po przejęciu obowiązków po poprzednim administratorze, który nie pozostawił wystarczająco dokładnych informacji o instalacji MySQL), istnieje kilka sposobów na sprawdzenie wspomnianego położenia. Poniżej przedstawiono jedną z metod, stosowaną, gdy serwer nie jest uruchomiony. Kolejna metoda pozwala na sprawdzenie położenia katalogu danych serwera w przypadku działającego serwera. Spójrz na plik opcji odczytywany w chwili uruchamiania serwera. Na przykład, w systemach UNIX po otworzeniu pliku /etc/my.cnf w grupie [mysqld] możesz znaleźć wiersz datadir: [mysqld] datadir= /Ăcieĝka/dostÚpu/do/katalogu/data Ścieżka dostępu wskazuje położenie katalogu danych serwera. Jeżeli nie jesteś pewien, czy serwer odczytuje pliki opcji, wywołaj go w przedstawiony poniżej sposób i sprawdź komunikat pomocy, który wyświetla położenia plików opcji: mysqld --verbose --help Poleć książkęKup książkę 11.2. Struktura katalogu danych 599 W przypadku działającego serwera nawiąż z nim połączenie i sprawdź położenie katalogu danych. Serwer zawiera pewną liczbę zmiennych systemowych dotyczących jego funkcjonowania i może wyświetlić ich wartości. Położenie katalogu danych wskazuje zmienna datadir, której wartość można wyświetlić za pomocą zapytania SHOW VARIABLES lub polecenia mysqladmin variables. Jeżeli zapytanie SHOW VARIABLES wykonasz w systemie UNIX, jego wynik może przedstawiać się następująco: mysql SHOW VARIABLES LIKE datadir ; +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ | datadir | /usr/local/mysql/data/ | +---------------+------------------------+ Z poziomu wiersza poleceń użyj narzędzia mysqladmin: mysqladmin variables +---------------+------------------------+ | Variable_name | Value | +---------------+------------------------+ ... | datadir | /usr/local/mysql/data/ | ... W systemie Windows położeniem katalogu danych może być na przykład C:\ProgramData\MySQL. Jeżeli masz kilka działających serwerów, będą one nasłuchiwały na różnych interfejsach sieciowych (porty TCP/IP, pliki gniazd systemu UNIX, nazwane potoki w Windows lub pamięć współdzielona). Informacje o położeniu katalogu danych możesz otrzymać po nawiązaniu połączenia z każdym serwerem po kolei za pomocą odpowiednich opcji parametrów połączenia. W przypadku istnienia katalogu danych i konieczności jego przeniesienia do innego położenia zapoznaj się z podrozdziałem 11.3, zatytułowanym „Przeniesienie zawartości katalogu danych”, w którym omówiono techniki przenoszenia katalogu danych MySQL. 11.2. Struktura katalogu danych Katalog danych MySQL zawiera wszystkie bazy danych, którymi zarządza serwer. Ogólnie rzecz biorąc, mają one postać struktury drzewa zaimplementowanego w bardzo prosty sposób, wykorzystujący hierarchiczną strukturę systemu plików UNIX lub Windows: „ Każda baza danych ma własny podkatalog w katalogu danych MySQL. „ Tabele, widoki i wyzwalacze w bazie danych odpowiadają plikom w podkatalogu danej bazy danych. Poszczególne silniki bazy danych mogą stosować strukturę pamięci masowej różniącej się od ogólnej hierarchicznej implementacji bazy danych za pomocą katalogów i plików. Na przykład, silnik bazy danych InnoDB może we wspólnej przestrzeni tabel Poleć książkęKup książkę 600 Rozdziaä 11. Katalog danych w MySQL przechowywać wszystkie tabele InnoDB ze wszystkich baz danych. Wspomniana przestrzeń tabel składa się z jednego lub więcej ogromnych plików traktowanych jako pojedyncza, jednolita struktura danych, w ramach której przedstawiane są tabele i indeksy. Domyślnie silnik InnoDB przechowuje pliki przestrzeni tabel w katalogu danych MySQL. Katalog danych może zawierać także jeszcze inne pliki: „ Plik PID (ang. Process ID) serwera. Podczas uruchamiania serwer zapisuje w tym pliku identyfikator procesu, co pozwala innym programom na poznanie wspomnianej wartości, jeśli muszą wysłać jakikolwiek sygnał do serwera. „ Generowane przez serwer pliki stanu i dzienników zdarzeń. Wspomniane pliki zawierają ważne informacje o działalności serwera i są wręcz nieocenione dla administratorów, zwłaszcza w przypadku wystąpienia jakichkolwiek problemów, gdy zachodzi potrzeba znalezienia źródła problemu. Na przykład, jeśli określone zapytanie nie jest z powodzeniem wykonywane w serwerze, problem bardzo często można ustalić przez analizę plików dzienników zdarzeń. (Jeżeli skonfigurujesz serwer w taki sposób, aby rejestracja informacji odbywała się w tabelach bazy danych zamiast w plikach dzienników zdarzeń, to tabele zdarzeń znajdziesz w bazie danych mysql). „ Pliki powiązane z serwerem, na przykład plik klucza DES lub pliki kluczy i certyfikatów SSL serwera. Wymienione pliki administratorzy bardzo często umieszczają w katalogu danych MySQL. 11.2.1. W jaki sposób serwer MySQL zapewnia dostöp do danych? Kiedy baza danych MySQL jest używana w typowej konfiguracji klient-serwer, wszystkie bazy danych znajdujące się w katalogu danych są zarządzane przez pojedynczą jednostkę, czyli serwer MySQL (mysqld). Programy klientów nie mają możliwości bezpośredniego przeprowadzania operacji na danych. Zamiast tego serwer zapewnia pojedynczy punkt kontaktu z bazą danych działający w charakterze pośrednika między programem klienta i danymi, których chce użyć. Tę architekturę pokazano na rysunku 11.1. Podczas uruchamiania serwera następuje otworzenie wszystkich obsługiwanych przez niego plików dzienników zdarzeń, a następnie udostępnienie katalogu danych interfejsowi sieciowemu przez nasłuchiwanie różnych rodzajów połączeń sieciowych. (Informacje szczegółowe dotyczące wyboru interfejsu sieciowego znajdziesz w punkcie 12.2.4, zatytułowanym „W jaki sposób serwer nasłuchuje połączeń?”). W celu uzyskania dostępu do danych program klienta nawiązuje połączenie z serwerem i wysyła żądania w postaci zapytań SQL odpowiedzialnych za wykonanie określonych operacji, takich jak utworzenie tabeli, wybór rekordów lub uaktualnienie rekordów. Serwer wykonuje wskazane operacje i zwraca klientowi ich wynik. Ponieważ serwer jest wielowątkowy, jednocześnie może obsługiwać wiele połączeń z klientami. Jednak ponieważ jednocześnie można przeprowadzać tylko jedną operację uaktualniania, w efekcie serwer serializuje żądania, aby dwa klienty nigdy nie miały szansy na jednoczesne uaktualnienie tego samego rekordu. Poleć książkęKup książkę 11.2. Struktura katalogu danych 601 Rysunek 11.1. Sposób, w jaki serwer MySQL kontroluje dostöp do katalogu danych W normalnych warunkach serwer działający w charakterze jedynego arbitra dostępu do bazy danych jest gwarancją uniknięcia wszelkiego rodzaju uszkodzeń, które mogłyby powstać na skutek jednoczesnego przetwarzania tabel bazy danych przez wiele klientów. Administratorzy powinni jednak zdawać sobie sprawę, że zdarzają się sytuacje, w których serwer nie ma wyłącznej kontroli nad katalogiem danych. Narzędzia bezpośredniego dostępu, takie jak myisamchk, są używane do przeprowadzania zadań administracyjnych względem tabel MyISAM, podczas rozwiązywania problemów, operacji naprawy lub kompresji. Tego rodzaju programy działają bezpośrednio na plikach odpowiadających tabelom. Ponieważ te narzędzia mogą zmienić zawartość tabel, używanie w tym samym czasie tabel przez serwer może doprowadzić do ich uszkodzenia. Najbardziej oczywistym sposobem uniknięcia wymienionego problemu jest zatrzymanie serwera przed uruchomieniem programu narzędziowego. Jeśli nie ma takiej możliwości, konieczne jest poznanie sposobu zakazania serwerowi uzyskiwania dostępu do tabeli, gdy używasz narzędzia bezpośrednio działającego na plikach tej tabeli. W podrozdziale 14.2, zatytułowanym „Obsługa bazy danych w działającym serwerze”, znajdziesz informacje dotyczące współpracy z serwerem podczas używania programów narzędziowych. Alternatywą dla narzędzia myisamchk jest wykonanie zapytań takich jak CHECK TABLE i REPAIR TABLE (lub wykorzystanie narzędzia mysqlcheck wykonującego wymienione zapytania). Wymienione zapytania eliminują problem współpracy z serwerem, ponieważ samemu serwerowi nakazują przeprowadzenie operacji na tabelach. Poleć książkęKup książkę 602 Rozdziaä 11. Katalog danych w MySQL 11.2.2. Przedstawienie baz danych w systemie plików Każda baza danych zarządzana przez serwer MySQL ma własny katalog. Istnieje on jako podkatalog w katalogu danych i ma taką samą nazwę jak baza danych, którą przedstawia. Na przykład, jeżeli katalog_danych określa położenie katalogu danych w serwerze, a nazwą bazy danych jest moja_baza_danych, wówczas katalogiem bazy danych jest katalog_danych/moja_baza_danych w systemach UNIX lub katalog_danych\moja_baza_danych w Windows. Zapytanie SHOW DATABASES po prostu generuje listę podkatalogów znajdujących się w katalogu danych MySQL. Zapytanie CREATE DATABASE nazwa_bazy_danych tworzy podkatalog o podanej nazwie w katalogu danych MySQL. Utworzony w ten sposób podkatalog będzie katalogiem bazy danych. Ponadto, w katalogu bazy danych wymienione zapytanie tworzy plik db.opt zawierający atrybuty bazy danych, na przykład domyślne kodowanie znaków i kolejność sortowania. W systemach UNIX właścicielem katalogu bazy danych jest użytkownik używany do uruchamiania serwera. Katalog bazy danych jest dostępny tylko dla tego użytkownika. Zapytanie DROP DATABASE jest zaimplementowane niemal w taki sam prosty sposób. Zapytanie DROP DATABASE nazwa_bazy_danych powoduje usunięcie z katalogu danych MySQL podkatalogu o nazwie nazwa_bazy_danych wraz ze znajdującymi się w nim tabelami i innymi obiektami bazy danych, na przykład widokami i wyzwalaczami. Niemalże odpowiada to ręcznemu usunięciu katalogu bazy danych za pomocą polecenia poziomu systemu plików, takiego jak rm w systemie UNIX lub del w Windows. Jednak między zapytaniem DROP DATABASE i wymienionymi poleceniami systemu plików istnieją pewne różnice: „ W przypadku zapytania DROP DATABASE serwer używa jedynie plików rozpoznanych na podstawie rozszerzeń pliku jako tabele lub inne obiekty bazy danych. Jeżeli w katalogu bazy danych utworzyłeś inne pliki lub podkatalogi, serwer pozostawi je nietknięte. W takim przypadku katalog bazy danych nie może być usunięty, a zapytanie DROP DATABASE wygeneruje komunikat błędu. Jedną z konsekwencji jest, że zapytanie SHOW DATABASES nadal będzie wyświetlało nazwę tej bazy danych. Rozwiązanie takiego problemu polega na ręcznym usunięciu wszystkich plików w podkatalogu bazy danych, a następnie ponownym wykonaniu zapytania DROP DATABASE. „ Nie można bezpiecznie usunąć tabel InnoDB w bazie danych przez usunięcie jej katalogu. Dla każdej tabeli InnoDB silnik InnoDB ma odpowiedni wpis w systemowej przestrzeni tabel, która może również przechowywać zawartość tabeli. Jeżeli baza danych zawiera tabele InnoDB, konieczne jest wykonanie zapytania DROP DATABASE, aby silnik InnoDB mógł uaktualnić katalog danych i usunąć całą zawartość tabeli z przestrzeni tabel. Poleć książkęKup książkę 11.2. Struktura katalogu danych 603 11.2.3. Przedstawienie tabel w systemie plików MySQL obsługuje wiele silników bazy danych, między innymi InnoDB, MyISAM i MEMORY. Na dysku każda tabela MySQL jest przedstawiana przynajmniej za pomocą jednego pliku: to plik w formacie .frm, zawierający opis struktury tabeli. Serwer tworzy plik .frm, a poszczególne silniki bazy danych mogą tworzyć dodatkowe pliki zawierające dane rekordów i informacje o indeksach. Nazwy i struktura wspomnianych plików zależą od konkretnego silnika bazy danych. Poniżej przedstawiono ogólne cechy charakterystyczne pewnych silników bazy danych w zakresie przechowywania plików na dysku. Więcej informacji szczegółowych dotyczących różnic między omawianymi silnikami bazy danych znajdziesz w punkcie 2.6.1, zatytułowanym „Cechy charakterystyczne silników bazy danych”. Domyślnym silnikiem bazy danych jest InnoDB. W katalogu bazy danych dla każdej tabeli InnoDB znajduje się plik w formacie .frm, zawierający definicję struktury tabeli. Z kolei dla danych InnoDB stosuje dwa sposoby ich przedstawienia, oba oparte na xprzestrzeniach tabel: „ Systemowa przestrzeń tabel. Ta przestrzeń tabel składa się z jednego lub więcej ogromnych plików umieszczonych w katalogu danych. Wspomniane pliki przestrzeni tabel tworzą logiczną, ciągłą przestrzeń o wielkości równej sumie wielkości poszczególnych plików. Domyślnie, InnoDB przechowuje tabele w systemowej przestrzeni tabel. Dla tego rodzaju tabel jedynym plikiem charakterystycznym dla tabeli jest plik w formacie .frm. „ Poszczególne przestrzenie tabel. Istnieje możliwość konfiguracji silnika InnoDB w taki sposób, aby dla każdej tabeli tworzona była oddzielna przestrzeń tabel. W takim przypadku każda tabela InnoDB ma dwa charakterystyczne dla siebie pliki w katalogu bazy danych: plik .frm oraz plik .ibd, zawierający dane tabeli i jej indeksy. Systemowa przestrzeń tabel jest używana także w innym celu. InnoDB zawiera wewnętrzny katalog danych przechowujący informacje o wszystkich tabelach. Wspomniany katalog znajduje się w systemowej przestrzeni tabel, która tym samym jest konieczna nawet w przypadku używania poszczególnych przestrzeni tabel do przechowywania zawartości pojedynczych tabel. Każda tabela MyISAM jest przez MySQL przedstawiana w postaci trzech plików umieszczonych w katalogu bazy danych zawierającej daną tabelę. Nazwa bazowa każdego pliku odpowiada nazwie tabeli, natomiast jego rozszerzenie wskazuje przeznaczenie pliku. Na przykład, tabela MyISAM o nazwie moja_tabela ma trzy następujące pliki: „ moja_tabela.frm to plik formatu zawierający opis struktury tabeli; „ moja_tabela.myd to plik danych przechowujący zawartość rekordów tabeli; „ moja_tabela.myi to plik zawierający informacje o indeksach dla wszystkich indeksów utworzonych w danej tabeli. Poleć książkęKup książkę 604 Rozdziaä 11. Katalog danych w MySQL Tabele typu MEMORY są obszarami w pamięci. Dla tabeli typu MEMORY w katalogu bazy danych znajduje się jedynie plik .frm, opisujący jej format. Tego rodzaju tabela nie jest w żaden inny sposób przedstawiana w systemie plików, ponieważ wszystkie dane i indeksy tabeli MEMORY serwer przechowuje w pamięci, a nie na dysku. Po zamknięciu serwera cała zawartość tabel typu MEMORY jest bezpowrotnie tracona. Po ponownym uruchomieniu serwera tabela typu MEMORY nadal istnieje (ponieważ w systemie plików jest jej plik .frm), ale pozostaje pusta. 11.2.4. Przedstawienie widoków i wyzwalaczy w systemie plików Widoki i wyzwalacze są obiektami powiązanymi z plikami w katalogu bazy danych zawierającym te obiekty. Widok składa się z pliku .frm zawierającego definicję widoku oraz inne powiązane z nim atrybuty. Bazowa nazwa pliku widoku odpowiada nazwie widoku. Dlatego też widok mój_widok jest przedstawiany przez plik mój_widok.frm. Wyzwalacz jest przechowywany w pliku .trg, zawierającym definicję wyzwalacza oraz inne powiązane z nim atrybuty. Plik wyzwalacza ma nazwę bazową odpowiadającą tabeli, do której należy. Na przykład, wyzwalacz o nazwie mój_wyzwalacz powiązany z tabelą moja_tabela jest przechowywany w pliku moja_tabela.trg, a nie mój_wyzwalacz.trg. Jeżeli tabela zawiera wiele wyzwalaczy, serwer przechowuje ich definicje w tym samym pliku .trg. Ponadto, każdy wyzwalacz ma plik .trn o nazwie wyzwalacza i zawierający nazwę tabeli, w której został zdefiniowany. Na przykład, wyzwalacz mój_wyzwalacz ma plik mój_wyzwalacz.trn zawierający nazwę tabeli moja_tabela. 11.2.5. Jak zapytania SQL sñ mapowane na operacje na pliku tabeli? Każdy silnik bazy danych używa pliku .frm do przechowywania formatu (definicji) tabeli, aby dane wyjściowe zapytania SHOW TABLES nazwa_bazy_danych były takie same jak nazwy bazowe plików .frm w katalogu bazy danych o wskazanej nazwie. W celu utworzenia tabeli dowolnego typu obsługiwanego przez MySQL należy wykonać zapytanie CREATE TABLE definiujące strukturę tabeli i zawierające klauzulę ENGINE=nazwa_silnika wskazującą używany silnik bazy danych. W przypadku pominięcia klauzuli ENGINE serwer MySQL użyje domyślnego silnika bazy danych (InnoDB, o ile tego nie zmieniłeś). Serwer tworzy plik .frm dla nowej tabeli i umieszcza w nim wewnętrznie zakodowaną definicję tabeli oraz nakazuje odpowiedniemu silnikowi bazy danych utworzenie wszelkich plików powiązanych z tabelą. Na przykład, InnoDB tworzy odpowiedni wpis w katalogu danych oraz inicjalizuje w odpowiedniej przestrzeni tabel informacje o danych i indeksach tabeli. Z kolei silnik MyISAM tworzy pliki danych (.myd) i indeksów (.myi), natomiast silnik CSV tworzy plik danych w formacie .csv. W systemach UNIX właścicielem wszystkich utworzonych w ten sposób plików przedstawiających tabelę jest użytkownik, którego konto jest używane do uruchamiania serwera. Poleć książkęKup książkę 11.2. Struktura katalogu danych 605 Po wykonaniu zapytania ALTER TABLE serwer ponownie koduje plik .frm tabeli w celu odzwierciedlenia strukturalnych zmian wprowadzonych przez zapytanie i odpowiednio modyfikuje zawartość tabeli (dane i indeksy). To samo dzieje się również w przypadku zapytań CREATE INDEX i DROP INDEX, ponieważ są one obsługiwane przez serwer jako odpowiedniki zapytań ALTER TABLE. Jeżeli zapytanie ALTER TABLE powoduje zmianę silnika bazy danych, zawartość tabeli jest transferowana do nowego silnika, który ponownie zapisuje tę zawartość na dysku, używając odpowiedniego typu plików stosowanych do przedstawienia tabeli. MySQL implementuje zapytanie DROP TABLE przez usunięcie plików przedstawiających tabelę. Jeżeli usuniesz tabelę InnoDB, silnik bazy danych InnoDB uaktualnia także jej katalog danych i oznacza jako wolną całą przestrzeń, która w systemowej przestrzeni tabel InnoDB jest powiązana z usuniętą tabelą. W przypadku innych silników bazy danych, na przykład MyISAM, istnieje możliwość usunięcia tabeli przez ręczne usunięcie w katalogu bazy danych plików odpowiadających danej tabeli. W silnikach takich jak InnoDB lub MEMORY pewne fragmenty tabeli mogą nie być przedstawiane w plikach charakterystycznych dla danej tabeli, a więc zapytanie DROP TABLE nie ma odpowiednika w postaci polecenia systemu plików. Na przykład, tabela InnoDB przechowywana w systemowej przestrzeni tabel zawsze jest unikalnie powiązana z plikiem .frm, ale usunięcie wymienionego pliku nie powoduje całkowitego usunięcia danej tabeli. Katalog danych InnoDB musi być uaktualniony przez sam silnik InnoDB, a usunięcie pliku .frm pozostawia dane i indeksy tabeli „porzucone” w systemowej przestrzeni tabel. Jeżeli tabela InnoDB znajduje się w oddzielnej przestrzeni tabel, w katalogu bazy danych jest przedstawiana w postaci plików .frm i .ibd. Jednak nadal nie można „usunąć” tabeli przez usunięcie wymienionych plików, ponieważ wtedy silnik InnoDB nie ma szansy na uaktualnienie katalogu danych. Konieczne jest użycie zapytania DROP TABLE, aby silnik InnoDB mógł usunąć pliki oraz uaktualnić katalog danych. 11.2.6. Ograniczenia systemu operacyjnego w zakresie nazw obiektów bazy danych MySQL ma ogólne reguły dotyczące identyfikatorów dla nazw baz danych oraz innych obiektów, takich jak tabele. Wspomniane reguły zostały omówione w podrozdziale 2.2, zatytułowanym „Identyfikatory składni MySQL i reguły nadawania nazw”, ale poniżej pokrótce przedstawiono ich podsumowanie: „ Niecytowane identyfikatory mogą składać s
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

MySQL. Vademecum profesjonalisty. Wydanie V
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: