dr inż. Grzegorz Michalski

advertisement
Administracja
bazami danych
dr inż. Grzegorz Michalski
Na podstawie wykładów dra inż. Juliusza Mikody
Dlaczego MySQL?
szybkość – programiści twierdzą, że jest najszybszą bazą
danych,
łatwość użycia – MySQL jest względnie prostym
systemem w instalacji, użytkowaniu i administracji,
koszt – bezpłatna w (MySQL Community Edition GPL), komercyjne - MySQL Enterprise – ~5000USD
na rok (http://www.mysql.com/products/),
możliwości – system wielodostępny (transakcyjny)
dostępny na wielu platformach oraz wielu odmianach
(łącznie z wersjami wieloprocesorowymi – klastrowymi)
Dostępność MySQL
Dystrybucja MySQL dostarcza wiele narzędzi:
• silniki
MySQL dostępne na wielu platformach,
• programy
klienckie mające na celu udostępnienie
zasobów (danych) serwera,
• MySQL Query
Browser, MySQL Administrator,
MySQL Migration Toolkit,
• biblioteki
klienta mające na celu wspomóc pisanie
własnych aplikacji
• ODBC,
J, Net, MXJ, C++, C (libmysql), mysqlnd
(php), OpenOffice
Architektura MySQL
Model Klient – Serwer
Protokoły komunikacyjne:
•
TCP/IP – lokalnie i zdalnie, wszystkie systemy
•
UNIX Socket – lokalnie, Unix
•
Shared Memory – lokalnie, tylko Windows
•
Named Pipes – lokalnie, tylko Windows
Instalacja MySQL
Linux (debian):
•
sudo apt-get install mysql-server mysql-client
•
sudo aptitude install mysql-server mysql-client
Windows
•
mysql-5.5.9-win32.msi
Uruchomienie MySQL
• Uruchomienie
mysql:
/etc/init.d/mysql start
• Zatrzymanie
mysql:
/etc/init.d/mysql stop
• Zrestartuj
mysql:
/etc/init.d/mysql restart
Ustawienie hasła root
Root to użytkownik uprzywilejowany (główny) zarządzający
całą bazą danych. Przydziela on prawa innym użytkownikom.
Ma dostęp do wszystkich baz danych, także bazy systemowej
MySQL.
Ustawienie hasła root odbywa się poprzez:
•
mysqladmin -u root password nowe_has o
lub bezpieczniej po zalogowaniu się:
•
mysqladmin -u root -p
•
set password for
root@localhost=password('nowe_has o');
•
set password for root@host=password('nowe_has o');
Bazy danych - zarządzanie
Wyświetlenie dostępnych baz danych
SHOW DATABASES;
Tworzenie bazy danych
CREATE DATABASE gentoo;
lub
mysqladmin create gentoo
Wybór bazy danych
USE gentoo;
Usuwanie bazy danych
DROP DATABASE gentoo;
lub
mysqladmin drop gentoo
Nowy użytkownik
mysql -u root -p
grant all on *.* to admin identified by 'haslo';
Objaśnienie:
all – użytkownikowi admin nadajemy wszystkie dostępne
prawa, z wyjątkiem grant,
*.* – oznacza nadanie praw, dla wszystkich baz danych i dla
wszystkich tabel,
identified by – rozpoznawanego przez, nowe hasło które
wprowadzimy dla tego użytkownika.
Przywileje
grant ... on …
ALL - Użytkownik otrzymuje wszystkie przywileje za
wyjątkiem GRANT OPTION
CREATE - Pozwala użytkownikowi na tworzenie tabel
SELECT - Pozwala na przeszukiwanie tabel
INSERT - Pozwala dodawać nowe informacje do tabel
SHOW DATABASES - Pozwala użytkownikowi na
przeglądanie listy dostępnych baz danych
USAGE - Służy do tworzenia użytkownika bez uprawnień
GRANT OPTION - Pozwala użytkownikowi nadawać
uprawnienia.
Dostępność
grant ALL on *.* to ...
*.* - Wszystkie tabele we wszystkich bazach danych
gentoo.* - wszystkie tabele w bazie gentoo,
gentoo.test - wszystkie uprawnienia dla tabeli test w
bazie gentoo,
Użytkownik i dostęp
grant all on *.* to admin identified by 'haslo';
Dostęp dla użytkownika admin,
grant all on *.* to admin@localhot identified by 'haslo';
Dostęp dla użytkownika jedynie z lokalnego komputera
grant all on *.* to [email protected] identified by
'haslo';
Dostęp dla użytkownika admin z zewnętrznej maszyny o
podanym numerze IP.
Przeglądanie użytkowników
Tabela user głównej bazy MySQL zawiera listę wszystkich
użytkowników systemu oraz informacje o nich:
USE mysql;
SELECT Host,User FROM user;
Wyświetlenie informacji dla użytkownika admin:
SELECT Host,User FROM user WHERE User =
'admin';
describe user;
# wszystkie pola tabeli
Usuwanie użytkowników
Aby usunąć użytkownika z systemu wystarczy usunąć
odpowiedni wpis w tabeli user:
DELETE FROM user WHERE User='admin';
Aby odświeżyć informacje o użytkownikach –
zaktualizować dane w systemie należy wykonać polecenie:
FLUSH PRIVILEGES;
Lokalizacja MySQL
Lokalizacja katalogu z danymi:
• /var/lib/mysql
– wersja rpm(deb)
• /usr/local/var
– wersja w postaci kodu źródłowego
• /usr/mysql/data
• c:\mysql\data
– wersja w postaci binarnej
– wersja Windows
Stałe dla bazy MySQL
Odczyt zmiennych systemowych:
mysqladmin -u root -p variables
mysqladmin -–port=nr -u root -p variables
Istotne dane:
• basedir
– lokalizacja bazy
• datadir
– lokalizacja ścieżki z danymi
• port
– numer portu nasłuchowego
Struktura katalogów
• Katalog
danych zawiera podkatalogi które odpowiadają
utworzonym bazą danych.
• Każdej
• *.frm
tabeli odpowiadają trzy pliki (MyISAM):
– format tabeli oraz opis jej zależności
• *.myd
– plik danych
• *.myi
– plik indeksów związanych z tabelą
• W przypadku
bazy InnoDB podkatalogi zawierają jedynie
format tabeli. Dane są mieszczone w pliku danych, w
głównym katalogu.
Przenoszenie bazy danych
• Przenoszenie
bazy danych (brak miejsca):
mysqladmin -u root -p shutdown
cd datadir
mv bazadanych nowalokalizacja
ln nowalokalizacja/bazadanych .
/etc/init.d/mysql start
Przenoszenie tabel
• Przenoszenie
pojedynczych tabel jest możliwe lecz
niewskazane.
• Przeniesione
dane mogą utrudnić modyfikację struktury
tabeli, usunięcie jej oraz optymalizację jej działania.
Administracja MySQL
• Przydatne
programy do administracji:
• mysqladmin
– pozwala wykonać wiele opcji
administracyjnych,
• mysqldump
– kopiowani bazy danych i przenoszenie
w inne miejsce,
• mysql_install_db
• myisamchk
– skrypt tworzenia nowej bazy danych
– badanie integralności bazy danych.
mysqladmin
• flush-privileges
• mysqladmin
• processlist
• reload
– odświeżenie uprawnień użytkowników
-u root -p version - Informacja o systemie
– lista aktywnych wątków
– odświeżenie tablicy uprawnien
• shutdown
• variables
– zakończenie działania serwera
– parametry systemu.
Kopia bezpieczeństwa
Podstawowe metody kopii bezpieczeństwa to:
• Kopia
plików/katalogów danych na bezpieczny nośnik
• Użycie
programu mysqldump do utworzenia kopii bazy
danych w postaci skryptu sql.
• Kopia
bezpieczeństwa wykonywana przez mysqldump jest
metodą wolniejszą. Natomiast utworzony plik tekstowy
pozwala na przeniesienie danych na inna platformę
sprzętową.
Kopia zapasowa - mysqldump
Kopia danych – plików binarnych bazy danych:
tar -czvf baza.tgz /var/lib/mysql/baza
Skrypt tworzenie kopii bezpieczeństwa:
mysqldump baza -u root -p > baza.08.03.16.sql
Kopia bezpieczeństwa w postaci archiwum:
mysqldump baza -u root -p | gzip> baza.08.03.16.sql.gz
Odtwarzanie bazy danych
Odtwarzanie z plików binarnych sprowadza się do powtórnego
skopiowania danych w miejsce ich pochodzenia. Taki
mechanizm nie jest jednak bezpieczny ze względu na
aktualizację bazy danych.
Odtwarzanie z plików tekstowych (wynik działania
mysqladmin) następuje po wykonaniu komendy:
mysql --one-database nazwa < baza.08.03.16.sql
Plik konfiguracyjny
Znajduje się w katalogu: /etc/mysql/my.cnf
Przydatne elementy:
• port
= 3306
• basedir
= /usr
• datadir
= /dane/mysql
• tmpdir
= /tmp
• max_connections
= 100
Download