Опубликован: 05.08.2007 | Доступ: свободный | Студентов: 2200 / 83 | Оценка: 4.47 / 4.09 | Длительность: 20:11:00
ISBN: 978-5-9556-0097-0
Лекция 3:

Подключение к базе данных Microsoft Access

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

Подключение к базе данных Microsoft Access, защищенной на уровне пользователей. Вскрытие учетных записей

Microsoft Access предоставляет средства распределенного доступа к базе данных. С одним файлом могут одновременно работать большое количество пользователей, обладающих разными правами: одни могут только просматривать таблицы, другие - только вносить новые данные, и лишь администраторы базы обладают полным доступом. Когда мы устанавливаем пакет Microsoft Office на локальный компьютер и, ни о чем не задумываясь, начинаем создавать свою базу в программе Access, мы по умолчанию выступаем в роли администратора. Поставим теперь задачу: разделить доступ для двух пользователей - один сможет только просматривать данные (читать), другой по-прежнему будет обладать полным доступом. Скопируйте файл BDTur_firm.mdb и назовите его "BDwithUsers.mdb". Открываем базу, в главном меню программы переходим "Сервис \ Защита \ Мастер" (см. рис. 2.7). Появляется мастер защиты, в первом шаге которого доступен единственный переключатель "Создать файл рабочей группы" ( рис. 3.16):

 Первый шаг мастера защиты

Рис. 3.16. Первый шаг мастера защиты

Файл рабочей группы представляет собой своеобразный электронный ключ, в котором будут храниться созданные настройки. Он имеет расширение *.mdw. В следующем шаге мастера нажимаем кнопку "Обзор" - по умолчанию мы оказываемся в той же директории, где расположен исходный файл базы данных BDwithUsers.mdb, вводим название создаваемого файла BDWorkFile.mdw3В этом шаге мастер предлагает название "Security.mdw" файла рабочей группы. Я предлагаю изменить это название - чтобы в дальнейшем его было легко отличить и не путать с файлами по умолчанию.. Нажимаем кнопку "Выбрать", возвращаясь в окно мастера. Устанавливаем переключатель на значение "Использовать файл рабочей группы по умолчанию". На другие параметры - "Код рабочей группы", "Ваше имя", "Организация" - можно не обращать внимания (рис. 3.17). Нажимаем кнопку "Далее".

 Определение файла рабочей группы BDWorkFile.mdw

увеличить изображение
Рис. 3.17. Определение файла рабочей группы BDWorkFile.mdw

Теперь предстоит определить, какие объекты базы данных защищены. Оставляем все таблицы и нажимаем кнопку "Далее" (рис. 3.18).

 Определение объектов базы данных, которые будут защищены

Рис. 3.18. Определение объектов базы данных, которые будут защищены

Мы добрались до самих рабочих групп. Программа Microsoft Access предлагает несколько рабочих групп, в каждой из которых может быть большое число пользователей. К примеру, пять пользователей могут обладать полными правами, десять - быть разработчиками проекта и еще пять - обладать правами на обновление данных. Код группы также можно не запоминать. Мы выбираем группу "Только чтение", отмечая ее галочкой4Обратите внимание, что интерфейс программы предоставляет возможность одновременного выбора нескольких (или всех групп) - нужно просто отметить соответствующие чекбоксы., нажимаем кнопку "Далее" (рис. 3.19).

 Выбор рабочей группы

Рис. 3.19. Выбор рабочей группы

Теперь требуется определить права группы Users. Это группа в любом случае будет входить в файл BDWorkFile.mdw; по умолчанию пользователи, входящие в нее, могут работать с базой данных без всякого пароля. Предоставление каких-либо прав этой группе означает предоставление этих же прав любому пользователю. Поэтому из соображений безопасности Microsoft Access предлагает вариант по умолчанию. Изменение этого варианта означает встраивание "черного" входа в файл рабочей группы. Мы оставляем предложенное значение и нажимаем кнопку "Далее" (рис. 3.20):

 Определение разрешений группы Users

Рис. 3.20. Определение разрешений группы Users

