Инструменты пользователя

Инструменты сайта


mysql

Занятие № 2.2

Настройка сервера баз данных. Начнем с определений:

База данных — совокупность данных, хранимых в соответствии со схемой данных, манипулирование которыми выполняют в соответствии с правилами средств моделирования данных.

Сервер БД обслуживает базу данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода-вывода при доступе клиента к информации.

Круг применения баз данных достаточно широк и по этому в нашем курсе нужно отвести место изучению сервера БД Mysql. Графически механизм работы MySql можно представить следующим образом:

Перейдем непосредственно к настройке нашего сервера БД.

Наберем команду для установки MySql:

	yum -y install mysql-server

Ключ -y указан для того чтобы система отвечала на все вопросы при установке «YES».

Если установка прошла без ошибок, проверим статус нашего сервера.

	/etc/init.d/mysqld status

Система сообщит о том что сервер mysql остановлен. Давайте его запустим:

	/etc/init.d/mysqld start

Для того чтобы зайти в консоль самого сервера наберем

	mysql

Набрав эту команду мы получили доступ к консоли сервера. О том что мы зашли в консоль mysql свидетельствует строка приглашения. Начинающаяся со слова mysql и заканчивается символом >. Сейчас нужно набрать команду exit для выхода в системную консоль. Команды mysql будут рассмотрены ниже.

Стоит заметить что сервер MySql впустил нас в свою консоль не спросив пароля, с точки зрения безопасности это неправильно. Давайте зададим пароль к серверу БД. Для этого выполним команду заменив в ней mypasswd на реальный пароль:

	/usr/bin/mysqladmin -u root password 'mypasswd'

Попробуем войти в консоль сервера БД при помощи набрав команду mysql. В ответ на система выдаст:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Теперь для входа будем использовать команду mysql с дополнительными ключами:

 	mysql -u root -p 

Ключ -u показывает от имени какого пользователя мы хотим совершить вход в систему, a -p говорит серверу о том что пользователь будет вводить пароль. Как и в системе пользователь root имеет доступ к к серверу и ко всем БД которые на нем работают. Часто возникает ситуация в которой для обеспечения безопасности и сохранности данных нужно базу данных и пользователя который имеет доступ только к ней.

Давайте зайдем в консоль сервера БД и создадим базу данных mydb.

	create database mydb;

Замечу что после команды обязательно ставить символ «;». Теперь посмотрим все базы данных которые есть на нашем сервере:

	
	show databases;

В консоли увидим список:

В этом списке представлены все базы данных нашего сервера. Давайте разберемся что это за базы. База information_schema появилась достаточно недавно начиная с 5 версии mysql server. Это виртуальная база (не хранится в виде файлов, а формируется во время запуска сервера), содержащая метаданные баз данных, т.е. информацию о структуре баз данных. Доступна только для чтения. База mysql (не путать с сервером MySql) это реальная база которая содержит служебную информацию для mysql сервера. База test это поставляемая с mysql сервером тестовая база которая может быть использована для изучения работы сервера. Соответственно база mydb только что созданная нами база. Самостоятельно создадим еще одну базу mysql и назовем ее mydb2. Теперь мы можем создать пользователя и разрешить ему давать запросы к таблицам базы данных mydb.

	create user 'student'@'localhost' identified by 'studentpass';

Этой командой мы создали пользователя student с паролем studentpass. Выйдем из консоли mysql, попробуем войти в консоль mysql испрользуя вновь созданные имя пользователя и пароль.

mysql -u student -p

После ввода пароля попадем в консоль mysql и попробуем посмотреть список база данных на сервере. Заметим что пользователь student не видит вновь созданные базы, т.к. мы не задали серверу права доступа для нашего пользователя. Дайте дадим пользователю student полные права на базу данных mydb. Зайдем в консоль mysql под учетной записью root

	grant all privileges on mydb.* to 'student'@'localhost';

