R-05-07.pdf
(
575 KB
)
Pobierz
PLP_Rozdzia³5_M ySQL
Rozdział 5. MySQL
Zdecydowaliśmy wcześniej, że
MySQL
nie będzie idealnym rozwiązaniem dla bazy danych
obsługującej naszą aplikację. Istnieją jednak zastosowania, gdzie ta popularna baza danych spełnia
znakomicie swoją rolę — tam, gdzie ważna jest szybkość działania i nie trzeba używać transakcji
lub innych zaawansowanych właściwości języka
SQL
. Dlatego właśnie chcemy przedstawić bazę
danych
MySQL
.
W tym rozdziale omówimy instalację
MySQL
, a następnie zajmiemy się następującymi
zagadnieniami:
Podstawowe polecenia używane przez administratora podczas instalacji
MySQL
.
Główne różnice między wspomaganiem języka
SQL
w
PostgreSQL
i w
MySQL
.
Dostęp do bazy danych
MySQL
z programu w języku
C
.
Instalacja i zarządzanie
Instalacja
MySQL
jest bardzo prosta. Jeżeli w danej dystrybucji Linuksa nie ma kopii
dystrybucyjnej
MySQL
, to można ją pobrać ze strony macierzystej
http://www.mysql.com
.
Znajdują się tam zarówno pakiety skompilowane (w tym także
RPM
), jak i pliki źródłowe dla
wielu systemów. W zasadzie wstępnie skompilowane pakiety powinny całkowicie spełniać
oczekiwania, ale jeśli ktoś chce skompilować je we własnym zakresie, może pobrać wersję
źródłową.
Pakiety skompilowane
Pakiety
RPM
są aktualnie rozpowszechniane w czterech częściach:
Główny pakiet serwera
(ang.
main server package
) o nazwie:
MySQL-<
wersja
>.<
architektura
>.rpm
Zawiera on główne pliki binarne i instrukcje oraz wielojęzyczne pliki pomocnicze. Ten
pakiet
trzeba
zainstalować.
Pakiet kliencki
(ang.
client package
) o nazwie mającej następującą postać:
MySQL-client-<
wersja
>.<
architektura
>.rpm
Zawiera on podstawowe programy klienta, które mają współpracować z serwerem.
Programy te tworzą oddzielny pakiet, ponieważ w przypadku instalacji na kilku
komputerach pracujących tylko jako klienty bazy
MySQL
nie trzeba instalować
składników serwera na wszystkich komputerach.
Pakiet zawierający składniki współdzielone
(ang.
shared component package
) o nazwie:
MySQL-shared-<
wersja
>.<
architektura
>.rpm
zawierający współdzielone biblioteki wymagane przez niektóre klienty.
Pakiet rozwojowy
(ang.
development package
) o nazwie:
MySQL-devel-<
wersja
>.<
architektura
>.rpm
zawierający pliki nagłówkowe i dodatkowe biblioteki potrzebne przy budowie aplikacji,
które komunikują się z serwerem
MySQL
.
Jeżeli ktoś decyduje się na tworzenie programów korzystających z dostępu do bazy
MySQL
, to
powinien na swoim komputerze zainstalować wszystkie wyżej wymienione pakiety.
Skrypt instalacyjny automatycznie tworzy wstępną bazę danych. Potrzebny będzie także skrypt o
nazwie
mysql
służący do uruchamiania i zatrzymywania serwera, przechowywany w katalogu
init.d
. Najlepszym sposobem na odszukanie plików bazy jest sprawdzenie zawartości tego
skryptu. Są tam podane standardowe ścieżki i definicje, np. po zainstalowaniu binarnego pakietu
RPM
w dystrybucji
Red Hat
pewien fragment skryptu
mysql
o nazwie
shell variables
wygląda
następująco:
bindir=/usr/bin
datadir=/var/lib/mysql
pid_file=/var/lib/mysql.pid
mysql_daemon_user=mysql # Run mysql as this user.
Jak widać, jest to łatwe do zrozumienia. Podczas instalacji jest również tworzony użytkownik o
nazwie „
mysql
”, w imieniu którego będzie uruchamiany demon serwera
MySQL
. W zależności od
wersji skrypt instalacyjny może od razu uruchomić serwer. Sprawdzamy to za pomocą
następującego polecenia:
$
ps -el | grep mysql
Jeżeli będą widoczne jakieś procesy
mysqld
, oznacza to, że serwer został uruchomiony. Jeżeli tak
nie będzie, to należy uruchomić skrypt
mysql
(z katalogu
init.d
) z parametrem
start
jako
użytkownik
mysql
. W zależności od dystrybucji polecenie może wyglądać jak niżej:
#
su - mysql
$
/etc/rc.d/init.d/mysql start
Budowanie z plików źródłowych
Instalacja z plików źródłowych jest tylko trochę trudniejsza niż instalacja pakietów binarnych. Po
pobraniu i rozpakowaniu plików źródłowych należy użyć polecenia:
$
./configure --help
W ten sposób sprawdzamy, czy trzeba zmieniać jakieś opcje konfiguracyjne. Przy założeniu, że
ustawienia domyślne są wystarczające, sekwencja poleceń używanych do kompilacji i instalacji
serwera jest następująca:
$
./configure
$
make
$
su -
#
make install
Jeśli wszystko przebiegnie prawidłowo, to należy uruchomić (jako
root
) skrypt instalacyjny
scripts/mysql_install_db
w celu wstępnego zainicjowania serwera:
#
scripts/mysql_install_db
W zależności od wersji
MySQL
skrypt może uruchamiać automatycznie serwer bazy danych. Jeśli
tak nie jest, wówczas należy uruchomić serwer ręcznie za pomocą skryptu
mysql.server
umieszczonego w katalogu z plikami pomocniczymi. Skrypt
mysql_install_db
tworzy niektóre
wymagane tabele bazy danych i inicjuje uprawnienia do plików. Ma on prostą budowę i
zainteresowani mogą przejrzeć jego zawartość, chcąc się dokładniej zorientować, co on robi.
Przed zakończeniem działania skryptu pojawi się komunikat informujący o sposobie
automatycznego uruchomienia
MySQL
podczas rozruchu systemu. Oprócz tego pojawi się
przypomnienie o konieczności ustawienia hasła przez użytkownika bazy
MySQL
o nazwie „
root
”.
Jest to dosyć mylące, ponieważ w
MySQL
użytkownik o nazwie
root
jest administratorem serwera
bazy danych. Jeżeli te komunikaty nie pojawią się, to nie należy się tym przejmować i w razie
potrzeby odszukać je w skrypcie instalacyjnym.
Ostatnią czynnością podczas instalacji z plików źródłowych jest skonfigurowanie serwera w taki
sposób, aby mógł on być automatycznie uruchamiany i zatrzymywany przez system. W katalogu z
plikami pomocniczymi (
support-files
) można znaleźć pomocny skrypt
mysql.server
, który
należy skopiować do katalogu
init.d
, a następnie utworzyć dowiązania do odpowiednich plików
w
rc.d
. Jako alternatywny sposób uruchamiania można zawsze użyć ręcznego wywołania tego
skryptu z parametrem
start
lub
stop
. Za każdym razem należy upewniać się (podobnie jak w
przypadku bazy
PostgreSQL
), czy przed wyłączeniem systemu został zatrzymany serwer bazy
danych.
Konfiguracja poinstalacyjna
Jeżeli wszystko przebiegło poprawnie, to wówczas mamy utworzoną domyślną konfigurację za
pomocą skryptu
mysql_install_db
i serwer uruchomiony w trybie demona za pomocą skryptu
z
init.d
. Sprawdzimy teraz działanie serwera:
$
mysql -u root mysql
Powinien pojawić się komunikat „
Welcome to the MySQL monitor
” i za nim znak zachęty
mysql>
. Oznacza to, że serwer działa; jednocześnie widzimy, że
każdy
może się z nim połączyć i
uzyska uprawnienia administratora
. Pracę kończymy wpisując polecenie
quit
.
Można sprawdzić inaczej, czy serwer działa, używając do tego polecenia
mysqladmin
:
$
mysqladmin -u root version
Otrzymujemy wówczas informację nie tylko o tym, czy serwer działa, ale także o jego wersji i
czasie pracy.
Jeżeli podczas korzystania z
mysql
nastąpi przerwa w połączeniu z bazą, to najpierw należy
sprawdzić, szukając procesów
mysqld
za pomocą polecenia
ps
, czy serwer faktycznie działa. Jeśli
serwer nie działa, ale jesteśmy pewni, że był uruchamiany, to można próbować użyć programu
safe_mysqld
z opcją
--log
. W katalogu, w którym była zainstalowana baza
MySQL
(najczęściej jest to
/var/lib/mysql
), powstanie wówczas plik logu o nazwie takiej jak nazwa
komputera z końcówką
.log
.
Jeżeli serwer działa, ale nie można się z nim połączyć, to przeglądając skrypt
mysql_install_db
albo
init.d/mysql
należy sprawdzić, gdzie została zainstalowana baza
danych. Zazwyczaj jest to katalog
/var/lib/mysql
w podkatalogu
mysql
. Powinny być tam
pliki o nazwach mających końcówki
.frm
,
.ISD
i
.ISM
.
Jeżeli to się nie uda, to można próbować zatrzymać serwer, ręcznie usunąć pliki bazy danych i
uruchomić ręcznie skrypt
mysql_install_db
w celu ponownego utworzenia bazy. Potem należy
ponownie uruchomić serwer. Jest nadzieja, że tym razem wszystko się uda, ale jeśli tak nie będzie,
to należy poszukać dodatkowych informacji na temat wyszukiwania błędów w dokumentacji
dostarczanej w pakiecie
MySQL
. Jeżeli był instalowany pakiet binarny, to dokumentacja znajduje
się zapewne w katalogu
/usr/doc/MySQL-
<wersja>
. Można także sprawdzić informacje w
Internecie na stronie
MySQL
.
Bardzo kłopotliwy błąd powstaje wówczas, gdy uprawnienia do plików bazy danych nie są zgodne
z uprawnieniami użytkownika
mysql
tworzonego automatycznie podczas instalacji albo gdy
demon
mysqld
został uruchomiony w imieniu użytkownika o niewłaściwym identyfikatorze. W
takim wypadku można połączyć się z bazą, ale nie udaje się uruchomić innych programów, np.
mysqladmin
i
mysqlshow
. Trzeba wówczas dokładnie sprawdzić atrybuty plików bazy danych i
użytkownika, który uruchomił proces
mysqld
, ponieważ błąd prawdopodobnie jest spowodowany
ich niedopasowaniem. Właścicielem wszystkich plików bazy danych powinien być użytkownik
mysql
.
Kolejne zadanie polega na nadaniu hasła administratorowi bazy danych uprawniającego go do
dostępu do serwera. Służy do tego następujące polecenie
mysqladmin
:
$
mysqladmin -u root password
nowe_haslo
Nadaliśmy w ten sposób początkowe hasło dostępu „
nowe_haslo
” i próba połączenia z bazą się nie
uda, chyba że nada się hasło użytkownikowi:
$
mysql -u root -psecretpassword mysql
Zwróćmy tu uwagę na trochę dziwną składnię: między literą
p
a faktycznym hasłem nie może być
spacji. Ostatni parametr, czyli
mysql
, jest nazwą bazy danych. Jeżeli hasło nie zostanie wpisane
(czyli wystąpi tylko opcja
-p
), to
mysql
zażąda jego podania. Ponieważ podawanie hasła w
wierszu poleceń nie jest bezpieczne (inni użytkownicy mogą je zobaczyć np. za pomocą polecenia
ps
), to lepiej jest używać następującej postaci tego polecenia, nie wpisując hasła:
$
mysql -u root -p mysql
Baza zażąda wówczas hasła. Po uruchomieniu
mysql
można sprawdzić, czy istnieje testowa baza
danych używając polecenia:
mysql>
select host, db, user from db;
Powinniśmy otrzymać coś takiego:
+------+----------+------+
| host | db | user |
+------+----------+------+
| % | test | |
| % | test\_% | |
+------+----------+------+
2 rows in set (0.00 sec)
Aby zakończyć pracę z
mysql
, należy użyć polecenia
quit
.
Zarządzanie bazą MySQL
W pakiecie
MySQL
znajduje się kilka programów pomocniczych wspomagających zarządzanie
bazą danych. Najczęściej używany jest program
mysqladmin
, ale zanim przejdziemy do
omawiania sposobu tworzenia programów-klientów, omówimy skrótowo jeszcze kilka innych
programów administracyjnych.
Polecenia
Wszystkie polecenia oprócz
mysqlshow
mogą mieć trzy standardowe argumenty:
Plik z chomika:
jacek_040
Inne pliki z tego folderu:
PLP_Spis treści-1.pdf
(189 KB)
R-00-07.pdf
(210 KB)
R-01-07.pdf
(498 KB)
R-02-07.pdf
(628 KB)
R-03-07.pdf
(694 KB)
Inne foldery tego chomika:
Android
C#
C++
Cisco
cisko
Zgłoś jeśli
naruszono regulamin