В следующем шаге мастера следует определить пользователей и пароли. Именно эти сведения для каждого пользователя будут постоянно использоваться в работе с приложением, поэтому на них следует обратить внимание. В поле "Пользователь:" вводим "Adonetuser", задаем этому пользователю пароль "12345", нажимаем кнопку "Добавить пользователя в список". Поля "Пользователь" и "Пароль" очищаются, а в списке, расположенном в левой части формы, появляется новая запись. Нажимаем кнопку "Далее" (рис. 3.21).

Добавление пользователя "Adonetuser"

Рис. 3.21. Добавление пользователя "Adonetuser"

Итак, теперь у нас уже есть рабочая группа - "Только чтение", и теперь появился пользователь "Adonetuser". Из выпадающего списка "Группа или пользователь" следует выбрать "Adonetuser" и отметить галочкой группу "Только чтение" (рис. 3.22, А). При выборе второго пользователя из выпадающего списка - здесь5Когда я устанавливал операционную систему на компьютере, я ввел свои фамилию и имя в качестве регистрационных данных. Далее, при установке пакета Microsoft Office, эти же сведения были предложены по умолчанию. Если вы хотите изменить эти сведения, лучший способ сделать это - переустановить пакет Microsoft Office. Для изменения регистрационных данных, введенных при установке системы, измените параметры реестра RegisteredOwner и RegisteredOrganization в ветке HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion. Далее, я везде буду писать "Chingiz Kariev", полагая, что вы выполняете действия, подставляя свое значение фамилии и имени. "Chingiz Kariev", - можно заметить, что он входит в группу Admins (рис. 3.22, Б). Это очень важный момент: должен быть хотя бы один пользователь-администратор, входящий в эту группу, в противном случае после завершения работы мастера мы не сможем добавлять новых пользователей и изменять права существующих!

 Распределение  пользователей в рабочие группы. А - включение пользователя "Adonetuser" в группу "Только чтение", Б - вхождение пользователя "Chingiz Kariev" в группу "Admins" по умолчанию

Рис. 3.22. Распределение пользователей в рабочие группы. А - включение пользователя "Adonetuser" в группу "Только чтение", Б - вхождение пользователя "Chingiz Kariev" в группу "Admins" по умолчанию

В последнем шаге мастера создается резервная копия базы данных. Она располагается в той же самой директории, где и основная (рис. 3.23). Несмотря на свое расширение - *.bak (backup), это, по сути, обычный файл базы данных Microsoft Access.

 Создание резервной копии базы данных

Рис. 3.23. Создание резервной копии базы данных

При нажатии на кнопку "Готово" появляется отчет, создаваемый мастером защиты. Он включает в себя перечень всех сведений, которые в дальнейшем могут понадобиться для восстановления доступа к базе:

Отчет мастера защиты
Данный отчет содержит все сведения, необходимые для воссоздания 
файла рабочей группы и восстановления доступа к защищенной базе 
данных в случае повреждения. 
Напечатайте или экспортируйте этот отчет и сохраните его в надежном месте.

Незащищенная база данных:
	D:\Uchebnik\Code\Glava2\BDwithUsers.bak
Защищенная база данных:
	D:\Uchebnik\Code\Glava2\BDwithUsers.mdb
Файл рабочей группы:
	D:\Uchebnik\Code\Glava2\BDWorkFile.mdw
Пользователь:
	Microsoft Access
Организация:

Код рабочей группы:
	mx4qX5Gy6OGUgwmOZpt

Защищенные объекты:
	Таблицы:
		Информация о туристах
		Оплата
		Путевки
		Сезоны
		Туристы
		Туры
		<Новые таблицы и запросы>
	Запросы:
		<Новые таблицы и запросы>
	Формы:
		<Новые формы>
	Отчеты:
		<Новые отчеты>
	Макросы:
		<Новые макросы>
	База данных:
		Пароль VBE не установлен