Снова попробуем зайти в консоль mysql под учетной записью student. Просмотрим список баз данных. В списке доступных баз появилась база mydb. Итак мы рассмотрели систему разграничения прав доступа к базам данных, замечу что права пользователя на работу с базой данных можно разграничивать гораздо тоньше чем в нашем случае. Например можно создать несколько пользователей и дать им разные уровни доступа — одному только на чтение, другому полный доступ.

Для дальнейшей работы нам нужно наполнить нашу базу таблицами и информацией.

Зайдем в консоль mysql под учетной записью student просмотрим доступные для пользователя student базы данных:

Выберем для работы базу данных mydb.

	use mydb;

Создадим в ней таблицу с следующими графами:

name -имя 
surname-фамилия 
phone - телефон 
sex — пол 

Для упрощения задачи все столбцы таблицы будут содержать символьные данные форматов char и varchar.

create table contacts (name varchar(20), surname varchar(20), phone varchar(20) , sex char(1) );

Этим запросом мы создали таблицу contacts в базе данных mydb. Можем посмотреть структуру созданной таблицы:

	show columns from contacts; 
Теперь заполним таблицу данными. Для этого создадим запрос к базе данных который вставит в нашу таблицу данные о конкретном человеке. 
insert into contacts Values('Ivan','Ivanov','(495)12345678','m');

Добавим в таблицу таким же образом еще несколько записей. Теперь можно ввести запрос на выборку информации из таблицы.

Выберем всю информацию из таблицы contacts:

	select * from contacts;

По результатам выборки в моем случае можно заметить ошибку – пол у в записи Svetlana установлен как «m». Исправим эту ошибку обновив запись таблицы.

	update contacts set  sex='f' where name='Svetlana';

Снова сделаем полную выборку и увидим что запись изменилась. Попробуем найти в таблице только мужчин:

	select * from contacts where sex ='m';

только имена и телефоны мужчин:

	select name,phone  from contacts where sex ='m';
Но все таки отойдем от создания запросов и вернемся к обязанностям системного администратора — сделаем резервную копию базы данных. Для этого в арсенале mysql сервера есть специальный инструмент. Выйдем из консоли mysql и наберем:
	
	 mysqldump -u root -p mydb > mydb.sql
Таким образом мы сделали слепок базы  mydb который попал в файл  mydb.sql в каталоге в котором мы сейчас находимся(можно указать адрес каталога). Замечу что если мы имеем рабочую базу данных то необходимо периодически делать такие резервные копии и хранить их на другом носителе данных нежели установлен сам mysql. Это позволит вам в любой момент восстановить вашу базу в случае выхода из строя сервера или жесткого диска.

Так же слепок базы можно использовать для переноса ее на другой сервер. Удалим таблицу contacts из базы mydb. Для этого зайдем в консоль mysql под пользователем root и выберем для использования нужную базу данных. Просмотрим наличие таблиц в базе:

	show tables;

Удалим таблицу:

	drop table contacts;

Предположим что мы сделали это по ошибке и попробуем восстановить содержимое базы из снимка mydb.sql. Для этого выйдем из консоли mysql и наберем:

	mysql -u root -p mydb < mydb.sql

Проверим наличие таблицы contacts в базе mydb и информации в этой таблице. Все данные и структура таблицы вернулись в состояние на момент создания снимка.

Домашнее задание.

1) Самостоятельно создать две базы данных mydb3 и mydb4. 2) Создать таблицу в базе данных mydb3 и наполнить ее данными. 3) Создать снимок базы mydb3 4) Удалить mydb3, создать базу с таким же именем и восстановить в ней данные из резервной копии. 5) Копировать все данные из mydb3 в mydb4. 6) Научиться самостоятельно создавать пользователей БД и назначать им права.

mysql.txt · Последнее изменение: 2013/06/10 19:49 (внешнее изменение)

DokuWiki Appliance - Powered by TurnKey Linux