Введення ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
Загальний опис, запуск та налагодження
прав доступу до баз даних MySQL ... ... ... ... ... ... ... ... .... ... ... .. ... .. 5
Команди пакета MySQL ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... ... .. 10
Основні команди ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. 11
Додаткові команди ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... ... ... .23
Налаштування mysqld (серверна частина пакета MySQL) ... ... ... ... ... ... ... ... .27
Можливість мови Perl для роботи з MySQL сервером ... ... ... ... ... ... .. 29
Висновок ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .. ... ... ... ... ... ... .. ... ... ... .31
Список літератури ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .... ... ... ... ... ... ... ... .. 33
Введення.
На сьогоднішній день СУБД MySQL є однією з найбільш відомих, надійних і швидких зі всього сімейства існуючих СУБД. Чому саме вона? Однією з причин є правила її поширення - за неї не треба платити гроші і розповсюджується вона разом зі своїми вихідними текстами, інша причина - це те, що MySQL відносно швидка СУБД. PostgreSql, наприклад, також розповсюджується під ліцензією * GNU GPL, але вона не отримала такого широкого поширення. Одна з причин - це помітна повільність. Отже, дві головні причини популярності MySQL: ціна і продуктивність.
MySQL написаний під десятки видів операційних систем. Це і FreeBSD, OpenBSD, MacOS, OS / 2, SunOS, Win9x/00/NT і Linux. Сьогодні MySQL особливо поширена на платформах Linux та Windows. Причому на останній зустрічається набагато рідше.
Принцип роботи СУБД MySQL аналогічний принципу роботи будь-якої СУБД, що використовує SQL (Structured Query Language, мова структурованих запитів) в якості командного мови для створення / видалення баз даних, таблиць, для поповнення таблиць даними, для здійснення вибірки даних.
Метою даної роботи є опис конфігурування, адміністрування та програмування СУБД MySQL та створення програми ілюструє можливості MySQL.
- Загальний опис, запуск і налаштування прав доступу до
баз даних MуSQL.
MySQL, як і будь-яка інша СУБД являє собою програму-сервер, яка знаходиться в пам'яті комп'ютера і обслуговує TCP порт. У випадку з MySQL, номером порту буде число 3306. А клієнтська програма, будь то CGI-додаток на Perl або програмний продукт на C, з'єднується з СУБД з цього порту і посилає йому рядки на SQL. Той у свою чергу їх інтерпретує, виконуючи необхідні дії, і відсилає результати запиту назад клієнтові. Таким способом відбувається спілкування сервера баз даних з клієнтськими програмами.
Для запуску MуSQL-сервера необхідно виконати файл mysqld.exe. Сервер запускається як безвіконні фоновий процес. При цьому він залишається в пам'яті і обробляє запити від клієнтських додатків.
Для зупинки сервера слід виконати команду:
mysqladmin-u root shutdown.
Якщо сервер не був зупинений коректно, то при наступному запуску у файлі mysql.err буде додано запис про аварійне завершення. Коректна зупинка сервера необхідна для збереження всіх даних, які знаходяться в кешах MySQL.
MуSQL має розвинену систему доступу до баз даних. Користувачеві бази даних може бути надано доступ до всієї бази даних, окремим таблиць і окремим стовпцях таблиць. Є розмежування на дії, які може виробляти користувач із записами. Для організації такої складної (на перший погляд) структури доступу використовується декілька таблиць у спеціальній базі даних. На підставі значень цих таблиць вибудовується політика надання доступу.
База даних, яку сервер MуSQL використовує для зберігання внутрішньої інформації про користувачів, за замовчуванням має ім'я mуsql. У цій базі даних визначені таблиці для зберігання інформації користувача облікових записів. Зміст БД mysql в таблиці 1.1.
Таблиця 1.1. Список таблиць прав доступу
Порядок перевірки | Назва таблиці | Опис |
1 | user | Список всіх користувачів сервера MySQL з правами доступу до всієї бази даних в цілому |
2 | db | Список баз даних з зіставленими їм користувачами та їх привілеями на виконання операції |
3 | host | Список комп'ютерів, з яких можливий доступ до зіставленої комп'ютера базі даних, і привілеї на виконання операцій, які можуть проводитися через з'єднання з цього комп'ютера |
4 | tables_priv | Список таблиць баз даних, до яких можливий доступ користувача |
5 | columns_priv | Список стовпців бази даних, до яких можливий доступ користувача |
Перевірка прав доступу проводиться в порядку, зазначеному в таблиці 1.1. Перш за все перевіряється, чи існує користувач і які можливості він має при управлінні базою даних (табліца1.2.).
Таблиця 1.2. Поля таблиці user
Назва поля | Тип | Значення за замовчуванням | Опис |
1 | 2 | 3 | 4 |
Host | Char (60) | Комп'ютер користувача, з якого дозволено підключення | |
User | Char (16) | Ім'я користувача | |
Password | Char (16) | Пароль користувача | |
Select_priv | Enum ('N', 'Y') | N | Привілеї на вибірку даних оператором SELECT |
Insert_priv | Enum ('N', 'Y') | N | Привілеї на вставку даних оператором INSERT |
Update_priv | Enum ('N', 'Y') | N | Право на оновлення даних оператором UPDATE |
Delete_priv | Enum ('N', 'Y') | N | Привілеї на видалення даних оператором DELETE |
Reload_priv | Enum ('N', 'Y') | N | Привілеї на перезапуск сервера MySQL, а також скидання даних з пам'яті на диск |
1 | 2 | 3 | 4 |
Shutdown_priv | Enum ('N', 'Y') | N | Привілеї на відключення сервера MySQL |
Process_priv | Enum ('N', 'Y') | N | Привілеї на перегляд стану поточних процесів сервера |
File_priv | Enum ('N', 'Y') | N | Привілеї, необхідні для роботи з файловою системою, наприклад оператором LOAD DATA INFILE |
Grant_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють користувачеві встановлювати привілеї іншим користувачам |
References_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють посилатися на об'єкт |
Index_priv | Enum ('N', 'Y') | N | Привілеї, необхідні для індексування даних |
Alter_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють оновлювати дані |
Поля з типом Enum ('N', 'Y') вважаються дозволеними, якщо встановлено значення Y, і недозволеними, якщо встановлено значення N.
Для адміністратора сервера MуSQL необхідні всі привілеї, для звичайних користувачів у таблиці зазвичай не допускаються жодні з привілею, тобто Звичайні користувачі не можуть змінювати конфігурацію сервера MySQL. Винятком можна вважати привілеї File_priv, якщо користувач активно працює з файловою системою.
Поле host може бути описано як IP-адреса або ім'я, а також може бути порожнім. В імені комп'ютера і в імені користувача дозволяється застосування регулярних виразів.
Паролі зберігаються в зашифрованому вигляді і не мають функції зворотного дешифрування. Для того щоб задати пароль, необхідно використовувати функцію password ().
Якщо привілеї на перегляд процесів сервера не дозволені, тоді користувач може бачити лише власні процеси.
На етапі перевірки значень таблиці user пропускаються для подальшої обробки тільки ті сполуки, у яких поля Host, User та значення функції password () від значення пароля, отриманого від клієнта, збігаються.
Подальша обробка наводиться в таблиці db. На цьому етапі визначаються привілеї, якими володіє користувач для роботи з конкретною базою даних (табліца. 1.3).
Таблиця 1.3. Привілеї для роботи з базою даних
Назва поля | Тип | Значення за замовчуванням | Опис |
Host | Адреса комп'ютера користувача, з якого дозволено підключення | ||
Db | Ім'я бази даних | ||
User | Ім'я користувача | ||
Select_priv | Enum ('N', 'Y') | N | Привілеї на вибірку даних оператором SELECT |
Insert_priv | Enum ('N', 'Y') | N | Привілеї на вставку даних оператором INSERT |
Update_priv | Enum ('N', 'Y') | N | Привілеї зміни даних оператором UPDATE |
Delete_priv | Enum ('N', 'Y') | N | Привілеї на видалення даних DELETE |
Create_priv | Enum ('N', 'Y') | N | Привілеї, необхідні для створення таблиць оператором CREATE TABLE |
Drop_priv | Enum ('N', 'Y') | N | Привілеї, необхідні для видалення таблиць оператором DROP TABLE |
Grant_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють користувачеві встановлювати привілеї іншим користувачам |
References_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють посилатися на об'єкт |
Index_priv | Enum ('N', 'Y') | N | Привілеї, необхідні для індексування даних |
Alter_priv | Enum ('N', 'Y') | N | Привілеї, що дозволяють оновлювати дані |
Привілеї, вказані в таблиці db, перекривають значення, отримані в таблиці user, саме тому користувачі можуть не мати жодної привілеї в таблиці user.
Один користувач може мати кілька різних адрес, з яких може проводитися підключення, тому на даному етапі перевіряється значення Host. Якщо значення полі Host порожньо, тоді проводиться додаткова перевірка в таблиці host. Таблиця Host ідентична таблиці Db, за винятком того, що в ній відсутнє поле User. Стовпці таблиці host аналогічні стовпцях таблиці db, різниця полягає лише в тому, що дані з таблиці host при збігу полів Host і Db мають більш високий пріоритет, і перекривають раніше встановлені значення.
MySQL сервер дозволяє встановлювати обмеження на доступ до окремих таблиць і стовпців таблиці (ця інформація зберігається в таблицях tables_priv і columns_priv), але збільшення числа перевірок призводить до зменшення продуктивності.
2. Команди пакета MySQL.
СУБД MySQL поставляється з наступними основними програмами і скриптами:
mysql
mysqlaccess
mysqladmin
mysqld
mysqldump
mysqlshow
isamchk
isamlog
safe_mysqld
Ще є кілька утиліт. Вони не життєво важливі для MySQL, але забезпечують корисні додаткові функціональні можливості.
comp_err
msql2mysql
mysqlbug
perror
replace
which1
zap
2.1. Основні команди
mysql
Клієнтська програма MySQL.
Запуск:
mysql [OPTIONS] database
ОПИС:
Клієнтська частина СУБД MySQL названа MySQL. Вона забезпечує інтерфейс командного рядка з СУБД MySQL, і можливість неінтерактивної пакетної обробки.
Програмою mysql підтримуються наступні опції. Можна використовувати або "короткий" одиночний символ або детальнішу версію.
- \ \?, - Help | Довідка. |
-D, - debug = [options] | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-D, - debug-info | Вивести налагоджувальну інформацію при виході з програми. |
-E, - exec | Виконати команду і вийти, неявна форма опції - batch. |
-F, - force | Продовжити, навіть якщо є SQL помилка. |
-H, - hostname = [hostname] | Зазначає ім'я сервера, з яким необхідно з'єднатися. |
-P, - port = [port] | Порт, для з'єднання з сервером MySQL. |
-P, - password = [password] | Пароль користувача, для з'єднання з сервером MySQL. Не повинно бути пробілу між-p і паролем. |
-Q, - quick | Бистрий (небуферізованний висновок), може уповільнити сервер, якщо висновок призупинено. |
-S, - silent | Працювати мовчки (придушити висновок). |
-U, - user = [user] | Ім'я користувача для з'єднання з сервером MySQL. Необов'язково, якщо ім'я користувача такий же, як логін. За замовчуванням логін використовується в якості імені користувача. |
-V, - verbose | Докладний висновок. -V опція може бути подвоїти чи потроїти для більш докладного виводу. |
-W, - wait | Якщо підключення зазнає невдачі, то почекати і повторити спробу. |
-B, - batch | Виконати в пакетному режимі. Ніяких запитів і ніяких помилок у STDOUT. Встановлюється автоматично при читанні з / запису в канал. Результати будуть виведені у форматі з поділом табуляцією. Один рядок результату відповідає одному рядку виводу. |
-I, - help | Довідка, еквівалент - \ \?. |
-V, - version | Вивести інформацію про версію пакету. |
mysqlaccess
Перевірка прав доступу користувача.
mysqlaccess [host] [user] [db] OPTIONS
ОПИС:
Скрипт mysqlaccess використовується, щоб внести до списку привілеї користувача для конкретної бази даних. Це дає інформацію, яка може бути корисна при діагностуванні проблем з доступом користувачів до даної базі даних.
Скрипт mysqlaccess підтримує наступні параметри (можна використовувати "короткий" одиночний символ або детальнішу версію):
-?, - Help | Довідка. |
-V, - version | Інформація про версію |
-U, - user =... | Ім'я користувача для доступу до бази даних. |
-P, - password =... | Пароль користувача, для з'єднання з сервером MySQL. |
-H, - host =... | Ім'я сервера, використовується для перевірки прав доступу. |
-D, - db =... | Ім'я бази даних, використовується для перевірки прав доступу. |
-U, - superuser =... | Логін адміністратора. |
-P, - spassword =... | Пароль адміністратора. |
-B, - brief | Вивести короткі відомості про таблиці. |
- Relnotes | Вивести замітки з реалізації. |
- Plan | Вивести ідеї для майбутніх реалізацій. |
- Howto | Вивести приклади використання `mysqlaccess ' |
- Debug = N | Рівень налагодження N (0 .. 3) |
Необхідно вказати принаймні ім'я користувача та ім'я бази даних, які потрібно перевірити. Якщо ім'я сервера не задано, то мається на увазі ім'я 'localhost'.
mysqladmin
Виконує адміністративні функції.
mysqladmin [OPTIONS] command command ...
ОПИС:
Програма mysqladmin використовується, для управління різними аспектами функціонування СУБД MySQL. Можливі наступні опції (можна використовувати "короткий" одиночний символ або детальнішу версію):
- \ \?, - Help | Довідка. |
-D, - debug = [options] | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-F, - force | Не питати підтвердження при пропуску таблиці. |
-H, - host = [hostname] | Ім'я сервера, якщо не localhost. |
-I, - sleep = [seconds] | Виконати команди кілька разів з паузою в [секунд] між ними. |
-P, - password [password] | Пароль користувача, для з'єднання з сервером MySQL. Зверніть увагу, що не повинно бути пробілу між-p і паролем. |
-U, - user = [user] | Ім'я користувача. Якщо не вказано, використовується поточний логін. |
-P, - port = [port] | Порт, для з'єднання з сервером MySQL. |
-V, - version | Вивести інформацію про версію. |
Крім цього програма mysqladmin підтримує наступні команди:
create [ім'я бази даних] | Створити базу даних. |
drop [ім'я бази даних] | Видалити базу даних (разом з усіма таблицями). |
processlist | Вивести відомості про працюючих потоках MySQL. |
reload | Перечитати настройки і очистити всі кеші. |
shutdown | Завершити роботи з СКБД MySQL. Всі запущені MySQL-сесії позначаються як 'killed'. Це означає, що всі потоки, які простоюють в даний час, будуть закриті негайно, а керування потоками буде закрито, коли вони досягнуть точок завершення, визначених сервером. Клієнти отримають повідомлення про помилку 'mysql server has gone away'. |
status | Вивести коротке повідомлення про статус сервера. |
mysqld
Серверна частина пакета MySQL (mysqld).
СИНТАКСИС:
mysqld [OPTIONS]
ОПИС:
Програма mysqld є ядром СУБД MySQL. Вона запускається як демон в системі і приймає підключення з клієнтських програм, виконуючи запити і повертаючи результати. Вона багатопотокова, тобто обробить більше ніж один запит одночасно.
Може спостерігатися спад продуктивності при використанні опції - log-isam, оскільки при цьому дуже багато пишеться в файл протоколу. Неперіодичні зміни, оновлення та видалення можуть зменшити продуктивність на 5-10%. Продуктивність може сильно знизитися на оновлення, що вимагають великої кількості одночасних змін.
Опція - log-isam може використовуватися, для копіювання бази даних. ISAM журнали можуть стати ДУЖЕ великими.
Кожна операція UPDATE, DELETE і INSERT має заголовок в 13 байтів додатково до команди.
Кожна відкрита таблиця вимагає дев'ять байтів плюс довжина імені файлу таблиці. Це необхідно лише для таблиць, які ще не в кеші таблиць.
Крім того будуть наявні одинадцять байтів додатково для будь-яких команд, які кешують / блокують таблиці. Ці події зазвичай викликані внутрішніми командами mysql. Найбільш часто, коли використовується SELECT.
У більшості випадків потрібно виконувати mysqld з скрипта safe_mysqld.
Програма mysqld підтримує наступні опції командного рядка:
- \ \?, - Help | Довідка |
- #, - Debug = [options] | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-B, - basedir = [path] | Повне ім'я каталогу в який встановлений пакет. |
-H, - datadir [homedir] | Повне ім'я каталогу в якому зберігаються бази даних. |
-L, - log = [filename] | Ім'я файлу протоколу запитів до баз даних і підключень. |
- Log-isam = [filename] | Ім'я файлу протоколу змін isam. |
-O, - set-variable var = option | Встановити змінну. Див нижче. |
-L, - language = [language] | Значення за замовчуванням 'english /'. Може бути так само 'swedish /', 'germany /', 'french /' або 'czech /'. Поточний список можна подивитися в підкаталог share / mysql каталогу, в який встановлено MySQL. |
-P, - port = [port] | Порт для з'єднання. |
-T, - debug-info | Вивести налагоджувальну інформацію. |
- Skip-new-routines | Не використовувати нові можливості цієї версії. |
- Skip-grant-tables | Ігнорувати таблиці надання доступу. Це дає будь-якому ПОВНИЙ доступ до всіх таблиць. |
- Skip-locking | Не використовувати блокування системи. Може дати кращу ефективність, але не повинен використовуватися разом з isamchk. ТОБТО, спершу зупиніть сервер. |
- Skip-name-resolve | Ця опція змусить mysqld приймати адреси IP тільки тих серверів, які явно вказані в базі даних привілеїв mysql. DNS можна більш-менш просто хакнуть, а ця опція дозволяє уникнути низки проблем, якщо прикладна програма вимагає високого рівня захисту. |
- Skip-networking | Використовувати підключення тільки через інтерфейс localhost. Ця опція не буде працювати з MIT потоками. Якщо підключення до бази даних будуть лише локальні, то використання цієї опції захистить від створення віддалених підключень. |
- Skip-unsafe-select | Пропустити можливо небезпечні оптимізації. |
- Socket = [socket] | Ім'я сокет-файлу для MySQL. Недоступно при використанні версії MySQL, компільованою з MIT потоками. ПРИКЛАД: |
-V, - version | Вивести інформацію про версію. |
Якщо опція-h не визначена, mysql буде вважати, що основною каталог = "/ my / data / sql / mysql".
Всі бази даних розміщені в каталозі [homedir] / [ім'я бази даних].
Опція-l повинна використовуватися обережно. Коли використовується сервер, з великим обсягом транзакцій, цей файл може стати великим дуже швидко. Якщо не зазначається ім'я logfile, при використанні опції-l mysqld буде писати протокол в файл [homedir] / [hostname]. Log.
Опція-O дозволяє визначати значення для наступних параметрів:
Ім'я | Значення за замовчуванням |
back_log | 5 |
keybuffer | 1048568 |
max_allowed_packet | 65536 |
net_buffer_length | 8192 |
max_connections | 90 |
table_cache | 64 |
recordbuffer | 131072 |
sortbuffer | 2097144 |
max_sort_length | 1024 |
mysqldump
Дамп змісту бази даних.
СИНТАКСИС:
mysqldump [OPTIONS] [database [table [field]]]
ОПИС:
Програма mysqldump використовується для створення дампа змісту бази даних MySQL. Вона пише інструкції SQL у стандартний вивід. Ці інструкції SQL можуть бути змінені на файл. Можна резервувати базу даних MySQL, використовуючи mysqldump, але при цьому Необхідно переконатися, що в цей момент з базою даних не виконується ніяких інших дій.
Програма mysqldump підтримує наступні параметри (можна використовувати коротку або докладну версію):
- #, - Debug = [options] | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-?, - Help | Довідка. |
-C, - compleat-insert | Генеруйте повні інструкції insert (не виключаючи значень, які відповідають значенням стовпця за замовчуванням). |
-H, - host = [hostname] | З'єднатися з сервером hostname. |
-D, - no-data | Експорт тільки схеми інформації (виключаючи дані). |
-T, - no-create-info | Експорт тільки даних, виключаючи інформацію для створення таблиці. Протилежність-d. |
-P, - password = [password] | Пароль користувача, для з'єднання з сервером MySQL. Зверніть увагу, що не повинно бути пробілу між-p і паролем. |
-Q, - quick | Чи не буферизованная результати запиту, дамп видати безпосередньо до STDOUT. |
-U, - user = [username] | Ім'я користувача. Якщо не задано, використовується поточний логін. |
-V, - verbose | Вивести детальну інформацію щодо різних стадій виконання mysqldump. |
-P, - port = [port] | Порт для зв'язку. |
-V, - version | Інформація про версію. |
Можна направити висновок mysqldump в клієнтську програму MySQL, щоб копіювати базу даних. Необхідно переконатися, що база даних не змінюється в цей час, інакше вийде суперечлива копію!
mysqlshow
Показати інформацію про сервер, бази даних або таблиці.
СИНТАКСИС:
mysqlshow [OPTIONS] [database [table [field]]]
ОПИС:
Програма mysqlshow може використовуватися, щоб показати, з якими базами даних MySQL працює, які таблиці дана база даних містить, і які поля є в таблиці в цій базі даних.
Програма mysqlshow підтримує наступні параметри:
- #, - Debug = [options] | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-?, - Help | Довідка. |
-H, - host = [hostname] | Зв'язатися з сервером hostname. |
-K, - key | Вивести ключ (і) для таблиць (и). |
-P, - password = [password] | Пароль користувача, для з'єднання з сервером MySQL. |
-U, - user = [username] | Ім'я користувача. Якщо не задано, використовується поточний логін. |
-P, - port = [port] | Порт для зв'язку. |
-V, - version | Інформація про версію. |
Mysqlshow без аргументів покаже всі бази даних. Mysqlshow з ім'ям бази даних покаже всі таблиці в ній. Mysqlshow з ім'ям бази даних і ім'ям таблиці покаже схему цієї таблиці.
Якщо останній параметр містить '?' або '*', то вони використовуються як символи узагальнення.
isamchk
Перевірка, відновлення, керування і збір статистики за таблицями MySQL.
СИНТАКСИС:
isamchk [-? adeiqrsvwzIV] [-k #] [-O xxxx = size] [-Si] [-Sr #]
[-O keybuffer = #] [-O readbuffer = #] [-O writebuffer = #]
[-O sortbuffer = #] [-O sort_key_blocks = #] files
ОПИС:
Програма isamchk використовується для перевірки несуперечності таблиць та усунення будь-яких проблем, які це може викликати. Isamchk може також використовуватися, щоб посилити таблиці в базах даних, які містять BLOB або поля символів змінної довжини. Це необхідно тільки, якщо часто додаються і видаляються записи з цих таблиць.
Необхідно зупинити СУБД MySQL перед запуском isamchk з єдиним перемикачем-r.
Взагалі, потрібно використовувати перемикач-rq для ремонту таблиці, тому що він виконує "оперативний" ремонт. Для такого ремонту не потрібно тимчасового місця в пам'яті, таким чином він проходить швидко, так як isamchk не копіює файл даних.
Перед початком роботи, треба перейти в каталог з таблицею, яка потребує перевірки та / або ремонту. У загальному випадку, це $ DATADIR / DBNAME.
Опції програми isamchk:
- # | Вивести в протокол налагоджувальну інформацію. У загальному вигляді 'd: t: o, filename `. |
-? | Довідка. |
-A | Аналіз. Використовується для для оптимізації розміщення таблиць. |
-D | Інформація про таблицю. |
-E | Розширена перевірка. При запуску з цією опцією треба зупинити демон mysqld. |
-F | Примусово створити тимчасовий файл. Ця опція викличе 'isamchk-r', якщо таблиця зруйнована. |
-K # | Використовувані ключі. |
-I | Додаткова інформація. |
-Q | Швидка перевірка. |
-R [o] | Відновлення, Ця опція також ущільнити внутрішні індекси B-Tree, використовувані MySQL. Використовуйте цю опцію, щоб зменшити місце, займане таблицею, за рахунок видалення невживаних індексів. |
-S | Працювати мовчки. |
-U | Розпакувати упакований файл. |
-V | Докладний висновок. Використовується разом з іншими параметрами, щоб отримати більшу кількість інформації. Можна задати більшу кількість символів v для підвищення обсягу видаваної інформації (наприклад, vv). |
-W | Чекати, якщо таблиця заблокована. |
-I | Довідка. |
-S [ir] # | Сортувати індекс / запису по ключу #. Ця опція оптимізує розміщення даних в таблиці. |
-V | Інформація про версію. |
-O var = # | Опція оптимізації var = # [k] [m] |
Можна використовувати другу опцію '-q', щоб використовувати старий файл даних. -Ro використовує старий метод відновлення: повільніше, але надійніше-r. -R може виправити майже всі помилки, крім унікальних ключів, які виявилися все ж таки не унікальними. Якщо-f заданий при перевірці таблиці, то таблиці з помилками будуть автоматично виправлені.
ПРИКЛАДИ:
isamchk-r [table_name] | Забрати всі дірки, які сформувалися через використання BLOBS або VARCHARS. Також встановити які ще є проблеми. |
isamchk-ei [table_name] | Перевірити таблицю і відобразити статистику. |
isamchk [table_name] | Знайти більшість помилок. |
isamchk-rq [table_name] | Оновити тільки індексний файл. Швидко, але не виправляє помилки у файлі даних. |
isamchk-d-v [table_name] | Опис таблиці. |
isamchk-rq-Si [table_name] | Повна оптимізація таблиці [table_name]. |
isamlog
Отримання статистики, і використання isam-журналів.
СИНТАКСИС:
isamlog [-? iruvIV] [-c #] [-f #] [-p #] [-F filepath /] [-o #]
[-R file recordpos] [-w write_file] [log-filename]
ОПИС:
Ця програма використовується разом з опцією - log-isam = file_name демона mysqld.
Файл file_name буде зберігати протокол всіх змін для всіх таблиць. Програма isamlog може бути використана для отримання інформації про цей файл і оновити всі таблиці і бази даних.
Щоб відновити базу даних, потрібна копія, яка містить вашу базу даних до того, як mysqld згенерував ISAM журнал, або повний набір ISAM журналів з початку роботи вашої бази даних.
-? or-I | Довідка. |
-V | Інформація про версію. |
-C # | Виконати лише # команд. |
-F # | Максимальне число відкритих файлів. Якщо відкриється більше ніж # файлів, то зайві будуть автоматично закриті і знов відкриті в міру необхідності. |
-F [path] | Файл протоколу ISAM містить повний шлях до таблиць. Можна використовувати цю опцію, щоб скасувати збережений шлях. ПРИКЛАД: -F '/ var / mirror /' змусить isamlog працювати з файлами в / var / mirror, а не з тими, які вказані в збереженому шляху. |
-I | Вивести більш детальну інформацію. |
-O # | Почати зі зміщення #. |
-P # | Видалити # компонент з шляху. |
-R | Ігнорувати всі помилки, з якими стикаємося протягом модифікацій. |
-R | Вказати позицію у файлі ISAM, про яку треба видати відомості. ПРИКЛАД: isamlog-R / usr / local / data / mysql / user.ISM 1234 Виведе всі зміни в таблиці / usr / local / data / mysql / user, які знайдені в позиції 1234. |
-U | Намагатися модифіковані всі таблиці. Зупинитися, якщо зустрінута помилка. |
-V | Докладний висновок. Можна задати більшу кількість символів v для підвищення обсягу видаваної інформації (наприклад, vv). |
-W [filename] | Записати всі записи вставлені або змінені опцією-R в [filename]. Ця опція може використовуватися, щоб отримати двійковий файл всіх вставок і модифікацій конкретної таблиці для використання в налагодженні. |
safe_mysqld
Скрипт для запуску демона mysqld.
СИНТАКСИС:
safe_mysqld [options to mysqld]
ОПИС:
Цей скрипт зазвичай виконується при початковому завантаженні, щоб запустити mysqld. Якщо необхідно, щоб DATADIR був поміщений в ієрархії каталогу MySQL, що і mysqld, потрібно підправити DATADIR в цьому скрипті.
2.2. Додаткові команди
comp_err
Генерує файли повідомлень про помилки на національній мові.
СИНТАКСИС:
comp_err [-?] [-I] [-V] fromfile [s] tofile
ОПИС:
Ця програма використовується для компіляції текстових файлів які містять відповідність між кодами помилок mysql і текстовими повідомленнями про ці помилки у формат, який розуміє mysql. Це потрібно для зміни існуючого файлу повідомлень або створення такого файлу для іншої мови.
ПРИКЛАД:
comp_err share / english / errmsg.txt share / english / errmsg.sys
msql2mysql
Виконує початкове перетворення mSQL скрипта в MySQL.
СИНТАКСИС:
msql2mysql [filename]
ОПИС:
Скрипт msql2mysql використовується як перший крок при портуванні msql скриптів в MySQL.
Програма msql2mysql - фактично досить простий скрипт, який використовує команду replace, яка поставляється з СУБД MySQL, щоб замінити mSQL звернення до функції на їх MySQL еквіваленти. Змінюються лише імена, додаткові параметри не додаються.
mysqlbug
Генерує звіт про помилки.
СИНТАКСИС:
mysqlbug [address]
ОПИС:
Цей скрипт використовується при повідомленні про помилки в MySQL. Він генерує форму, яку для заповнення поміщає в будь-який текстовий редактор, вказаний у змінній $ VISUAL (Vi за замовчуванням). Форма буде містити автоматично згенерувала інформацію про вашу систему, включаючи версії OS і MySQL і архітектуру. При закінченні, форма буде надіслана поштою до списку розсилки MySQL.
perror
Виводить коротке текстове пояснення числового коду помилки.
СИНТАКСИС:
$ Perror [-? VIV] [errorcodes]
ОПИС:
Програма perror надає короткі текстові пояснення числових кодів помилок, що повертаються системою або СУБД MySQL.
Програма perror підтримує опції:
-? or-I | Довідка. |
-V | Докладна інформація. |
-V | Інформація про версію. |
replace
СИНТАКСИС:
replace [-? svIV] from to from to ... - [Files]
ОПИС:
Програма program використовується скриптом msql2mysql. Replace може бути використана для заміни рядка на місці у файлі або отримувати рядок через канал (пайп), проводити заміну і виводити результат в STDOUT.
Можливі наступні опції:
-? | Довідка. |
-S | Працювати мовчки (ніяких статусних повідомлень). |
-V | Детальна інформація про хід роботи (виводити додаткові повідомлення). |
ПРИКЛАДИ:
replace Apple Orange somefile
Замінить всі входження Apple на Orange у файлі somefile.
cat INFILE | replace Apple Orange Blimp Train> OUTFILE
Всі входження Apple у файлі INFILE будуть замінені на Orange і результат виведений в файл OUTFILE. У той же час, всі входження Blimp у файлі INFILE будуть замінені на Train і теж виведені в файл OUTFILE. Таким чином, можна замінювати більш ніж один вираз за один прохід.
Можна використовувати спеціальні символи у вхідних рядках:
\ \ ^ | Відповідає початку рядка. |
\ \ $ | Відповідає кінцю рядка. |
\ \ B | Відповідає прогалині. Може з'являтися або окремо, або на початку, або наприкінці лексеми. Якщо \ \ b використовується в кінці лексеми, наступні заміни почнуться після пропуску. \ \ B відповідає тільки прогалині. |
Replace проста і дуже корисна утиліта з великими потенційними можливостями використання в MySQL.
which1
Знайти команду.
СИНТАКСИС:
which1 [cmd]
ОПИС:
Ця команда, ймовірно, корисна лише на системах, які не мають, команди which, вбудованої в оболонку, або доступною як команда. Виводить тільки першу знайдену команду.
zap
Послати сигнал процесу, який відповідає зразку.
СИНТАКСИС:
zap [-signal] [-? Ift] pattern
ОПИС:
За замовчуванням zap запросить підтвердження для кожного відповідного процесу.
Програма zap підтримує опції:
-I or -? | Довідка. |
-F | Надіслати сигнал без запиту дозволу. |
-T | Вивести список процесів, що відповідають зразку, але не сигнал їм не посилати. |
Як сигнал допускається будь-який сигнал системи unix. За замовчуванням сигнал = 9 (завершити процес).
3. Налаштування mysqld (серверна частина пакета MySQL)
При вказівці опції-O, окремо (без додаткових параметрів) можна отримати список всіх змінних і їх поточних значень. Це може виглядати приблизно так:
$ Mysqld-O
Можливі змінні в опції-O:
Ім'я | Значення за замовчуванням |
back_log | Визначте розмір черги для вхідних tcp / ip підключень .. Деякі ОС можуть мати максимальне значення цієї змінної 128 або 256. |
keybuffer | Розмір кеш-буфера, для зберігання всіх нещодавно використаних ключів. Великий буфер дає найкращу ефективність. З перемикачем-Sl розподілений тільки один буфер. |
max_allowed_packet | Буфер підключень сервера може бути змінений до цього значення, якщо користувач дає довгу команду. Початковий буфер = 'net_buffer_length'. На кожне підключення виділяється один буфер. |
net_buffer_length | Початковий розмір буфера підключень. На кожне підключення виділяється один буфер. |
max_connections | Максимальне число підключень, які mysqld може мати відкритими в один і той же час. |
table_cache | Максимальне число таблиць зберігаються відкритими на сервері. Таблиці зберігаються відкритими, для прискорення запиту до часто використовуваних таблиць. Проте, кожна відкрита таблиця вимагає багато пам'яті. |
recordbuffer | Розмір кеш-буфера для зберігання прочитаних записів. На кожне підключення виділяється один буфер. |
sortbuffer | Розмір буфера, що використовується при сортуванні. На кожне підключення виділяється один буфер. |
max_sort_length | Максимальний час для сортування? |
Корисні зауваження
Всі потоки спільно використовують ту ж саму основну пам'ять.
MySQL в даний час не використовує memmap. Це може змінюватися.
Можна визначати розмір буфера для ключів при старті mysqld. Буфер ключів буде кешувати всі ключі в усіх таблицях У ПОРЯДКУ НАДХОДЖЕННЯ запитів (змінна keybuffer)
Кожне підключення використовує деяку частину потоку, стік і буфер підключень (змінна net_buffer_length).
Кожен запит, що робить послідовний перегляд записів у таблиці, розподіляє буфер читань (змінна recordbuffer).
Кожен запит, виконує сортування, розподіляє sortbuffer і один або два тимчасових файлу. Максимально необхідне дисковий простір = (sort_key_length + sizeof (long)) * 2.
Усі об'єднання виконуються за один прохід, і результат зберігається в тимчасовій таблиці в пам'яті. Виконання повного об'єднання і сортування на двох великих таблицях може зажадати дуже великого обсягу пам'яті.
Індексні файли відкриваються один раз. Файли даних відкриваються один раз для кожного паралельного потоку. Кожен паралельний потік має повну таблицю struct і поле struct плюс пам'ять для трьох повних рядків стовпців. BLOB вимагає ще 5-8 байт.
Якщо таблиця має BLOB, буфер буде розподілений, щоб читати дані BLOB. Цей буфер буде рости в міру необхідності, до розмірів найбільшого BLOB в таблиці.
Коли таблиця використовується, вона зберігається в кеші. Цей кеш буде завантажений і спорожнений У ПОРЯДКУ НАДХОДЖЕННЯ запитів (FIFO). За замовчуванням mysqld буде кешувати 64 таблиці. Якщо багато потоків звертаються до однієї і тієї ж таблиці одночасно, буде матися один запис на потік. ТОБТО, якщо два потоки одночасно звертаються до тієї ж самої таблиці, буде два записи в кеші.
Команда mysqladmin reload закриває всі таблиці, які не використовуються, і відзначає всі використовувані таблиці, які будуть закриті, коли працюючі потоки завершаться. Це дозволяє ефективно використовувати пам'ять, вчасно її звільняючи.
4. Можливості мови Perl для роботи з MySQL
сервером.
При написанні програми до даної роботи вибрана мова Perl, тому що сьогодні MySQL більш широке поширення отримав на Web-серверах. А Perl як не можна краще інших мов підходить для написання CGI-додатків. Взаємодія сценарію на мові Perl з MySQL можна зобразити схемою:
Сценарій Perl-> DBI -> DBD:: MySQL-> Cервер MySQL.
DBI забезпечує єдиний інтерфейс взаємодії з різними системами управління базами даних. А DBD пов'язує цей інтерфейс безпосередньо з конкретною СУБД. У нашому випадку це mysql. Для того, щоб програма на Perl могла спілкуватися і працювати з базою даних, необхідно підключити модуль DBI і драйвер DBD. Це виконується наступними операторами:
use DBI; use DBD:: mysql;
Для того щоб виконувати SQL запити до бази даних, потрібно встановити логічне з'єднання з MySQL. Це виконується за допомогою методу об'єкта DBI. При цьому він повертає об'єкт (дескриптор) з'єднання, який буде використовуватися для безпосереднього спілкування з базою даних.
$ Dbh = DBI-> connect ('DBI: mysql: dbname = GRYADKA; host = 127.0.0.1; port = 3306','','', 0);
Викликаючи метод connect, йому передаються деякі параметри. Перший параметр визначає властивості з'єднання.
Цей рядок має наступну структуру:
"Dbi: <ім'я DBD>: dbname = <ім'я бази даних>; host = <ім'я хоста>; port = <номер порту>"
Далі в методі connect визначаються ім'я користувача, пароль і прапори з'єднання.
Існує два способи роботи з базами даних MySQL. Перший - так званий механізм курсорів, а другий, відповідно, без використання таких.
Курсори - це об'єкти Perl, які забезпечують послідовний доступ до результатів запитів.
Кожен курсор відповідає за закріплений за ним запит.
$ Cur = $ dbh-> divpare ('select * from MAIN;');
$ Cur - це курсор, який для початку слід виконати, використовуючи метод execute:
$ Cur-> execute;
Тепер, після виконання запиту, щоб отримати результат запиту, використовується метод fetchrow_array. Він по черзі повертає масив полів результативною віртуальної таблиці.
Дуже часто буває необхідно підготувати запит і після, при його виконанні, передавати йому різні дані. Це досить просто вирішується за допомогою механізму placeholders:
$ Cur = $ dbh-> divpare ('insert into MAIN values (?,?)');
де питальні знаки слід замінити на значення змінних, переданих як параметрів методу execute:
$ A00 = 2; $ a01 = 'second record'; $ cur-> execute ($ a00, $ a01);
Для того щоб закрити курсор, необхідно виконати метод finish.
$ Cur-> finish;
Курсори дуже зручний момент в технології DBI. Проте можна обійтися і без них. Існує безліч методів, які цілком непогано замінюють курсори:
selectrow_array - повертає один рядок запиту у вигляді масиву;
selectall_arrayref - повертає весь відповідь сервера у вигляді масиву, посилання на масиви;
do - виконує запит, нічого не повертаючи (дуже зручно при роботі з insert, update і пр.)
Для того щоб розірвати з'єднання з MySQL, необхідно виконати метод disconnect.
$ Dbh-> disconnect;
Висновок.
У процесі написання даної роботи були з'ясовані такі властивості MySQL сервера:
Нить. Підтримка декількох одночасних запитів.
Оптимізація зв'язків з приєднанням багатьох даних за один прохід.
Записи фіксованої і змінної довжини.
Гнучка система привілеїв і паролів.
До 16 ключів в таблиці. Кожен ключ може мати до 15 полів.
Підтримка ключових полів і спеціальних полів в операторові CREATE.
Підтримка чисел довжиною від 1 до 4 байт (ints, float, double, fixed), рядків змінної довжини і позначок часу.
Інтерфейс з мовами C і perl.
Заснована на потоках, швидка система пам'яті.
Утиліта перевірки і ремонту таблиці (isamchk).
Всі операції роботи з рядками не звертають уваги на регістр символів в оброблюваних рядках.
Псевдоніми застосовні як до таблиць, так і до окремих колонках у таблиці.
Всі поля мають значення за замовчуванням. INSERT можна використовувати на будь-якому підмножині полів.
Легкість управління таблицею, включаючи додавання і видалення ключів і полів.
Отже, популярність MySQL сервера визначається не тільки тим, що пакет поширюється безкоштовно і має високу продуктивність, але ще й тим, що має безліч перерахованих вище достоїнств, багатьох з яких немає в інших СУБД.
І віртуальний магазин, і сервер знайомств, і всілякі сайти, що надають платні послуги, - всі потребують можливості обробляти і зберігати великі обсяги інформації. MySQL надає всім цю можливість абсолютно безкоштовно. Це дійсно одна з найпотужніших, швидких і надійних СУБД.
У ході виконання курсової роботи була написана програма, яка представляє собою інтернет-каталог. Вона ілюструє можливості MySQL сервера, можливості інтеграції MySQL c мережею Internet, що на сьогодні досить актуально. Створена програма може використовуватися в якості Інтернет-каталогу в Інтернет-магазині.
Список літератури
М. Каба. MySQL і Perl - СПб.: Питер, 2001.
А. Паутов. Документація по MySQL.
www.mysql.com
www.infocity.kiev.ua