Группы:
	Имя: Только чтение
	Код группы: FecIdp7S4zQTMaV5qAp
	Users: 
	  	Adonetuser
	
	Имя: Admins
	Код группы: <Созданные ранее>
	Users: 
	  	Chingiz Kariev
	
	Имя: Users
	Код группы: <Созданные ранее>
	Users: 
	  	Chingiz Kariev
	  	Adonetuser
	
Пользователи:
	Имя: Chingiz Kariev
	Личный код: ifXdiQ2D2GaQvBhly
	Пароль:
	Группы:
		Admins

	Имя: Adonetuser
	Личный код: U6QTwfQ5qGu1Djmrbe4
	Пароль: 12345
	Группы:
		Только чтение

	Имя: admin
	Личный код: <Созданные ранее>
	Пароль: S0nxw3IDds5rO
	Группы:
		Users




Отчет мастера защиты				Дата работы г.

Желательно последовать совету мастера и сохранить эти сведения в надежном месте.

Итак, в результате всех проделанных действий в рабочем каталоге появились три файла - BDwithUsers.bak, BDwithUsers.mdb и BDWorkFile.mdw (рис. 3.24):

 Файлы, полученные в результате работы мастера

Рис. 3.24. Файлы, полученные в результате работы мастера

В программном обеспечении к курсу вы найдете эти три файла (Code\Glava2\ BDwithUsers.bak, BDwithUsers.mdb и BDWorkFile.mdw).

Файл BDwithUsers.bak тоже лучше сохранить в надежном месте, поскольку он представляет собой незащищенную копию базы данных.

Запускаем файл BDWorkFile.mdw - появляется окно, в котором следует ввести имя пользователя "Adonetuser" и пароль "12345" (рис. 3.25):

 Аутентификация пользователя "Adonetuser"

Рис. 3.25. Аутентификация пользователя "Adonetuser"

Открывается окно базы данных, в котором имеющиеся таблицы доступны только для чтения. Выходим из приложения и запускаем его снова. Введем на этот раз имя администратора базы - "Chingiz Kariev", без пароля6Конечно, это нонсенс - аутентификация ограниченного пользователя с паролем, а администратора - без пароля. Имейте в виду, что на практике так быть не должно. Здесь я просто ввожу всего одного пользователя с паролем для предельной ясности изложения. (рис. 3.26).

 Аутентификация пользователя "Chingiz Kariev"

Рис. 3.26. Аутентификация пользователя "Chingiz Kariev"

На этот раз база данных открывается с полным доступом, более того, выбрав пункт главного меню "Сервис \ Защита \ Мастер_", можно редактировать уже существующий файл рабочей группы, добавляя например, новых пользователей (рис. 3.27):

 Первый шаг мастера. Изменение файла BDWorkFile.mdw рабочей группы

Рис. 3.27. Первый шаг мастера. Изменение файла BDWorkFile.mdw рабочей группы

При создании файла рабочей группы BDWorkFile.mdw мы определили его дальнейшее использование по умолчанию (см. рис. 3.17). Это означает, что вся дальнейшая работа с программой Microsoft Access на данном компьютере будет производиться от имени этого файла и определенных в нем пользователей. Без наличия соответствующих прав будет невозможно создать даже новую базу данных7Если вы окончательно запутались, забыли или неправильно ввели пароль, словом, Microsoft Access 2003 перестал работать на вашем компьютере, удалите пакет Microsoft Office. Запустите редактор реестра, найдите раздел HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\11.0 и удалите папку Access. Установите Microsoft Office заново.. Для возврата к файлу рабочей группы, принятому по умолчанию, проделываем следующие действия:

  1. включаем режим отображения скрытых файлов и папок;
  2. открываем базу данных BDwithUsers.mdb от имени администратора (здесь - от имени пользователя "Chingiz Kariev");
  3. в главном меню программы переходим "Сервис \ Защита \ Администратор рабочих групп" (см. рис. 2.7);
  4. появляется окно "Администратор рабочих групп", в котором отображается связь с текущим файлом BDWorkFile.mdw. Нажимаем кнопку "Связь" для смены рабочего файла (рис. 3. 28):
     Окно "Администратор рабочих групп"

    Рис. 3.28. Окно "Администратор рабочих групп"
  5. в появившемся окне "Файл рабочей группы" нажимаем кнопку "Обзор". Переходим в директорию C:\Documents and Settings\ Имя пользователя (здесь - Chingiz Kariev)\Application Data\ Microsoft\Access и выбираем файл System.mdw. Это файл рабочей группы, который программа использует с момента своей установки. Нажимаем кнопку "Открыть". В окне "Файл рабочей группы" нажимаем "OK". Появляется уведомление "Успешное присоединения файла рабочей группы" (рис. 3.29):
     Уведомление присоединения файла рабочей группы

    Рис. 3.29. Уведомление присоединения файла рабочей группы
  6. нажимаем кнопку "OK" - теперь в окне "Администратор рабочих групп" отображается связь с файлом по умолчанию "System.mdw". Нажимаем "OK" для завершения (рис. 3.30):
     Связь с файлом System.mdw в окне "Администратор рабочих групп"

    Рис. 3.30. Связь с файлом System.mdw в окне "Администратор рабочих групп"

