Tematy: Do czego nam potrzebny serwer baz danych? | Instalacja serwera | Instalacja dodatkowych narzędzi w systemie Windows | Aktualizacja serwera | Przykładowa baza danych
W tym odcinku zastanowimy się, dlaczego warto korzystać z serwerów baz danych, zainstalujemy serwer MySQL i dodatkowe narzędzia administracyjne oraz przygotujemy przykładową bazę danych.
Do czego nam potrzebny serwer baz danych?
Serwery relacyjnych baz danych, takie jak MySQL (często nazywa się je systemami zarządzania bazami danych):
- Bezpiecznie przechowują zbiory dowolnych danych — bezpieczeństwo nie oznacza, że w wyniku np. awarii dysku dane nie zostaną utracone, ale że wprowadzona do bazy informacja będzie w niej zapisana, nawet jeżeli po zakończeniu operacji wystąpi jakaś awaria, np. serwer będzie nagle wyłączony.
- Umożliwiają wielu klientom jednoczesne pobieranie i modyfikowanie przechowywanych danych — w tym samym czasie setki (tysiące) osób mogą odczytywać i modyfikować dane.
- Umożliwiają klientom przetwarzanie danych za pomocą jakiejś wersji języka SQL — języka utworzonego specjalnie w celu uproszczenia wyszukiwania, sortowania czy modyfikowania danych.
- Umożliwiają kontrolowanie dostępu do danych — administrator bazy danych może nadawać i odbierać użytkownikom uprawnienia do wykonywania określonych operacji.
To tylko kilka najważniejszych zadań — wiele współczesnych serwerów baz danych to bardzo rozbudowane systemy, zintegrowane z jakimś środowiskiem programistycznym, uzupełnione mechanizmami automatycznego raportowania, przetwarzania i analizowania danych, pozwalające prawie całkowicie zautomatyzować typowe zadania administracyjne.
Na podstawie tych najważniejszych cech serwerów baz danych można już odpowiedzieć na zadane na początku pytanie: „Do czego nam potrzebny serwer baz danych?”.
Korzyści płynące z używania serwerów baz danych
Jedna z najważniejszych, ale bardzo często nieprzestrzeganych, dobrych zasad programowania mówi, że zanim zaczyna się tworzyć program (np. aplikację WWW), należy wybrać najlepszą do tego celu technologię. W ten sposób można zaoszczędzić mnóstwo pracy, a i tak efekt będzie o wiele lepszy niż wtedy, gdy programista „na siłę” i „po swojemu” próbuje uporać się z dawno rozwiązanym problem.
Dzięki serwerom baz danych:
- Można udostępniać jednocześnie wielu osobom dostęp do danych — każdy, kto próbował kiedyś samodzielnie napisać program, który pozwoliłby współdzielić zapisane np. w pliku dane, wie, że w ten sposób można oszczędzić sobie jakieś sześć miesięcy ciężkiej pracy.
- Wielokrotnie upraszcza się i przyspiesza operacje na danych, takie jak wyszukiwanie, sortowanie czy grupowanie — listę produktów można posortować napisaną samodzielnie funkcją, ale zdecydowanie prościej i lepiej jest skorzystać z optymalizowanego pod tym kątem serwera baz danych.
- Oddziela się dane od aplikacji — rozdzielnie poszczególnych zadań (przechowywania danych, realizacji logiki aplikacji, pobierania i zwracania danych) i przypisywanie ich osobnym komputerom jest podstawą od wielu lat królującej architektury wielowarstwowej. Programy wielowarstwowe są o wiele lepiej skalowalne, łatwiejsze w zarządzaniu i bezpieczniejsze.
- Upraszcza się dynamiczne generowanie kodu aplikacji WWW — HTML to język znaczników, które po zinterpretowaniu przez przeglądarkę określają wygląd strony. Jeżeli zatem tekst strony (np. aktualności) jest zapisany w bazie, to wystarczy go odczytać, dodać (często też zapisane w bazie) znaczniki i otrzymuje się dynamicznie wygenerowaną stronę WWW. W dodatku od teraz dodawanie czy zmienianie wiadomości na stronach nie wymaga jakiejkolwiek znajomości HTML-a (bo sprowadza się do zapisania tekstu w bazie), czyli może być przeprowadzone przez dowolną osobę. A ponieważ PHP jest językiem interpretowanym (czyli interpreter na bieżąco odczytuje kod źródłowy programu, interpretuje i wykonuje odczytane instrukcje), to można w ten sam sposób zapisywać i odczytywać z bazy instrukcje PHP.
Serwer MySQL był powszechnie używany do dynamicznego generowania stron WWW. Ponieważ jest to dość specyficzne zastosowanie (przede wszystkim dane są rzadko modyfikowane i odczytywane przez jednego — aplikację WWW — użytkownika, mają bardzo prostą strukturę i jest ich niewiele), MySQL znacznie różnił się od innych serwerów baz danych. Sytuacja od jakiegoś czasu się zmienia i od wersji 4. twórcy MySQL powoli upodabniają swój serwer do produktów konkurencji, implementując rozwiązania, które w innych serwerach pojawiły się wiele lat temu. MySQL nie jest jedynym ani najlepszym (takie wartościowanie nie ma sensu) serwerem baz danych, za to jest najpopularniejszym serwerem open source, szczególnie cenionym przez programistów PHP.
Serwer baz danych a baza danych
Serwer baz danych jest programem, który zarządza bazami danych. Natomiast utworzenie bazy danych i wypełnienie jej informacjami jest zadaniem programisty lub administratora serwera. Czyli po zainstalowaniu serwera należy jeszcze zaprojektować i utworzyć bazę danych, dopiero potem będzie można zastosować serwer w aplikacji WWW.
Baza danych utworzona w jednym serwerze (np. MySQL) nie może być bezpośrednio używana w innym środowisku (np. PostgreSQL), ale same tabele i zapisane w nich dane mogą być dość łatwo przenoszone pomiędzy serwerami. Znacznie gorzej wygląda kwestia przeniesienia utworzonych w bazie procedur lub funkcji.
Instalacja serwera
Serwer MySQL może działać zarówno w systemach GNU/Linux, jak i Microsoft Windows czy Mac OS. Kurs zawiera opis wersji 5.4 serwera MySQL. Jednak zanim dojdzie do instalacji serwera, warto zwrócić uwagę na kwestię licencji.
Licencjonowanie
MySQL jest udostępniany przez firmę MySQL AB na podstawie specyficznej, podwójnej licencji:
- Edycja MySQL Community Server jest dostępna na podstawie licencji GPL (http://www.gnu.org/licenses/licenses.pl.html) — z tej edycji serwera MySQL można korzystać na podstawie tej samej licencji, a więc bez żadnych opłat. W takim przypadku należy bezpłatnie udostępnić swój program i jego kod źródłowy.
- Edycja MySQL Enterprise jest płatna — jeżeli programista planuje dołączyć serwer MySQL lub jakąś jego część do komercyjnego programu, musi kupić od firmy MySQL AB odpowiednią licencję. Ta edycja jest wyposażona w dodatkowe narzędzia, a jej użytkownicy mają zagwarantowaną pomoc techniczną.
Jeżeli używa się serwera MySQL Community Server wyłącznie jako części komercyjnej (lub nie) strony WWW, można to robić bez kupowania licencji.
Instalacja w systemach Windows
Aby zainstalować serwer:
- Połącz się ze stroną http://dev.mysql.com/downloads i wybierz najnowszą, dostępną wersję MySQL-a.
- Pobierz kompletną wersję instalatora przeznaczonego dla Twojej wersji systemu Windows.
- Rozpakuj i uruchom pobrany plik (rysunek 1.1).
- Kliknij Next i wybierz typową konfigurację (rysunek 1.2).
- Po kliknięciu Next, a następnie Install instalator zainstaluje serwer MySQL (w domyślnie skonfigurowanych systemach Windows Vista i Windows Server 2008 konieczne będzie jeszcze potwierdzenie posiadania uprawnień administracyjnych).
![]()
|
Rysunek 1.1. Instalacja serwera w systemie Windows jest bardzo prosta i sprowadza się do postępowania według wskazówek instalatora |
|
Rysunek 1.2. Typowa konfiguracja obejmuje serwer, dokumentację i zestaw narzędzi administracyjnych |
Konfiguracja
Zainstalowanie serwera nie oznacza, że możemy już tworzyć własną bazę danych — przedtem będziemy musieli go jeszcze skonfigurować i uruchomić.
- Po zakończeniu pracy instalator poinformuje nas o korzyściach płynących z wykupienia subskrypcji na edycję MySQL Enterprise oraz pozwoli nam uruchomić narzędzie do konfigurowania serwera i zarejestrować nasz serwer (rysunek 1.3).
- Nie usuwając zaznaczenia żadnego pola wyboru, kliknij Finish — uruchomi się kreator konfiguracji serwera (on również wymaga do działania uprawnień administracyjnych).
- Kliknij Next i wybierz dokładną (ang. Detailed) konfigurację (rysunek 1.4).
- Kliknij Next i określ typ serwera (rysunek 1.5).
- Następne pytanie będzie dotyczyło przeznaczenia serwera (informacje na temat różnych typów tabel znajdują się w następnym odcinku kursu). Wybierz Multifunctional i kliknij Next (rysunek 1.6).
- Określ lokalizację plików danych (rysunek 1.7).
- Określ liczbę jednoczesnych połączeń z serwerem (rysunek 1.8).
- Następne pytanie dotyczy konfiguracji sieci: włącz obsługę protokołu TCP/IP, określ port serwera i — jeżeli planujesz łączyć się z nim poprzez sieć — odblokuj port serwera MySQL na zaporze systemu Windows (rysunek 1.9).
- Ważną kwestią jest wybór sposobu kodowania danych tekstowych — wybór niewłaściwej strony kodowej spowoduje, że zamiast polskich znaków diakrytycznych zobaczymy jakieś „krzaczki” (rysunek 1.10).
- Po kliknięciu Next będziesz mógł określić sposób działania i uruchamiania MySQL-a oraz dodać ścieżkę do folderu z narzędziami administracyjnymi do zmiennej systemowej Path (rysunek 1.11).
- Na końcu pozostaje podać hasło administratora serwera. Jeżeli będziesz zarządzał serwerem lokalnie, upewnij się, że pole Enable root access from remote machines nie jest zaznaczone. Ponieważ po podaniu tego hasła zyskasz pełną kontrolę nad serwerem, sprawdź, czy jest ono wystarczająco bezpieczne (rysunek 1.12).
- Po kliknięciu Next serwer zostanie skonfigurowany i uruchomiony (rysunek 1.13).
|
Rysunek 1.3. Serwer można skonfigurować w dowolnym momencie, wybierając zarejestrowany w menu Start program MySQL Server Instance Config Wizard |
|
Rysunek 1.4. W ten sposób będziesz mógł dostosować MySQL-a do potrzeb programisty aplikacji WWW |
|
Rysunek 1.5. Wybierając typ serwera, określamy ilość dostępnej dla niego pamięci operacyjnej i czasu procesora. Pierwsza opcja oznacza przyznanie serwerowi MySQL najmniejszej ilości zasobów komputera, ostatnia — największej |
|
Rysunek 1.6. W ramach kursu będziemy korzystali zarówno z relacyjnych baz danych, w standardowym tego słowa znaczeniu, jak i uproszczonych baz, typowych dla wcześniejszych wersji serwera MySQL |
|
Rysunek 1.7. Pliki z danymi powinny się znaleźć na osobnym, szybkim dysku |
|
Rysunek 1.8. Właściwie określając liczbę jednoczesnych połączeń, poprawisz wydajność serwera |
|
Rysunek 1.9. Upewnij się, że opcja Enable Strict Mode jest zaznaczona. Dzięki temu serwer będzie nieco bardziej zgodny ze startem języka SQL i jego zachowanie będzie bardziej przypominało zachowanie innych serwerów baz danych |
|
Rysunek 1.10. Najbezpieczniejszym sposobem kodowania jest UTF, ale wymaga więcej pamięci do zakodowania pojedynczego znaku |
|
Rysunek 1.11. Skonfiguruj MySQL-a jako automatycznie uruchamianą usługę — w ten sposób będziesz mógł się wylogować czy przelogować bez jego zatrzymywania. Jeżeli planujesz używać standardowych narzędzi administracyjnych, zaznacz też drugie pole wyboru — nazw programów nie będziesz musiał poprzedzać nazwą folderu |
|
Rysunek 1.12. Zaznaczenie któregokolwiek oprócz pierwszego pola wyboru znacznie obniży poziom bezpieczeństwa serwera |
|
Rysunek 1.13. Podsumowanie udanej konfiguracji MySQL-a — wprowadzone zmiany zostały zapisane w pliku my.ini |
Jeżeli konfigurator nie mógł uruchomić usługi serwera MySQL, sprawdź, czy ta usługa nie była wcześniej uruchomiona, i jeżeli tak — zatrzymaj ją. Można to zrobić, klikając prawym przyciskiem myszy ikonę Komputer, wybierając opcję Zarządzaj i przechodząc do sekcji Usługi i aplikacje/Usługi.
Po zainstalowaniu i skonfigurowaniu serwera poświęć kilka minut i zarejestruj się jako kolejny z wielu użytkowników MySQL-a (rysunek 1.14).
|
Rysunek 1.14. Rejestracja nie jest wymagana do korzystania z edycji MySQL Community Server, ale dzięki niej użytkownik jest na bieżąco informowany o nowych wersjach i aktualizacjach serwera MySQL |
Weryfikacja instalacji
Żeby sprawdzić, czy serwer MySQL został poprawnie zainstalowany:
- Uruchom wiersz polecenia i sprawdź, czy możesz połączyć się z serwerem za pomocą podstawowego narzędzia klienckiego, monitora MySQL (listing 1.1).
- Wyświetl listę domyślnych baz danych serwera MySQL (listing 1.2).
- Wyświetl tabele systemowej bazy danych mysql (listing 1.3).
Listing 1.1. Testowe połączenie z lokalnym serwerem MySQL — teraz widać, dlaczego dodaliśmy ścieżkę do folderu bin serwera do zmiennej Path
C:\Users\Marcin.VistaPC>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.4.1-beta-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> quit
Bye
Listing 1.2. W systemach Windows podczas instalacji automatycznie tworzone są dwie bazy systemowe i baza testowa
C:\Users\Marcin.VistaPC>mysqlshow -uroot -p
Enter password: ******
+--------------------+
| Databases |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
C:\Users\Marcin.VistaPC>
Listing 1.3. Systemowa baza INFORMATION_SCHEMA zawiera metadane dotyczące pozostałych baz danych; systemowa baza mysql zawiera między innymi informacje o użytkownikach serwera i ich uprawnieniach
C:\Users\Marcin.VistaPC>mysqlshow -uroot -p mysql
Enter password: ******
Database: mysql
+---------------------------+
| Tables |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
Instalacja w systemach GNU/Linux
Dlaczego używam nazwy GNU/Linux, a nie po prostu Linux? Najlepiej wyjaśnią to słowa założyciela Fundacji Wolnego Oprogramowania (http://www.fsf.org), Richarda Stallmana: Bardzo proszę nie nazywać systemu operacyjnego Linuksem. Linuksowe jądro jest tylko niewielką częścią systemu operacyjnego. Znaczna część programów stanowiących razem system operacyjny, który nazywa pan Linuksem, nie została napisana przez Linusa Torvaldsa. Programy te stworzyli ochotnicy pracujący w ramach projektu GNU i poświęcający na to swój prywatny czas. Dzięki temu mamy wolny system operacyjny w obecnej postaci. Nieuznawanie ich wysiłków jest niegrzeczne i fałszuje fakty historyczne. Dlatego proszę, aby pan, mówiąc o tym systemie operacyjnym, używał jego właściwej nazwy: GNU/Linux.
W systemach GNU/Linux Sewer MySQL może być zainstalowany:
- Z pakietów dystrybucyjnych wchodzących w skład danej dystrybucji systemu operacyjnego; w takim przypadku instalacja będzie — tak jak w systemach Windows — w pełni automatyczna. Wadą tego rozwiązania jest to, że systemy operacyjne z reguły nie zawierają najnowszej wersji serwera mySQL (listing 1.4).
- Po zainstalowaniu serwera MySQL uruchom serwer baz danych (listing 1.5).
- Ustaw (w systemach Windows konfigurowane przez instalatora) hasło administratora serwera MySQL (listing 1.6).
Listing 1.5. Ręczne uruchomienie serwera baz danych
[root@maszynka init.d]# service mysqld start
Inicjowanie bazy danych MySQL: Installing all prepared tables
Fill help tables
To start mysqld at boot time you have to copy support-files/mysql.server
to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h maszynka.wizzard password 'new-password'
See the manual for more instructions.
You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &
You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:
cd sql-bench ; perl run-all-tests
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at https://order.mysql.com
[ OK ]
Uruchamianie MySQL: [ OK ]
Listing 1.6. Użytkownik root MySQL-a i konto root w systemie operacyjnym to dwa kompletnie różne konta i powinny mieć różne hasła
mysqladmin -u root password 'H@$$l0BD'
- Drugi sposób instalacji serwera MySQL polega na skorzystaniu z najnowszych, dostępnych w internecie (na przykład na stronie danej dystrybucji systemu GNU/Linux lub pod adresem http://dev.mysql.com/downloads) pakietów dystrybucyjnych. W zamieszczonej pod adresem http://isoredirect.centos.org/centos/5/isos/i386 dystrybucji CentOS 5.3 instalacja przebiega następująco (listing 1.7).
- Po zainstalowaniu serwera i zmienieniu hasła jego administratora możemy połączyć się z nim za pomocą monitora MySQL (listing 1.8).
Listing 1.8. Najprostszym sposobem zweryfikowania poprawności instalacji serwera jest połączenie się z nim za pomocą standardowego narzędzia klienckiego
[root@localhost user1]# /usr/bin/mysqladmin -u root password 'haslo'
[root@localhost user1]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.4.1-beta-community MySQL Community Server (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
- Trzeci sposób instalacji serwera MySQL w systemach GNU/Linux polega na jego samodzielnej kompilacji z dostępnych pod adresem http://dev.mysql.com plików źródłowych (listing 1.9).
Listing 1.4. W ten sposób nie tylko zostaną automatycznie pobrane i zainstalowane wszystkie składniki MySQL-a, ale również wymagane do działania serwera składniki systemu
[root@maszynka ~]# yum install mysql*
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
core [1/3]
extras [2/3]
updates [3/3]
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for mysql-devel to pack into transaction set.
…
Dependencies Resolved
Installing:
mysql-administrator i386 1.1.6-3.fc5 extras 1.5 M
mysql-bench i386 5.0.18-2.1 core 514 k
mysql-connector-odbc i386 3.51.12-1.2.1 core 141 k
mysql-devel i386 5.0.18-2.1 core 2.3 M
mysql-gui-common i386 1.1.6-3.fc5 extras 210 k
mysql-server i386 5.0.18-2.1 core 6.6 M
mysqlclient10 i386 3.23.58-9.2 core 253 k
mysqlclient10-devel i386 3.23.58-9.2 core 50 k
mysqlclient14 i386 4.1.14-4.2 core 1.1 M
mysqlclient14-devel i386 4.1.14-4.2 core 94 k
Installing for dependencies:
glibmm24 i386 2.8.4-1 extras 141 k
gtkmm24 i386 2.8.3-1 extras 967 k
libsigc++20 i386 2.0.17-1 extras 49 k
perl-DBD-MySQL i386 3.0002-2.2.2 core 150 k
unixODBC i386 2.2.11-6.2.1 core 905 k
Transaction Summary
=============================================================================
Install 15 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 15 M
Is this ok [y/N]: y
Downloading Packages:
(1/15): mysql-devel-5.0.1 100% |=========================| 2.3 MB 01:18
(2/15): mysqlclient14-dev 100% |=========================| 94 kB 00:02
(3/15): glibmm24-2.8.4-1. 100% |=========================| 141 kB 00:02
(4/15): mysqlclient10-3.2 100% |=========================| 253 kB 00:09
(5/15): mysql-bench-5.0.1 100% |=========================| 514 kB 00:20
(6/15): unixODBC-2.2.11-6 100% |=========================| 905 kB 00:33
(7/15): mysqlclient14-4.1 100% |=========================| 1.1 MB 00:44
(8/15): gtkmm24-2.8.3-1.i 100% |=========================| 967 kB 00:10
(9/15): mysql-administrat 100% |=========================| 1.5 MB 00:26
(10/15): mysql-connector- 100% |=========================| 141 kB 00:06
(11/15): mysql-server-5.0 100% |=========================| 6.6 MB 04:23
(12/15): mysqlclient10-de 100% |=========================| 50 kB 00:01
(13/15): libsigc++20-2.0. 100% |=========================| 49 kB 00:02
(14/15): mysql-gui-common 100% |=========================| 210 kB 00:10
(15/15): perl-DBD-MySQL-3 100% |=========================| 150 kB 00:07
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: libsigc++20 ####################### [ 1/15]
Installing: glibmm24 ####################### [ 2/15]
Installing: gtkmm24 ####################### [ 3/15]
Installing: perl-DBD-MySQL ####################### [ 4/15]
Installing: mysql-gui-common ####################### [ 5/15]
Installing: mysqlclient14 ####################### [ 6/15]
Installing: unixODBC ####################### [ 7/15]
Installing: mysqlclient10 ####################### [ 8/15]
Installing: mysql-devel ####################### [ 9/15]
Installing: mysqlclient14-devel ####################### [10/15]
Installing: mysql-bench ####################### [11/15]
Installing: mysql-administrator ####################### [12/15]
Installing: mysql-connector-odbc ####################### [13/15]
Installing: mysql-server ####################### [14/15]
Installing: mysqlclient10-devel ####################### [15/15]
Installed: mysql-administrator.i386 0:1.1.6-3.fc5 mysql-bench.i386 0:5.0.18-2.1 mysql-connector-odbc.i386 0:3.51.12-1.2.1 mysql-devel.i386 0:5.0.18-2.1 mysql-gui-common.i386 0:1.1.6-3.fc5 mysql-server.i386 0:5.0.18-2.1 mysqlclient10.i386 0:3.23.58-9.2 mysqlclient10-devel.i386 0:3.23.58-9.2 mysqlclient14.i386 0:4.1.14-4.2 mysqlclient14-devel.i386 0:4.1.14-4.2
Dependency Installed: glibmm24.i386 0:2.8.4-1 gtkmm24.i386 0:2.8.3-1 libsigc++20.i386 0:2.0.17-1 perl-DBD-MySQL.i386 0:3.0002-2.2.2 unixODBC.i386 0:2.2.11-6.2.1
Complete!
Listing 1.7. Instalacja serwera MySQL z najnowszych pakietów rpm
[root@localhost user1]# rpm -ivh MySQL-shared-compat-5.4.1-0.rhel5.i386.rpm
Przygotowywanie... ########################################### [100%]
1:MySQL-shared-compat ########################################### [100%]
[root@localhost user1]# rpm -ivh MySQL-client-community-5.4.1-0.rhel5.i386.rpm
Przygotowywanie... ########################################### [100%]
1:MySQL-client-community ########################################### [100%]
[root@localhost user1]# rpm -ivh MySQL-server-community-5.4.1-0.rhel5.i386.rpm
Przygotowywanie... ########################################### [100%]
1:MySQL-server-community ########################################### [100%]
090819 10:46:27 [Warning] Forcing shutdown of 2 plugins
090819 10:46:27 [Warning] Forcing shutdown of 2 plugins
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h localhost.localdomain password 'new-password'
Alternatively you can run:
/usr/bin/mysql_secure_installation
which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.
See the manual for more instructions.
Please report any problems with the /usr/bin/mysqlbug script!
The latest information about MySQL is available at http://www.mysql.com/
Support MySQL by buying support/licenses from http://shop.mysql.com/
Starting MySQL............[ OK ]
Giving mysqld 2 seconds to start
Listing 1.9. Dostępny na podstawie otwartej licencji GPL serwer MySQL można samodzielnie skompilować, dostosowując do go indywidualnych wymagań
[tmf@maszyna mysql-5.4.1-beta]$ ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
…
configure: creating ./config.status
config.status: creating libmysql/libmysql.ver
config.status: creating zlib/Makefile
config.status: creating extra/yassl/Makefile
config.status: creating extra/yassl/taocrypt/Makefile
config.status: creating extra/yassl/taocrypt/benchmark/Makefile
config.status: creating extra/yassl/taocrypt/src/Makefile
config.status: creating extra/yassl/taocrypt/test/Makefile
config.status: creating extra/yassl/src/Makefile
config.status: creating extra/yassl/testsuite/Makefile
config.status: creating plugin/daemon_example/Makefile
config.status: creating plugin/fulltext/Makefile
config.status: creating storage/archive/Makefile
config.status: creating storage/blackhole/Makefile
config.status: creating storage/csv/Makefile
config.status: creating storage/example/Makefile
config.status: creating storage/federated/Makefile
config.status: creating storage/heap/Makefile
config.status: creating storage/innobase/Makefile
config.status: creating storage/myisam/Makefile
config.status: creating storage/myisammrg/Makefile
config.status: creating pstack/Makefile
config.status: creating pstack/aout/Makefile
config.status: creating cmd-line-utils/readline/Makefile
config.status: creating Makefile
config.status: creating extra/Makefile
config.status: creating mysys/Makefile
config.status: creating unittest/Makefile
config.status: creating unittest/mytap/Makefile
config.status: creating unittest/mytap/t/Makefile
config.status: creating unittest/mysys/Makefile
config.status: creating unittest/examples/Makefile
config.status: creating strings/Makefile
config.status: creating regex/Makefile
config.status: creating storage/Makefile
config.status: creating man/Makefile
config.status: creating BUILD/Makefile
config.status: creating vio/Makefile
config.status: creating libmysql/Makefile
config.status: creating libmysql_r/Makefile
config.status: creating client/Makefile
config.status: creating sql/Makefile
config.status: creating sql/share/Makefile
config.status: creating sql/sql_builtin.cc
config.status: creating sql-common/Makefile
config.status: creating dbug/Makefile
config.status: creating scripts/Makefile
config.status: creating include/Makefile
config.status: creating tests/Makefile
config.status: creating Docs/Makefile
config.status: creating support-files/Makefile
config.status: creating support-files/MacOSX/Makefile
config.status: creating support-files/RHEL4-SElinux/Makefile
config.status: creating cmd-line-utils/Makefile
config.status: creating cmd-line-utils/libedit/Makefile
config.status: creating libmysqld/Makefile
config.status: creating libmysqld/examples/Makefile
config.status: creating mysql-test/Makefile
config.status: creating mysql-test/lib/My/SafeProcess/Makefile
config.status: creating netware/Makefile
config.status: creating sql-bench/Makefile
config.status: creating include/mysql_version.h
config.status: creating plugin/Makefile
config.status: creating win/Makefile
config.status: creating include/config.h
config.status: executing depfiles commands
config.status: executing libtool commands
/bin/rm: cannot remove `libtoolT': No such file or directory
config.status: executing default commands
MySQL has a Web site at http://www.mysql.com/ which carries details on the
latest release, upcoming features, and other information to make your
work or play with MySQL more productive. There you can also find
information about mailing lists for MySQL discussion.
Remember to check the platform specific part of the reference manual for
hints about installing MySQL on your platform. Also have a look at the
files in the Docs directory.
Thank you for choosing MySQL!
[tmf@maszyna mysql-5.4.1-beta]$ make
…
make[1]: Wejście do katalogu `/home/tmf/mysql/mysql-5.4.1-beta/libmysql'
make install-am
make[2]: Wejście do katalogu `/home/tmf/mysql/mysql-5.4.1-beta/libmysql'
make[3]: Wejście do katalogu `/home/tmf/mysql/mysql-5.4.1-beta/libmysql'
test -z "/usr/local/lib/mysql" || /bin/mkdir -p "/usr/local/lib/mysql"
/bin/sh ../libtool --preserve-dup-deps --mode=install /usr/bin/install
-c 'libmysqlclient.la' '/usr/local/lib/mysql/libmysqlclient.la'
libtool: install: /usr/bin/install -c .libs/libmysqlclient.so.16.0.0
/usr/local/lib/mysql/libmysqlclient.so.16.0.0
libtool: install: (cd /usr/local/lib/mysql && { ln -s -f
libmysqlclient.so.16.0.0 libmysqlclient.so.16 || { rm -f
libmysqlclient.so.16 && ln -s libmysqlclient.so.16.0.0
libmysqlclient.so.16; }; })
libtool: install: (cd /usr/local/lib/mysql && { ln -s -f
libmysqlclient.so.16.0.0 libmysqlclient.so || { rm -f libmysqlclient.so &&
ln -s libmysqlclient.so.16.0.0 libmysqlclient.so; }; })
libtool: install: /usr/bin/install -c .libs/libmysqlclient.lai
/usr/local/lib/mysql/libmysqlclient.la
libtool: install: /usr/bin/install -c .libs/libmysqlclient.a
/usr/local/lib/mysql/libmysqlclient.a
libtool: install: chmod 644 /usr/local/lib/mysql/libmysqlclient.a
libtool: install: ranlib /usr/local/lib/mysql/libmysqlclient.a
libtool: finish:
PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/sbin"
ldconfig -n /usr/local/lib/mysql
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib/mysql
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
Instalacja dodatkowych narzędzi w systemie Windows
Standardowe narzędzia administracyjne może są funkcjonalne, ale zdecydowanie nie są przyjazne dla użytkownika. Na potrzeby kursu zainstalujemy dwa dodatkowe, graficzne narzędzia: jedno służące do administrowania serwerem, drugie do pisania programów w języku SQL. Oba programy są bezpłatne i dostępne na stronie http://www.mysql.com/products/tools.
W internecie jest mnóstwo narzędzi do zarządzania serwerem MySQL. Niektóre z nich umożliwiają administrowanie przez WWW — na przykład popularny PHPMyAdmin. Korzystanie z tego programu (a przynajmniej z jego niektórych wersji) nie wymaga do uzyskania pełnego dostępu do serwera podania nazwy użytkownika i hasła. Innymi słowy, po jego zainstalowaniu i skonfigurowaniu wszyscy internauci będą mogli zarządzać serwerem — będą oni mogli odczytywać i modyfikować dane, tworzyć własne bazy, usuwać już istniejące itd. Nie należy instalować i używać programów, które obniżają poziom bezpieczeństwa do zera.
Żeby zainstalować pakiet narzędzi, w którego skład wchodzą: MySQL Administrator, MySQL Query Browser oraz MySQL Migration Toolkit:
- Połącz się ze stroną http://dev.mysql.com/downloads/gui-tools/5.0.html.
- Pobierz przeznaczoną dla Twojego systemu operacyjnego wersję pakietu.
- Uruchom pobrany program instalacyjny.
- Kliknij Next i zaakceptuj licencję końcowego użytkownika (te programy również są dostępne na podstawie licencji GNU).
- Wskaż lokalizację plików.
- Wybierz kompletną instalację.
- Kliknij Next, a następnie Install. Po ewentualnym potwierdzeniu posiadania uprawnień administracyjnych pakiet narzędzi zostanie zainstalowany.
MySQL Administrator
MySQL Administrator jest narzędziem do zarządzania serwerem MySQL — pozwala on między innymi: uruchamiać i zatrzymać serwer baz danych, konfigurować jego opcje startowe, tworzyć użytkowników i zarządzać nimi, monitorować pracę serwera, tworzyć i odtwarzać kopie zapasowe baz danych czy sprawdzać stan poszczególnych baz danych.
- Uruchom zainstalowany program, zarejestrowany w sekcji Wszystkie programy/MySQL. W celu nawiązania połączenia będziesz musiał podać prawidłowe dane uwierzytelniające (rysunek 1.15).
- Po podaniu prawidłowej nazwy serwera, użytkownika i hasła, wyświetli się główne okno programu (rysunek 1.16).
|
Rysunek 1.15. MySQL Administrator nie przechowuje haseł użytkowników |
|
Rysunek 1.16. Graficzne narzędzie administratora serwera baz danych w wersji dla systemów Windows pozwala nie tylko zarządzać serwerem MySQL, ale również uruchamiać inne narzędzia administracyjne |
W systemach Windows razem z programem MySQL Administrator zainstalowany zostanie dodatkowy program — MySQL System Tray Monitor. Dodaj ikonę tego programu do folderu Autostart (można to zrobić, klikając prawym przyciskiem myszy Start, wybierając Eksploruj wszystkich użytkowników i przeciągając myszą skrót MySQL System Tray Monitor do folderu Autostart) — w ten sposób po ponownym uruchomieniu systemu na pasku powiadomień systemu operacyjnego pojawi się ikona informująca Cię o tym, czy MySQL działa, czy został zatrzymany.
Klikając ikonę tego programu prawym przyciskiem myszy, wyświetlisz menu kontekstowe, pozwalające szybko uruchomić lub zatrzymać serwer baz danych, skonfigurować podstawowe opcje czy uruchomić program MySQL Administrator (rysunek 1.17).
|
Rysunek 1.17. Menu kontekstowe narzędzia MySQL System Tray Monitor |
MySQL Query Browser
Drugim przydatnym — głównie programistom baz danych (i nam w trakcie większej części kursu) — narzędziem jest MySQL Query Browser. Jest to program pozwalający wykonywać instrukcje języka SQL.
- Uruchom program MySQL Query Browser. Do nawiązania połączenia będziesz musiał podać prawidłowe dane uwierzytelniające, tym razem dodatkowo wskazując domyślny schemat.
- Ponieważ nazwy obiektów (na przykład tabel) są jednoznaczne w ramach schematu (czyli w schematach X i Y może być tabela o tej samej nazwie), niepodanie domyślnego schematu spowoduje wyświetlenie ostrzeżenia (rysunek 1.18).
- Po uruchomieniu zobaczysz graficzny program pozwalający szybko i łatwo pisać instrukcje języka SQL — pokazane na rysunku 1.19 instrukcje zostały „napisane” przy użyciu myszy, poprzez przeciągnięcie obiektów z okienek menu bocznego do głównego okna programu.
Schemat albo przestrzeń nazw to zbiór powiązanych ze sobą obiektów bazy danych. Na przykład komplet tabel przechowujących dane marketingowe włącznie z odpowiednimi widokami i procedurami może być zapisany w schemacie marketing. Odpowiednikiem schematu jest w MySQL-u baza danych.
|
Rysunek 1.18. Tym razem zignoruj ostrzeżenie i uruchom program |
|
Rysunek 1.19. MySQL Query Browser pozwala nie tylko szybko napisać instrukcję SQL, ale również sprawdzić strukturę bazy czy wyświetlić pomoc dotyczącą pisanego kodu |
Aktualizacja serwera
Aktualizacja serwera MySQL polega na zastąpieniu nową wersją wcześniejszej wersji serwera, dlatego zaleca się stopniowe aktualizacje do następnej wersji. Na przykład serwer w wersji 4.0 należy najpierw zaktualizować do wersji 4.1, następnie 4.2 itd. Żeby zaktualizować serwer MySQL:
- Wykonaj kopię zapasową wszystkich baz danych. W tym przypadku zalecaną metodą utworzenia kopii zapasowych jest skorzystanie z narzędzia mysqldump. Utworzony w poniższy sposób plik backup.sql będzie zawierał instrukcje tworzące i wypełniające oryginalnymi danymi wszystkie bazy danych:
C:\Users\Marcin.VistaPC>mysqldump -uroot -p --all-databases >c:\temp\backup.sql
Enter password: ****
- Zatrzymaj usługę serwera MySQL.
- Uruchom program instalacyjny nowszej wersji tego serwera.
- Odtwórz wykonaną w punkcie 1. kopię zapasową baz danych.
- Po zakończeniu aktualizacji sprawdź spójność baz danych za pomocą polecenia mysql_upgrade.
Przykładowa baza danych
W dalszej części kursu nauczysz się projektować i tworzyć bazy danych, ale przez większą jego część będziemy używać gotowej, prostej bazy danych. Aby ją utworzyć:
- Uruchom program MySQL Query Browser i połącz się z lokalnym serwerem, nie podając domyślnego schematu.
- Skopiuj do pustego pliku listing 1.10 i zapisz go z rozszerzeniem .sql.
- Otwórz (wybierając Plik/Otwórz skrypt) utworzony skrypt.
- Kliknij przycisk Wykonaj (rysunek 1.20).
Listing 1.10. Skrypt tworzący testową bazę danych, sześć powiązanych tabel i wypełniający te tabele danymi
DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;
CREATE TABLE customer
(
customer_id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
title char(4) ,
fname varchar(32) ,
lname varchar(32) NOT NULL,
addressline varchar(64) ,
town varchar(32) ,
zipcode char(10) NOT NULL,
phone varchar(16)
) TYPE = InnoDB;
CREATE TABLE item
(
item_id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
description varchar(64) NOT NULL,
cost_price numeric(7,2) ,
sell_price numeric(7,2)
) TYPE = InnoDB;
CREATE TABLE orderinfo
(
orderinfo_id int AUTO_INCREMENT NOT NULL PRIMARY KEY,
customer_id integer NOT NULL,
date_placed date NOT NULL,
date_shipped date ,
shipping numeric(7,2),
INDEX (customer_id),
CONSTRAINT orderinfo_customer_id_fk FOREIGN KEY(customer_id) REFERENCES customer(customer_id)
) TYPE = InnoDB;
CREATE TABLE stock
(
item_id integer NOT NULL AUTO_INCREMENT PRIMARY KEY,
quantity integer NOT NULL,
CONSTRAINT stock_item_id_fk FOREIGN KEY(item_id) REFERENCES item(item_id)
) TYPE = InnoDB;
CREATE TABLE orderline
(
orderinfo_id integer NOT NULL,
item_id integer NOT NULL,
quantity integer NOT NULL,
PRIMARY KEY(orderinfo_id, item_id),
INDEX(item_id),
CONSTRAINT orderline_orderlinfo_id_fk FOREIGN KEY (orderinfo_id) REFERENCES orderinfo(orderinfo_id),
CONSTRAINT orderline_item_id_fk FOREIGN KEY (item_id) REFERENCES item(item_id)
) TYPE = InnoDB;
CREATE TABLE barcode
(
barcode_ean char(13) NOT NULL PRIMARY KEY,
item_id integer NOT NULL,
INDEX(item_id),
CONSTRAINT barcode_item_id_fk FOREIGN KEY(item_id) REFERENCES item(item_id)
) TYPE = InnoDB;
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Miss','Jenny','Stones','27 Rowan Avenue','Hightown','NT2 1AQ','023 9876');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Andrew','Stones','52 The Willows','Lowtown','LT5 7RA','876 3527');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Miss','Alex','Matthew','4 The Street','Nicetown','NT2 2TX','010 4567');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Adrian','Matthew','The Barn','Yuleville','YV67 2WR','487 3871');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Simon','Cozens','7 Shady Lane','Oahenham','OA3 6QW','514 5926');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Neil','Matthew','5 Pasture Lane','Nicetown','NT3 7RT','267 1232');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Richard','Stones','34 Holly Way','Bingham','BG4 2WE','342 5982');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mrs','Anna','Stones','34 Holly Way','Bingham','BG4 2WE','342 5982');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mrs','Christine','Hickman','36 Queen Street','Histon','HT3 5EM','342 5432');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Mike','Howard','86 Dysart Street','Tibsville','TB3 7FG','505 5482');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Dave','Jones','54 Vale Rise','Bingham','BG3 8GD','342 8264');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Richard','Neill','42 Thached way','Winersby','WB3 6GQ','505 6482');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mrs','Laura','Hendy','73 Margeritta Way','Oxbridge','OX2 3HX','821 2335');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','Bill','Neill','2 Beamer Street','Welltown','WT3 8GM','435 1234');
INSERT INTO customer(title, fname, lname, addressline, town, zipcode, phone) VALUES('Mr','David','Hudson','4 The Square','Milltown','MT2 6RT','961 4526');
INSERT INTO customer(lname, zipcode) VALUES('Wolski','MX2 6RV');
INSERT INTO item(description, cost_price, sell_price) VALUES('Wood Puzzle', 15.23, 21.95);
INSERT INTO item(description, cost_price, sell_price) VALUES('Rubik Cube', 7.45, 11.49);
INSERT INTO item(description, cost_price, sell_price) VALUES('Linux CD', 1.99, 2.49);
INSERT INTO item(description, cost_price, sell_price) VALUES('Tissues', 2.11, 3.99);
INSERT INTO item(description, cost_price, sell_price) VALUES('Picture Frame', 7.54, 9.95);
INSERT INTO item(description, cost_price, sell_price) VALUES('Fan Small', 9.23, 15.75);
INSERT INTO item(description, cost_price, sell_price) VALUES('Fan Large', 13.36, 19.95);
INSERT INTO item(description, cost_price, sell_price) VALUES('Toothbrush', 0.75, 1.45);
INSERT INTO item(description, cost_price, sell_price) VALUES('Roman Coin', 2.34, 2.45);
INSERT INTO item(description, cost_price, sell_price) VALUES('Carrier Bag', 0.01, 0.0);
INSERT INTO item(description, cost_price, sell_price) VALUES('Speakers', 19.73, 25.32);
INSERT INTO item (description) VALUES ('SQL Server 2005');
INSERT INTO orderinfo(customer_id, date_placed, date_shipped, shipping) VALUES(3, '2000-03-13', '2000-03-17', 2.99);
INSERT INTO orderinfo(customer_id, date_placed, date_shipped, shipping) VALUES(8, '2000-06-23', '2000-06-23', 0.00);
INSERT INTO orderinfo(customer_id, date_placed, date_shipped, shipping) VALUES(15, '2000-09-02', '2000-09-12', 3.99);
INSERT INTO orderinfo(customer_id, date_placed, date_shipped, shipping) VALUES(13, '2000-09-03', '2000-09-10', 2.99);
INSERT INTO orderinfo(customer_id, date_placed, date_shipped, shipping) VALUES(8, '2000-07-21', '2000-07-24', 0.00);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(1, 4, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(1, 7, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(1, 9, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(2, 1, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(2, 10, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(2, 7, 2);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(2, 4, 2);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(3, 2, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(3, 1, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(4, 5, 2);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(5, 1, 1);
INSERT INTO orderline(orderinfo_id, item_id, quantity) VALUES(5, 3, 1);
INSERT INTO stock(item_id, quantity) VALUES(1,12);
INSERT INTO stock(item_id, quantity) VALUES(2,2);
INSERT INTO stock(item_id, quantity) VALUES(4,8);
INSERT INTO stock(item_id, quantity) VALUES(5,3);
INSERT INTO stock(item_id, quantity) VALUES(7,8);
INSERT INTO stock(item_id, quantity) VALUES(8,18);
INSERT INTO stock(item_id, quantity) VALUES(10,1);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6241527836173', 1);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6241574635234', 2);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6264537836173', 3);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6241527746363', 3);
INSERT INTO barcode(barcode_ean, item_id) VALUES('7465743843764', 4);
INSERT INTO barcode(barcode_ean, item_id) VALUES('3453458677628', 5);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6434564564544', 6);
INSERT INTO barcode(barcode_ean, item_id) VALUES('8476736836876', 7);
INSERT INTO barcode(barcode_ean, item_id) VALUES('6241234586487', 8);
INSERT INTO barcode(barcode_ean, item_id) VALUES('9473625532534', 8);
INSERT INTO barcode(barcode_ean, item_id) VALUES('9473627464543', 8);
INSERT INTO barcode(barcode_ean, item_id) VALUES('4587263646878', 9);
INSERT INTO barcode(barcode_ean, item_id) VALUES('9879879837489', 11);
INSERT INTO barcode(barcode_ean, item_id) values('2239872376872', 11);
|
Rysunek 1.20. Po wykonaniu skryptu pojawi się w prawym górnym okienku menu bocznego programu baza test, a w niej sześć tabel |
Gdyby wykonanie skryptu skończyło się błędem związanym z niemożliwością utworzenia tabel typu InnoDB, włącz obsługę tego typu tabel i raz jeszcze uruchom skrypt. Informacje o tym, jak włączyć tę funkcjonalność, znajdziesz w drugim odcinku kursu.