Федеральное агентство по образованию
Государственное образовательное учреждение высшего профессионального образования
«ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Утверждаю
Декан (директор)
С. А. Гайворонский
« » 2009 г.
А.А. Пономарев
Создание структуры БД и манипулирование данными в СУБД MySQL
Методические указания к выполнению лабораторных работ
по курсу «Базы данных» для студентов III курса специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных систем». 230201 «Информационные системы и технологии».
Издательство
Томского политехнического университета
2009
УДК 681.324.016
ББК 00000
П00
Пономарев А.А.
П00 Базы данных: методические указания по выполнению лабораторного практикума для студентов специальностей 230105 «Программное обеспечение вычислительной техники и автоматизированных систем», 230201 «Информационные системы и технологии». В трех частях, часть первая. /Сост. А.А. Пономарев. – Томск: Изд-во ТПУ, 2009. – 80 с.
УДК 681.324.016
ББК 00000
Методические указания рассмотрены и рекомендованы
к изданию методическим семинаром кафедры
автоматики и компьютерных систем
« 29 » октября 2009 г.
Зав. кафедрой АиКС
доктор технических наук __________Г.П. Цапко
Председатель учебно-методической
комиссии __________Е.А. Кочегурова
Рецензент
Доктор технических наук, профессор
Д.Г. Копаница
© Пономарев А.А., 2009
© Томский политехнический университет, 2009©Оформление. Издательство Томского
политехнического университета, 2009
Оглавление
Лабораторная работа №2. Моделирование баз данных средствами Erwin. 16
Лабораторная работа №3. Создание баз данных и таблиц в среде MYSQL. Информационное наполнение. 26
Лабораторная работа №4 Создание запросов и модификация таблиц базы данных. 35
Лабораторная работа №5. Работа с внешними базами данных. 46
Лабораторная работа №6. Представления, хранимые процедуры, функции, триггеры. 51
Хранимые процедуры и функции. 52
Цель работы: Ознакомиться с приложениями, включенными в состав СУБД MySQL. Получить навыки управления учетными записями пользователей и определения привилегий. Ознакомиться с утилитами, входящими в состав СУБД MySQL, получить навыки работы с ними.
Запуск MySQL
Управление сервером обычно осуществляется из командной строки. Запуск в Windows 95/98/2000/XP осуществляется через сеанс DOS выполнением следующей команды:
D:\usr\local\Mysql\bin\mysqld --standalone |
Эта команда запустит демон mysql в фоновом режиме. В Windows 95/98 не предусмотрен запуск mysqld в виде службы. В Windows 2000 демон mysql запускается в виде службы.
Можно осуществить запуск winmysqladmin.exe, в этом случае все настройки перечисляются в файле my.ini
При запуске mysqld можно указывать следующие опции:
Таблица 1- Опции команды MySQLD
-?, --help | Справка |
-b, --basedir=[path] | Путь к каталогу в котором установлен mysql |
-h, --datadir [homedir] | Путь к каталогу, в котором хранятся базы данных. |
-l, --log=[filename] | Имя журнала транзакций |
-L, --language=[language] | Язык по умолчанию(обычно English). |
-P, --port=[port] | Порт для соединения. |
--skip-grant-tables | Игнорировать таблицы привилегий. Это дает любому ПОЛНЫЙ доступ ко всем таблицам. Не следует предоставлять обычным пользователям разрешений на запуск mysqld. |
--skip-name-resolve | Позволяет предоставлять доступ только тем хостам, чьи IP-адреса указаны в таблицах привилегий. Ипользуется для более высокого уровня защиты. |
--skip-networking | Использовать подключения только через интерфейс localhost. |
-V, --version | Вывести информацию о версии. |
Наличие в статусной строке иконки светофора с активным зеленым цветом указывает на то, что сервер запущен (см. рис 1).
Рисунок 1 - Приложение winmysqladmin запущено
Теперь можно попытаться войти в сервер. В случае, если предполагается управление сервером через консоль, то необходимо использовать команду mysql. Изначально существует единственный пользователь, которому предоставляется право входа - root, которая не имеет пароля. Первое, что нужно сделать войти под именем root и зарегистрировать нового пользователя и установить для него пароль. Команда mysql может использовать следующие опции:
Таблица 2 - Опции команды MySQL
-?, --help | Справка |
-h,--hostname=[hostname] | Имя сервера mysql. |
-u, --user=[user] | Имя пользователя для доступа к mysql. |
-p, --password=[password] | Пароль пользователя для доступа к mysql. |
-P, --port=[port] | Порт для соединения с сервером. |
-V, --version | Информация о версии |
Примечание. Команды mysqld и mysql имеют еще некоторые опции, но в данный момент они особого интереса не представляют.
Запуск из сеанса ДОС осуществляется как показано на Рисунок 2 (в указанном случае осуществляется подключение к БД mysql).
Рисунок 2 - Запуск консоли MYSQL
Для выполнения в строке наберите команду: mysql –u root
Рисунок 3 - Успешный запуск консоли
Если вы это получили, значит вы успешно вошли в консоль mysql, которая используется для администрирования сервера.
Для составления отчета вам понадобятся приведение команд, которые вы будете посылать на сервер. В MySQL имеется возможность ведение протокола выполняемых команд, чтобы запустить ведение протокола необходимо выполнить команду
\T filename
!!! обязательно в верхнем регистре. Filename – имя файла, в который будут записываться команды (создается автоматически при выполнении команды, и действует во время жизни сеанса, т.е. в случае отключения от сервера лог прерывается и для возобновления необходимо повторить команду с выводом в новый файл, так как команда затирает имеющиеся в файле данные).
Просмотр списка БД, доступных на сервере осуществляется командой SHOW DATABASES.
Для выполнения в строке наберите команду: show databases.
Командой: USE MYSQL; – выбираем текущую БД где MYSQL имя БД.
Система привилегий и безопасность в MySQL
· User
· Db
· Host
· Пользовательские привилегии
База данных mysql и таблицы привилегий.
Итак, вы успешно вошли в базу данных mysql, которая используется для администрирования сервера. Что же здесь находится? А находятся здесь 5 таблиц, которые ничем не отличаются от других таблиц баз данных, за исключением того, что эти таблицы используются для предоставления доступа к базам данных и таблицам в них пользователям. Рассмотрим каждую из них.
Введите следующую команду, show tables, которая покажет таблицы в базе данных mysql.
Кратко рассмотрим функции каждой из таблиц:
Определяет, разрешено ли пользователю, пытающемуся подключиться к серверу делать это. Содержит имя пользователя, пароль а также привилегии. Если ввести команду show columns from user; то получим следующее:
Таблица 3- Структура таблицы User
Field | Type | Null | Key | Default | Extra |
Host | char(60) | PRI | |||
User | char(16) | PRI | |||
Password | char(41) | ||||
Select_priv | enum('N','Y') | N | |||
Insert_priv | enum('N','Y') | N | |||
Update_priv | enum('N','Y') | N | |||
Delete_priv | enum('N','Y') | N | |||
Create_priv | enum('N','Y') | N | |||
Drop_priv | enum('N','Y') | N | |||
Reload_priv | enum('N','Y') | N | |||
Shutdown_priv | enum('N','Y') | N | |||
Process_priv | enum('N','Y') | N | |||
File_priv | enum('N','Y') | N | |||
Grant_priv[1] | enum('N','Y') | N | |||
References_priv | enum('N','Y') | N | |||
Index_priv | enum('N','Y') | N | |||
Alter_priv | enum('N','Y') | N | |||
Show_db_priv | enum('N','Y') | N | |||
Super_priv | enum('N','Y') | N | |||
Create_tmp_table_priv | enum('N','Y') | N | |||
Lock_tables_priv | enum('N','Y') | N | |||
Execute_priv | enum('N','Y') | N | |||
Repl_slave_priv | enum('N','Y') | N | |||
Repl_client_priv | enum('N','Y') | N | |||
Create_view_priv | enum('N','Y') | N | |||
Show_view_priv | enum('N','Y') | N | |||
Create_routine_priv | enum('N','Y') | N | |||
Alter_routine_priv | enum('N','Y') | N | |||
Create_user_priv | enum('N','Y') | N | |||
Event_priv | enum('N','Y') | N | |||
Trigger_priv | enum('N','Y') | N | |||
ssl_type | enum('','ANY','X509','SPECIFIED') | ||||
ssl_cipher | blob | NULL | |||
x509_issuer | blob | NULL | |||
x509_subject | blob | NULL | |||
max_questions | int(11) unsigned | 0 | |||
max_updates | int(11) unsigned | 0 | |||
max_connections | int(11) unsigned | 0 | |||
max_user_connections | int(11) unsigned | 0 |
Изначально эта таблица содержит пользователя root без пароля. По умолчанию root может входить с любого хоста, имеет все привилегии и доступ ко всем базам данных.Также в таблице содержится запись для пользователя '%'.