В результате проделанных операций мы вернулись к файлу рабочей группы, принятому по умолчанию. Теперь при создании новых баз данных снова будем работать от имени администратора "Admin". Однако мы не сможем открыть базу данных BDwithUsers.mdb, использующую другой файл рабочей группы (рис. 3.31):

 Попытка открыть базу данных BDwithUsers.mdb

Рис. 3.31. Попытка открыть базу данных BDwithUsers.mdb

Для открытия базы данных нам снова нужно будет связаться со своеобразным электронным ключом - файлом BDWorkFile.mdw. Сделайте это самостоятельно.

Для распространения подготовленной базы данных на компьютеры пользователей вам потребуется скопировать сам файл базы данных и файл рабочей группы, а затем связать их.

Изменим пароль администратора "Chingiz Kariev" базы BDwithUsers.mdb. Открываем от имени этого пользователя базу данных, в главном меню переходим "Сервис \ Защита \ Пользователи и группы_" (см. рис. 3.7). В появившемся окне "Пользователи и группы" из выпадающего списка "Имя" выбираем этого пользователя, переходим на вкладку "Изменение пароля". Оставляя пустым поле "Текущий пароль", вводим и подтверждаем пароль "a1s2d3f4g5h6j7k8l9z0" (рис. 3.32):

 Изменение пароля администратора базы данных

Рис. 3.32. Изменение пароля администратора базы данных

Аналогично, открывая базу от имени пользователя "Adonetuser", можно изменить его пароль.

