Бази даних mysql

Бази даних: MySQL

MySQL - "зеленим" адмінам

Отже, в теперішній "лабораторній роботі" знадобиться: комп'ютер, власне сам сервер СУБД MySQL, ярлик консолі під рукою (власне, він завжди повинен бути під рукою: хоч зручність роботи під cmd і значно поступається роботі в консольке в Linux, але дуже багато речей можна зробити з консолі швидше, ніж лізти через 3-5 менюшек за потрібною опцією). Багато речей буде робитися саме через консоль. Звичайно, існує безліч "юзер-орієнтованих" програм, призначених для управління сервером, але розглядати будь-яку одну не має сенсу. Якщо ви будете знати основні команди, використовувати MySQL в web-додатках стане не просто легко, а дуже просто! Установка MySQL. Встановлювати і використовувати ми будемо MySQL-сервер 3.23.38. Навіщо взагалі потрібен SQL? На перший погляд, для створення більш-менш пристойного сайту не потрібно особливих наворотів (якими дехто вважає PHP і SQL), але навіть просто лог лічильника після пари-другий тисяч "оборотів" вам дивитися цікаво не буде. Якщо в лог лічильника писати тільки час-дату, IP і ім'я комп'ютера відвідувача, то лог в кілька тисяч рядків не тільки витягати кожен раз з сервера набридне, а й оперативно подивитися, хто був, припустимо, в ніч з четверга на п'ятницю на вашому, безумовно, чудовому сайті, буде дуже важко. А форум писати тільки, припустимо, на PHP не просто досить складно, але і "неприємно".

У таблицях columns_priv, tables_priv зберігаються привілеї користувачів для доступу, відповідно, до колонок і таблиць, в db - привілеї для доступу до баз даних, в host - інформація про комп'ютерах, з яких підключаються юзверя до MySQL, і, нарешті, в таблиці user зберігається інформація про користувачів.
Більш докладні відомості можна отримати з мануала, який є в установчому пакеті (після установки він знаходиться в mysql / Docs). Це майже "двометровий" документ, в якому написано практично все, що потрібно знати на перших порах, і не тільки на перших :-). Нас цікавить, яким чином змінити юзверя з логіном root (ті, хто знайомий з * nux, знають, що це таке, а для інших пояснюю: привілейований користувач з необмеженими правами), а також зробити юзверя, з-під імені якого ми будемо працювати з сервером. В ідеалі такий користувач повинен бути тільки один. Решта користувачів повинні бути з обмеженими правами (головний принцип адміністрування - що не дозволено, то заборонено). Справа в тому, що за замовчуванням привілейований користувач не має пароля. І якщо ви, наприклад, занесете в свою базу даних якісь надсекретні відомості, подивитися, видалити, змінити їх зможе кожен :-). Отже, сервер ми встановили, починаємо адміністрування. Знаходимо директорію, в яку ми встановили наш сервер (за замовчуванням це C: \ mysql). Знаходимо директорію C: \ mysql \ bin і бачимо безліч "файлів". Для початку нам потрібно mysql.exe. Запускаємо. Так, опції запуску з консолі можна подивитися, написавши щось на кшталт

після чого буде виведена довідка. Але поки вони нам не знадобляться. Все sql-команди вводяться в командному рядку і повинні завершуватися ";" або "\ g". Для того, щоб використовувати базу даних, необхідно спочатку її вибрати. Для цього існує команда USE. Нам необхідна БД "mysql":

Для того, щоб подивитися, які бази даних є на сервері, існує команда:

де databaseName - ім'я бази даних. Подивимося, хто у нас числиться в юзверя нашого сервера. пишемо

після чого отримаємо список юзверей з назвами комп'ютерів, з яких їм дозволяє з'єднатися із сервером. Перш, ніж ви почнете експериментувати з правами доступу до баз даних, раджу вам скопіювати папку mysql (з файлами відповідної бази даних) куди-небудь у віддалене місце для того, щоб, якщо щось не вийде, можна було б "відкотитися".

Команда SELECT - вона з самих частоіспользуемих команд. З її допомогою ми можемо показати, які дані нас цікавлять, і попросити вивести її на екран. Синтаксис її такий:

Замість "інтересующіе_столбци_в_табліце" можна поставити "*", тоді нам будуть видані значення всіх колонок, які присутні в таблиці. Найчастіше замість "<параметры>"Пишуть ще одне ключове слово - WHERE. Синтаксис такий:

Так, тепер пишемо:

де NEWpassword - новий пароль для суперкористувача. До слова, таким чином можна змінити пароль для будь-якого юзверя. Трохи поясню, що означають ці команди. Функція PASSWORD ( 'string') шифрує рядок за певним алгоритмом, а команда UPDATE змінює значення запису WHERE (де) в таблиці user. До слова, всі паролі в MySQL зберігаються в зашифрованому вигляді.
Тепер нам потрібно заборонити суперкористувачеві підключатися з віддалених комп'ютерів. Для цього видаляємо рядки зі знаком "%". Пишемо "DE-LETE FROM user WHERE Host = '%';". Команда DELETE має схожий синтаксис з командою SELECT:

Бачимо назва служби "MySql". Виходимо з WMIC:

Тепер зупиняємо службу

і стартуємо знову:

Ви питаєте, навіщо я все це розповідаю? Одна з причин - таким же чином можна зупиняти і запускати будь-які інші служби. А друга. Ну, уявіть, що у вас стоїть сервер MySQL де-небудь в локальній мережі, а ваш комп'ютер знаходиться в іншій будівлі, і вам необхідно терміново переконфигурировать його. Бігти до сервера і вживу його налаштовувати? Ну, ви як хочете, а мені особисто лінь. Коннектимся до сервера і віддалено адміном :-). До речі, програма mysql.exe, якої ми користувалися для підключення до сервера (а саме це ми і робили), може працювати і з віддаленим сервером. Це легко побачити, запустивши mysql.exe наступним чином:

Вас попросять ввести пароль на root, які ми з вами ставили вище. Якщо все нормально, з'явиться запрошення "mysql>", як і раніше. Тепер спробуємо створити ще юзверей. Робиться це так. Створимо трьох юзверей з різними правами:

До речі, якщо ви дасте команду "mysql> status", сервер вам видасть кілька корисної інформації. Отже, ми створили трьох юзверей. Перший - ferst - отримує всі права і може підключатися до сервера як з локального комп'ютера, так і віддалено, пароль для доступу йому призначений sam_pass. Другий юзверя - admin - отримує права на reload і refresh, але може підключатися тільки з локального комп'ютера (що означає значок "%"), пароль на вхід не призначений. Третій юзверя з ім'ям doom може підключатися з локального комп'ютера, і він створений, так би мовити, "безправним", тобто всі глобальні привілеї йому не дано. Те ж саме можна було б зробити по-іншому. Наприклад, ось так:

Напевно, необхідно пояснити, що це означає. Команда INSERT вставляє рядок в таблицю, назва якої слід після слова INTO, в дужках дані назви стовпців, наявних в цих таблицях. Після VALUES слідують значення, які заносяться до відповідних колонки. Значення необхідно брати в лапки. Остання команда оновлює права доступу. Буква 'Y' означає включення відповідної привілеї, 'N' - відповідно вимикання. Таблиця user має такі стовпці (дані в тому ж порядку, що і в реальності):

Я думаю, що в поясненнях дана таблиця не потребує. Назви колонок говорять самі за себе (якщо ви, звичайно, знаєте англійську, як я - на рівні 5-го класу хоча б :-)). Природно, що, якщо в попередніх командах літери 'Y' замінити на 'N', відповідний користувач відповідного права і не отримає :-). Тепер розберемося, яким чином можна змінювати права юзверей при підключенні до бази даних. Для цього існує команда GRANT.

Поясню, що роблять ці команди. Після команди GRANT слід список привілеїв, які необхідно надати юзверя custom. Після слова ON йде назва бази даних, після точки можна вказати конкретну таблицю в цій базі даних, а зірочка означає "будь-яка". А після слова TO йде імя_юзверя @ імя_ комп'ютера, з якого цей юзверя зможе підключатися. Знак відсотків означає "любой_компьютер". Після слів IDENTIFIED BY слід вказати в лапках пароль, який буде вимагатися у юзверя при вході. В даному випадку це 'stupid'. Звичайно, подібного результату можна добитися і безпосередній модифікацією таблиці user. Наприклад, ось так:

Я думаю, зрозуміло, що робить дана команда. Вона вставляє в таблицю user запис зі значеннями в стовпчиках, які записані після слова VALUES. Відповідною модифікацією цієї команди можна досягти тих же результатів, що і використанням команд, викладених вище. І не забудьте після того, як внесете зміни, дати команду FLUSH PRIVILEGES ;. Тепер, після того, як ви успішно створили користувачів, переходимо до більш цікавої частини - власне створення бази даних. Для створення бази даних необхідно з тієї ж директорії, що і програму mysql.exe, запустити програму mysqladmin.exe. Якщо ви запустите цю програму просто без опцій, вона видасть вам список параметрів запуску. Власне, і все використання цієї програми зводиться до запуску її з відповідними опціями. Отже, нас перш за все цікавить створення і видалення баз даних, а також підключення через логін і пароль до віддаленого сервера (лінь - воістину двигун прогресу!). Підключаємося до віддаленого сервера hostname з використанням логіна root пароля, який у нас після запитають. Замість OPTIONS необхідно написати власне те, що ми хочемо зробити. Створення бази даних з ім'ям database_name:

Видалення бази даних database_name після підтвердження і введення пароля:

Існують також і інші параметри запуску, на яких ми особливо зупинятися не будемо, хоча вони не менш важливі. Відомості про них ви отримаєте, як я вам уже сказав, запустивши mysqladmin без опцій. Отже, ми створили базу даних. Тепер необхідно створити таблиці, в яких, власне, і будуть зберігатися дані. Будь-яка таблиця повинна ставитися до будь-якої базі даних. Тому запускаємо mysql.exe і вибираємо тільки що створену базу даних "mysql> use database_name" Для створення таблиці існує команда CREATE. Синтаксис такий:

де table_name - ім'я таблиці, після якої в дужках через кому вказані послідовно ім'я стовпця і його тип. Звичайно, стовпців може бути і більше, ніж два. Цифри в шпальтах показують розмір значення в стовпці. Ну, і для того, щоб видалити таблицю, відповідно, необхідно написати:

Дані команди вибирають в якості поточної базу даних test і створюють таблицю з ім'ям table_name з двома колонками. Перша колонка має атрибут Extra "auto_increment". Це означає, що при додаванні запису в цю таблицю значення (число) в цьому стовпці буде автоматично збільшуватися на одиницю. Подивитися властивості колонок таблиці можна наступним чином (давши відповідну команду):

Так, тепер торкнемося інших типів даних. Числові. Їх присутня велика кількість, основними є (на мій погляд) INT і FLOAT. Ті, хто знайомий хоча б трохи з мовою програмування С ++, зрозуміють відразу ж, що перший з них - це цілочисельний тип даних. FLOAT - тип даних, використовуваний для зберігання чисел з плаваючою точкою. Типи даних дати і часу. До них відносяться DATA, TIME, YEAR, а також деякі інші. Формат зберігання даних в типі DATA - "YYYY-MM-DD", в типі TIME - "HH: MM: SS", в типі YEAR - "YYYY". І практично основним типом даних є CHAR. До текстових типам також відносяться TEXT (65535 символів максимально) і деякі інші.

передати ім'я файлу "File_name", і цей файл буде виконаний. Що він собою являє? Це просто послідовний список SQL-команд. Тепер нам залишається тільки згенерувати такий файл, що в кожному окремо взятому випадку робиться по-різному - тут потрібно дивитися по обстановці. Звичайно, можна піти ще далі і написати програму для автоматичного занесення даних в БД. Але для простих завдань можна просто навіть текстовий файл з написаними в ньому командами скопіювати в буфер і вставити в запрошення MySQL. "Уведення" будуть сприйматися як знак завершення команди. Тільки не забувайте ставити в кінці кожного рядка ";", адже в mysql.exe команди можна вводити і в багаторядковому режимі, тому можуть траплятися накладки. Правда, є й альтернативний спосіб. Якщо у вас є текстовий файл із записами у вигляді таблиці, і вони в ньому розділені за допомогою ком і знаків закінчення рядка або якихось інших символів (тоді слід внести зміни в параметри такої команди, замінивши кому і "\ n" на відповідні знаки ), можна використовувати команду

Результатом даної команди повинна з'явитися таблиця. У файлі поля повинні бути розділені комами, а кожна запис - починатися з нового рядка. Слід пам'ятати ще й про таку річ, як кодування. Якщо всі дані вносити через консоль, то вони будуть зберігатися в DOS-кодуванні, і при виведенні таких даних - наприклад, якщо в html-сторінці використовують PHP - ви побачите "абракадабру". Щоб цього не відбувалося, заносите дані тільки в одному кодуванні або перекодуйте їх за допомогою спеціальних функцій (для PHP це функція $ text_after = convert_cyr_string ($ text, "w", "d"), де два останніх параметра вказують відповідно на те, що вихідна кодування - Windows, а кінцева після перекодування - DOS). І на останок. Набагато приємніше працювати з консоллю, так всіма нелюбимої, якщо зробити щось на зразок цього: На необізнаних людей діє досить своєрідно :-).

Схожі статті