Главная страница

Проектирование. 380305БИ_Проектирование баз данных_лабораторные_ПоповВБ.docx. Лабораторная работа 1. Интерфейс субд mysql. Предоставление доступа и привилегий. Утилиты, входящие в состав субд цель работы


Скачать 1.15 Mb.
НазваниеЛабораторная работа 1. Интерфейс субд mysql. Предоставление доступа и привилегий. Утилиты, входящие в состав субд цель работы
АнкорПроектирование
Дата11.12.2022
Размер1.15 Mb.
Формат файлаdocx
Имя файла380305БИ_Проектирование баз данных_лабораторные_ПоповВБ.docx.docx
ТипЛабораторная работа
#839179
страница1 из 14
  1   2   3   4   5   6   7   8   9   ...   14

2. СОЗДАНИЕ СТРУКТУРЫ БАЗЫ ДАННЫХ И УПРАВЛЕНИЕ ДАННЫМИ В СУБД MYSQL

Методические указания к выполнению лабораторных работ

по курсу

«Проектирование и администрирование Баз данных»

Лабораторная работа №1.

Интерфейс СУБД MySQL. Предоставление доступа и привилегий. Утилиты, входящие в состав СУБД
Цель работы: Ознакомиться с приложениями, включенными в состав СУБД MySQL. Получить навыки управления учетными записями пользователей и определения привилегий. Ознакомиться с утилитами, входящими в состав СУБД MySQL, получить навыки работы с ними.
Запуск MySQL

Управление сервером обычно осуществляется из командной строки. Запуск в Windows XP/7/8/10 осуществляется через сеанс в командной строке выполнением следующей команды:

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

Для выполнения в строке наберите команду: mysqlu root



Рисунок 3 - Успешный запуск консоли

Если вы это получили, значит вы успешно вошли в консоль mysql, которая используется для администрирования сервера.

Для составления отчета вам понадобятся приведение команд, которые вы будете посылать на сервер. В MySQL имеется возможность ведение протокола выполняемых команд, чтобы запустить ведение протокола необходимо выполнить команду

\T filename

!!! обязательно в верхнем регистре. Filename – имя файла, в который будут записываться команды (создается автоматически при выполнении команды, и действует во время жизни сеанса, т.е. в случае отключения от сервера лог прерывается и для возобновления необходимо повторить команду с выводом в новый файл, так как команда затирает имеющиеся в файле данные).

Просмотр списка БД, доступных на сервере осуществляется командой SHOW DATABASES.

Для выполнения в строке наберите команду: show databases.

Командой: USE MYSQL; – выбираем текущую БД где MYSQL имя БД.

Система привилегий и безопасность в MySQL

  • User

  • Db

  • Host

  • Пользовательские привилегии

База данных mysql и таблицы привилегий.

Итак, вы успешно вошли в базу данных mysql, которая используется для администрирования сервера. Что же здесь находится? А находятся здесь 5 таблиц, которые ничем не отличаются от других таблиц баз данных, за исключением того, что эти таблицы используются для предоставления доступа к базам данных и таблицам в них пользователям. Рассмотрим каждую из них.

Введите следующую команду, show tables, которая покажет таблицы в базе данных mysql.

Кратко рассмотрим функции каждой из таблиц:

Таблица User

Определяет, разрешено ли пользователю, пытающемуся подключиться к серверу делать это. Содержит имя пользователя, пароль а также привилегии. Если ввести команду 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_priv1

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 может входить с любого хоста, имеет все привилегии и доступ ко всем базам данных.Также в таблице содержится запись для пользователя '%'.

В БД MYSQL содержатся таблицы, называемых таблицами привилегий. Система привилегий будет подробно рассмотрена далее, а пока вы можете выполнить команды на добавления своего пользователя:

Для добавления нового пользователя your_name, можно выполнить следующие операторы языка (Insert):


Insert into user (host, user, password, ssl_cipher2, x509_issuer, x509_subject ) values ('localhost’, 'your_name', password('your_pass'), ‘’, ‘’, ‘’);
Выполнением команды

Select host, user, password from user;

Мы выводим перечисленные поля в виде таблицы


Host

User

Password

%

root

456g879k34df9




Если необходимо выделить все столбцы таблицы, то необходимо набрать * в качестве аргумента команды select.

Чтобы изменения вступили в силу нужно перегрузить сервер, предварительно закончив текущий сеанс работы командой quit.

mysqladmin -urootreload(эта команда перегружает сервер)

После установки пароля для пользователя нужно перезагрузить сервер командой mysqladmin reload, чтобы изменения вступили в силу. После этого можно попробовать войти снова:


Mysql/bin/mysql -u your_name -p mysql

Enter password:*******

Если же после этой операции вы не получите приглашение ко входу, то необходимо будет повторить вход в сервер под учетной записью ROOT и назначить необходимые права. Т.о., недостаточно добавить сведения о пользователе в системную БД, дополнительно необходимо назначить права пользователю, после чего можно начинать настраивать таблицы привилегий, вводить новых пользователей, создавать базы данных и таблицы, то есть делать все то, что называется администрированием. Назначить права можно указанием инструкцией INSERT для заполнения соответствующие привилегии (перечень привилегий см.

Таблица 3)

Mysql/bin/mysql -uroot

И выполнить следующий запрос к БД:
Mysql>USE MYSQL;

Mysql>GRANT ALL PRIVILEGES ON *.* TO 'your_name'@'localhost3' IDENTIFIED BY 'your_pass' WITH GRANT OPTION;

Mysql>FLUSH PRIVILEGES;


Если пароль был случайно забыт, чтобы его задать по новой, придется стереть файлы mysql.frm mysql.MYI и mysql.MYD из папки с базами данных, затем запустить скрипт mysql_install_db и повторить все по новой. Можно воспользоваться ключом MYSQL и ввести --skip-grant-tables, при этом все пароли будут имеет пустое поле.

Команда имеет вид mysqld --skip-grant-tables.
  1   2   3   4   5   6   7   8   9   ...   14


написать администратору сайта