Может показаться, что вся эта продуманная система разделения пользователей предоставляет надежную безопасность создаваемым приложениям. Но это не так - вся информация по-прежнему хранятся в незашифрованном виде в файле рабочей группы. Достаточно получить к этому файлу доступ - а для работы самой базы данных это необходимое условие, - чтобы получить все сведения о пользователях и их паролях. Утилита Access Password (http://www.thegrideon.com) позволяет считывать все данные (рис. 3.33):

 Вскрытие учетных записей пользователей MS Access

увеличить изображение
Рис. 3.33. Вскрытие учетных записей пользователей MS Access

С помощью утилиты просмотрим также содержимое файла System.mdw. Здесь мы видим всего одного пользователя "admin"с пустым паролем, обладающего правами администратора (рис. 3.34):

 Просмотра файла System.mdw

увеличить изображение
Рис. 3.34. Просмотра файла System.mdw

Именно от этого пользователя по умолчанию мы начинаем работать с MS Access после установки пакета Microsoft Office.

Займемся подключением к базе из приложений. Создайте новый Windows-проект и назовите его "VisualBDwithUsers". Добавляем на форму элемент управления DataGrid, его свойству Dock устанавливаем значение "Fill". Переходим на вкладку Data панели инструментов Toolbox, дважды щелкаем на объекте OleDbDataAdapter. В появившемся мастере настраиваем подключение к базе BDwithUsers.mdb, в поле "Пользователь" вводим "Adonetuser", в поле "Пароль" - значение "12345". Но при проверке подключения снова появляется сообщение об ошибке (рис. 3.35):

 Ошибка при проверке подключения к базе "BDwithUsers.mdb"

Рис. 3.35. Ошибка при проверке подключения к базе "BDwithUsers.mdb"

В чем же дело? Мы ведь ввели все значения в специально предназначенные для этого поля! Интерфейс вкладки "Подключение" снова не предоставляет возможности ввода всех нужных сведений для подключения. Переходим на вкладку "Все", выделяем свойство "Jet OLEDB:System database" и нажимаем кнопку "Изменить значение" (можно также дважды щелкнуть на этом свойстве). В появившемся окне "Изменение значения свойства" указываем путь к файлу BDWorkFile.mdw вместе с его полным названием (включающим расширение файла) (рис. 3.36).

Определение значение свойства "Jet OLEDB:System database"

увеличить изображение
Рис. 3.36. Определение значение свойства "Jet OLEDB:System database"

Переходим на вкладку "Подключение", проверяем связь с базой - на этот раз проверка будет успешной (рис. 3.37).

 Успешная проверка подключения к базе "BDwithUsers.mdb"

Рис. 3.37. Успешная проверка подключения к базе "BDwithUsers.mdb"

Нажимаем кнопку "OK" для закрывания окна "Свойства связи с данными". Теперь появляется дополнительное окно, в котором следует повторно ввести пароль пользователя (рис. 3.38).

 Дополнительно окно подключения к базе данных

Рис. 3.38. Дополнительно окно подключения к базе данных

В этом окне заметно "обрезанное" расположение подписей полей: это можно считать недоработкой VS 2003 - даже при разрешении экрана 1280х1024 форма выглядит так же. Дополнительно в выпадающем списке "Режим открытия" выбираем значение DB_MODE_READ, поскольку пользователь "Adonetuser" обладает правами только на чтение данных. Закрываем это окно, завершаем работу мастера, настраивая извлечение всех записей из таблицы "Туристы". В последнем шаге мастера оставляем включение пароля в строку connection string (см. рис. 3.14).

На панели компонент формы выделяем объект DataAdapter, переходим в его окно Properties и нажимаем на ссылку Generate dataset. Оставляем название объекта DataSet, предлагаемое по умолчанию. В конструкторе формы заполняем объект DataSet, а также определяем источник данных для элемента DataGrid:

public Form1()
		{
			InitializeComponent();
			oleDbDataAdapter1.Fill(dataSet11);
			dataGrid1.DataSource = dataSet11.Tables[0].DefaultView;
		}

Запускаем приложение. На форму снова выводятся данные из базы (см. рис. 3.15).

В программном обеспечении к курсу вы найдете приложение VisualB DwithUsers (Code\Glava2\ VisualBDwithUsers).

Сделаем точно такое же приложение без использования визуальных средств студии. Создайте новый Windows-проект, назовите его "ProgrammBDwithUsers". Добавляем на форму элемент управления DataGrid, его свойству Dock устанавливаем значение "Fill". Подключаем пространство имен для работы с базой:

using System.Data.OleDb;

В классе формы создаем строки connectionString и commandText:

string connectionString = @"Provider=""Microsoft.Jet.OLEDB.4.0"
 ";Data Source=""D:\Uchebnik\Code\Glava2\BDwithUsers.mdb"
 ";Jet OLEDB:System database=""D:\Uchebnik\Code\Glava2
 \BDWorkFile.mdw"";User ID=Adonetuser;Password=12345;";

string commandText = "SELECT * FROM Туристы";

В конструкторе формы создаем все объекты ADO .NET:

public Form1()
	{
		InitializeComponent();
		OleDbConnection conn = new OleDbConnection();
		conn.ConnectionString = connectionString;
		OleDbDataAdapter dataAdapter = new OleDbDataAdapter(commandText, conn);
		DataSet ds = new DataSet();
		dataAdapter.Fill(ds);
		dataGrid1.DataSource = ds.Tables[0].DefaultView;
		conn.Close();
	}

В программном обеспечении к курсу вы найдете приложение ProgrammBDwithUsers (Code\Glava2\ ProgrammBDwithUsers).

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >