Ручне встановлення MySQL на Windows. Основи адміністрування MySQL за допомогою командного рядка Зупинка сервера mysql з командного рядка




Для Win 32 вибираємо дистрибутив: Windows (x86, 32-bit), Zip-Archive.

Для Win 64: Windows (x86, 64-bit), Zip-Archive.

Після натискання на кнопку Download ви побачите форму для реєстрації, її можна пропустити, натиснувши посилання внизу – No thanks, just take me to the downloads.

2. Створюємо папку установки. Наприклад . І розпаковуємо в неї зміст архіву таким чином, щоб папки bin, data, docs та іншібули докорінно папки установки.

3. Переходимо до створення конфігураційного файлу (my.ini). За основу беремо один із типових файлів:

  • my-small.ini - підійде тим, хто використовує MySQL час від часу і не хоче, щоб сервер займав багато ресурсів.
  • my-medium.ini – теж не вимоглива до ресурсів конфігурація, але підійде тим, хто використовує MySQL на постійній основі (добрий вибір для домашнього веб-сервера).
  • my-large.ini та my-huge.ini – для систем, що використовуються як виділений MySQL сервер. Втім, my-large.ini можна використовувати для домашнього сервера, якщо потрібна додаткова продуктивність MySQL (512 Мб оперативної пам'яті не так вже й багато за нинішніх часів).
  • my-innodb-heavy-4G – для виділених серверів, що мають від 4 Гб оперативної пам'яті та використовують лише таблиці типу InnoDB.

У цьому прикладі я вибрав за основу my-medium.ini. Перейменовуємо його в my.ini і розміщуємо в корені папки установки ( C:\Program Files\MySQL\MySQL Server 5.5).

Відкриваємо для редагування (у звичайному Блокноті) і відразу після рядка дописуємо два параметри:

Basedir = C : / Program Files / MySQL / MySQL Server 5.5 datadir = C : / Program Files / MySQL / MySQL Server 5.5 / data

Зверніть увагу, що у шляхах використовується прямий слеш (/), а не зворотний (\).

basedir – це шлях до папки установки.

datadir – шлях до папки даних (де зберігаються всі БД). Іноді є сенс розмістити дані на окремому диску, щоб підвищити продуктивність або забезпечити надійність.

Про всяк випадок наводжу фрагмент конфігураційного файлу, після внесення змін:

# MySQL Server basedir = C: / Program Files / MySQL / MySQL Server 5.5 datadir = C : / Program Files / MySQL / MySQL Server 5.5 / data port = 3306 socket = /tmp/mysql.sock skip-external-locking key_buffer_size = 16M max_allowed_packet = 1M table_open_cache = 64 sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K InnoDB_sort_

4. Наступний етап – додати шлях C:\Program Files\MySQL\MySQL Server 5.5\binу змінне середовище PATH, щоб спростити запуск MySQL з командного рядка. Для цього відкриваємо властивості системи -> Додаткові параметри системи -> на закладці Додатково в самому низу кнопка "Змінні середовища ...". У вікні, що відкриється, перегортаємо системні змінні поки не знайдемо Path. Виділяємо цей рядок та натискаємо “Змінити…”. Наприкінці рядка дописуємо свій шлях, зберігаючи наявні параметри:

Зверніть увагу, що шляхи поділяються крапкою з комою. Переконайтеся, що на початку та в кінці вашого шляху точка з комою поставлена.

5. Перед тим як здійснити пробний пуск, відкриваємо вхідний порт TCP 3306 у брандмауері Windows:


Якщо в системі встановлено додатковий брандмауер, то в ньому також необхідно відкрити порт TCP 3306 для підключення.

6. Тепер здійснюємо тестовий запуск. У командному рядку, запущеному від імені адміністратора (це обов'язково, якщо на Сімерці або Вісті включено UAC), виконуємо:

Mysqld --console

На екрані буде виведено кілька рядків. Якщо запуск пройшов успішно, останній рядок буде виглядати приблизно так:

Version: "5.5.9-log" socket: "" port: 3306 MySQL Community Server (GPL)

Залишаємо це вікно відкритим і відкриваємо ще одне вікно командного рядка, в якому вводимо:

Mysql -u root

Якщо підключення пройшло без помилок, ви побачите запрошення командного рядка: mysql>

Подивимося, які бази у нас є:

Show databases;

Крапка з комою в кінці SQL-запиту ОБОВ'ЯЗКОВА!

Відповідь команди:


Тепер ми остаточно переконані, що сервер працює.

7. Переходимо до наступного етапу – необхідно встановити пароль адміністратора MySQL (користувач root). За промовчанням пароль не встановлено, і це потрібно виправити. У тому ж таки вікні MySQL вводимо наступні команди:

Use mysql UPDATE user SET password = PASSWORD("ваш_пароль") WHERE user = "root";

Перевіряємо результат:

SELECT user, host, password FROM user;

Як видно на скріншоті, колонка password заповнена, значить пароль встановлений.

Перед виходом виконуємо команду:

FLUSH PRIVILEGES;

Тепер під час підключення необхідно вводити пароль. Для цього використовуємо ключ -p:

Mysql -u root -p

Для завершення роботи MySQL виконуємо:

Mysqladmin -u root -p shutdown

8. Останній етап – запуск MySQL як системна служба Windows.

Переконайтеся, що у системі немає активних процесів MySQL.

У командному рядку, запущеному від імені адміністратора, виконуємо:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --install

Шлях до mysqld необхідно вказувати повністю (навіть якщо його прописано в PATH)!

Для запуску служби відкриваємо “Управління комп'ютером” і вручну запускаємо службу MySQL:


Або простіше через командний рядок:

Net start mysql

Для видалення служби попередньо її зупиняємо:

Net stop mysql

і виконуємо:

"C:\Program Files\MySQL\MySQL Server 5.5\bin\mysqld" --remove

Мені часто друзі ставлять ті чи інші питання з адміністрування і я подумав, чому б замість того, щоб пояснювати по 100 разів те саме, не писати такі статті-нотатки на сайті? До того ж, це чудова можливість у разі чого самому скористатися такою заміткою, адже Ви самі знаєте, втримати в голові часом все не можливо і так чи інакше іноді доводиться звертатися до настільної книги, то нехай такою книгою стане один із розділів цього сайту. Сьогодні ми поговоримо про те, як працювати з СУБД MySQL з командного рядка, так хтось скаже — «Накой? Адже є phpMyAdmin», відповідаю — навіщо витрачати дорогоцінні ресурси сервера, встановлюючи всяку погань на кшталт WebMin, phpMyAdmin і т.п., якщо все так само легко можна зробити надійними, перевіреними засобами. Налаштування з терміналу за SSH-тунелем – наш вибір!

Що ж, приступимо. З'єднуємося із сервером по SSH, наприклад через усіма відомий PuTTY (A Free Telnet/SSH Client). Тепер перейдемо безпосередньо до опису команд.

Вхід на сервер MySQL програмою mysql:

mysql -u root -h localhost -p

Параметр -u вказує користувача, який входитиме до системи. Параметр -h вказує вузол мережі. Зазвичай це localhost, якщо ви налаштовуєте не видалений сервер. Нарешті -p повідомляє програмі-клієнту mysql, що для доступу до бази даних буде вводитися пароль. Зверніть увагу на запрошення mysql. Саме тут ви вводитимете всі свої команди. Тепер, перебуваючи в середовищі mysql як кореневий користувач, ми можемо почати налаштування бази даних.

Ми увійшли, і на екрані – запрошення mysql. Спочатку поглянемо на список наявних баз даних. Для цього введемо команду SHOW DATABASES.

Відповідь дає зрозуміти, що команда виконана без жодних помилок. У цьому випадку змінився один рядок. Це відноситься до головної бази mysql, в якій міститься список всіх баз даних. Але вам не потрібно надто турбуватися про другорядні подробиці. Останнє число означає час виконання запиту. Переконайтеся, що база даних створена, ми можемо знову запустити команду SHOW DATABASES.

Щоб зайнятися створенням таблиць у новій базі даних test, нам потрібно встановити її як поточну. Для цього використовуємо команду USE. Параметром цієї команди вказується назва бази даних, яку потрібно зробити поточною. Ще поточну базу можна встановлювати в командному рядку, вказуючи назву після параметра -D. Давайте продовжимо і перейдемо на базу даних test.
Перемикання бази даних:

USE test;

Привілеї у MySQL

Надання привілеїв командою GRANT.
Привілеями визначаються можливості доступу користувачів до баз даних, таблиць… майже всього. Зараз тільки суперкористувач root з MySQL може звертатися до бази даних test, згідно з даними дозволами. Давайте створимо ще одного користувача, наприклад, admin (адміністратор), який буде звертатися до бази даних test та працювати з інформацією з неї. Але перш, ніж почати, погляньмо на дещо спрощений формат команди GRANT.

Примітка: Команда GRANT вважається способом створення користувача Пізні версії MySQL, однак, також містять функцію CREATE_USER, хоча GRANT досі краще.
Тепер потрібні привілеї, які можна надавати. Використовуючи все вищесказане, можна встановлювати такі привілеї:

Примітка: Якщо ви використовуєте MySQL для обміну даними з веб-додатком, то роз'яснені тут привілеї CREATE, SELECT, INSERT, а також привілеї DELETE та UPDATE (описані в посібнику з MySQL, розділ GRANT and REVOKE Syntax (англ.)) - єдині, які , мабуть, знадобляться. Багато хто робить помилку, роздаючи всі привілеї, коли це, насправді, не потрібно. Зверніться до розробників додатків, чи дійсно такі дозволи створять проблеми в роботі.

Створення користувача admin:

Отже, користувачі створені; тепер протестуємо їх. Спочатку вийдемо з mysql, написавши quit у рядку запрошення:

Параметри пояснюються у розділі команди GRANT. А зараз ми заборонимо користувачеві будь-який вид доступу. Скажімо, ми з'ясували, що обліковий запис admin викликає проблеми з безпекою. Ми вирішуємо відкликати усі права. Заходимо як root робимо необхідне.
Відгук дозволів для користувача admin:

REVOKE ALL ON test.* FROM "admin" @ "localhost" ;

Примітка: У даному випадку доступ користувача простий, тому скасування прав на одну базу даних - не проблема. Але зазвичай вам, швидше за все, потрібно використовувати *.* замість test.*, щоб заразом скасувати доступ користувача до всіх інших баз даних.

Тепер поглянемо, як видалити обліковий запис командою DELETE, і подивимося на таблицю користувачів MySQL.

Видалення облікових записів командою DELETE.
Таблиця користувачів MySQL – це список користувачів та інформації про них. Переконайтеся, що ви зайшли, як root. Використовуйте основну базу MySQL.

Використання основної бази mysql:

Таблиця user – та, що потрібна. У ній 30 різних полів, і її важко читати. Для полегшення читання використовуємо третю форму команди SELECT. Шукані поля - Host (вузол) та User (користувач).
Знаходження користувача admin у таблиці user:

Тепер, отримавши інформацію, ми можемо позбавитися користувача admin. Це робиться командою DELETE; ось її синтаксис:

Ви могли помітити, що формат DELETE чимось схожий на формат SELECT. Вкажемо поле User та значення admin. Це видалити запис з таблиці user, де користувач - admin, видаляючи наш обліковий запис. Зробимо так:
Видалення користувача admin:

Команда FLUSH PRIVILEGES потрібна для оновлення дозволів.

На сьогодні все. Погодьтеся, все просто! ;)

Доброго часу доби, колеги 🙂

Так, саме колеги, тому що простому смертному MySQL командний рядок (або MySQL Shell, як його ще люблять називати розробники), так само як і робота з MySQL в консолі, навряд чи стане в нагоді.

Для того, щоб ця тема була цікава, потрібно бути, як мінімум, або системним адміністратором-початківцем, які не користуються phpMyAdmin та іншими інтерфейсами принципово.

Особисто я сам вважаю за краще використовувати phpMyAdmin як основну для роботи з MySQL, т.к. за своєю природою є візуалом. Однак, іноді на практиці зустрічаються ситуації, коли знання MySQL командного рядка та вміння роботи з MySQL у консолі сервера просто необхідні.

У мене зараз їх було три:

  1. Вперше я зіткнувся з роботою в MySQL консолі, коли знадобилося імпорт великого дампа БД. Через phpMyAdmin не завантажувався цілком, т.к. відвалювався десь посередині по таймууту, незважаючи на зміну налаштувань часу виконання операції та розмірів файлів, що завантажуються. В принципі можна було підібрати потрібні значення, але мені здалося це занадто тривалим процесом.
  2. Наступного разу попрацювати з MySQL через командний рядок довелося відключити перевірки зовнішніх ключів, коли потрібно було видалити дані з таблиці, яка з допомогою ключів пов'язані з іншими. У phpMyAdmin я просто не знайшов як це зробити.
  3. У серйозних компаніях для роботи з MySQL використовується виключно консоль без будь-яких phpMyAdmin-ів. Не знаю чому конкретно, але знаючі люди казали, що це пов'язано з безпекою. У результаті всім доводилося працювати з командним рядком MySQL, в тому числі і мені 🙂

Але, повторюся, робота з MySQL у консолі та командному рядку цілком підходить і для повсякденного використання. Всі відомі візуальні програми для роботи з базою даних все одно працюють на основі консольних команд MySQL. Тому, кому як подобається 🙂

Запуск консолі на різних ОС

Оскільки я демонструватиму роботу з командним рядком MySQL в консолі сервера, то для початку непогано було б її запустити.

Дія проста, багатьом знайома, для якої достатньо знання «гарячих клавіш».

Запуск консолі у Windows:

  • Win+R для відкриття командного рядка Windows із правами адміністратора;
  • Вводимо команду cmd
  • Натискаємо Enterна клавіатурі

Запуск консолі в Linux дистрибутивах (терміналу): в Ubuntu, з якою я працював, достатньо системної комбінації клавіш Ctrl+Alt+T. Про решту ОС на базі Linux нічого сказати не можу.

Запуск консолі в MacOS: сам таким не займався, т.к. Маком ще не обзавівся і навряд чи обзаведусь за непотрібністю, але, наскільки мені вдалося дізнатися, «гарячих клавіш» для виклику терміналу в цій ОС немає. Так що якщо ви користувач «яблучної» продукції, то запустіть консоль через інтерфейс ОС, благо, що мануалів в мережі багато.

Трохи соромно навіть таку інформацію публікувати на випадок, якщо на цю статтю випадково набреде якийсь професійний адміністратор з бородатим досвідом, т.к. він подумає: «Автор вважає своїх читачів програмістами, але при цьому вчить запускати консоль… Псих якийсь:-)».

Так, цілком логічно 🙂 Але я просто враховую ситуації, що поряд із професійними розробниками сюди можуть потрапити і новачки. Тому я намагаюся робити інформацію повною та доступною для всіх категорій користувачів, про що вже говорив.

Основні команди консолі MySQL

Отже, перш за все, нам потрібно отримати доступ до MySQL командного рядка в консолі. Для цього відкриваємо консоль сервера і, якщо у вас MySQL встановлений глобально у вигляді сервісу, для «перевірки зв'язку» прописуємо наступне:

Mysql -V

Консольна команда mysqlдозволяє нам запустити однойменну утиліту, що є командним рядком MySQL.

Це дозволить нам дізнатися версію MySQL, встановленого на комп'ютері та переконатися, що він взагалі встановлений як служба. Якщо це так, то у відповідь у консолі ви побачите приблизно такий текст: .

Так, я не «трушний кодер», тому що сиджу під Віндою 🙂 Але, не суть. На Unix системах процедура буде такою самою.

Якщо раптом MySQL у вас не встановлений глобально на комп'ютері або у вас є необхідність роботи з кількома версіями MySQL, при якій є тільки каталоги з файлами та бібліотеками MySQL, то запуск MySQL через консоль буде виглядати так.

У консолі переходимо в каталог, де знаходиться файл MySQL, що виконується (на Windows, принаймні, це mysql.exe) наступною командою:

Cd C:\OpenServer\modules\database\MySQL-5.7-x64\bin

Шлях до дистрибутиву у вас, звісно, ​​може відрізнятися. Як приклад, я вирішив запустити одну з версій MySQL, що входять до комплекту OpenServer.

І запускаємо MySQL, перевіряючи принагідно його версію:

Mysql.exe -V

В результаті в консоль мало вивестися аналогічне першому випадку повідомлення mysql Ver 14.14 Distrib 5.7.16, для Win64 (x86_64).

Все, із запуском MySQL командного рядка через консоль сервера розібралися, тепер підключатимемося безпосередньо до сервера MySQL.

Підключення до сервера MySQL у консолі

Cервер MySQL може не обов'язково перебувати на тій же машині, на якій ви намагаєтеся отримати доступ до нього в консолі. Отже, для того, щоб підключення до віддаленого сервера MySQL через консоль було можливим, утиліта mysql має безліч параметрів, за допомогою яких можна вказувати необхідні налаштування.

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

Однак, у такому випадку ви отримаєте таку помилку: ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO). Так, повідомлення про помилку виглядає у мене на Windows. Якщо ж ви використовуєте Linux, то замість ODBC буде ім'я вашого системного користувача, під яким ви робите дії в системі.

Все це тому, що за умовчанням при підключенні до MySQL серверу в консолі використовується користувач ODBC на Windows без пароля і системний користувач на Linux з його паролем. За замовчуванням хост localhost, тобто. Цей користувач може підключатися лише з локальної машини.

Тому виходу у вас два: або використовувати іншого користувача для входу в командний рядок MySQL або створити користувача MySQL з потрібною обліковкою. Але для другого способу нам без першого все одно не обійтися 🙂 root, який створюється під час встановлення MySQL на комп'ютер і для якого за замовчуванням дозволено доступ з localhost:

Mysql -u root -p

При вимозі ввести пароль просто натискаємо Enter (якщо ви його не вводили, звичайно, при встановленні MySQL). Після цього ви будете підключені до сервера MySQL з наданням вам ідентифікатора підключення та отриманням доступу до командного рядка MySQL.

Якщо ж ви захочете підключитися до сервера MySQL, що має специфічне ім'я хоста або IP або захочете залогінитись під іншим користувачем, використовуйте команду наступного формату:

Mysql -u ім'я_користувача -p пароль_користувача -h хост_або_IP_сервера_MySQL

Замість кирилиць з підкресленням, природно, потрібно ввести свої дані латинницею. До речі, цю команду за бажання можете прописати трохи в іншому форматі:

Mysql --user=ім'я_користувача --password=пароль_користувача --host=хост_або_IP_сервера_MySQL

Якщо з якоїсь причини ви не хочете, щоб пароль підключення до MySQL відображався в консолі (що правильно, насправді), можете використовувати наступну команду:

Mysql -u ім'я_користувача -h хост_або_IP_сервера_MySQL -p

Оскільки пароль не вказано, вам буде запропоновано його ввести на наступному кроці. Причому введені вами символи відображені не будуть навіть у вигляді зірочок (wildcards), натомість буде просто порожній рядок.

Крім зазначених налаштувань підключення можна використовувати такі параметри, значення яким будуть вказуватися аналогічним з вищепереліченими чином:

  1. -port або -P - для вказівки порту підключення до сервера MySQL;
  2. —protocol — протокол, яким здійснюватиметься підключення (можливі варіанти: TCP для Windows і Linux, SOCKET для Linux, PIPE і MEMORY для Windows);
  3. -socket або -S - цей параметр стане в нагоді, якщо ви захочете підключатися через сокети, отже, значення параметра буде сокет;
  4. -pipe або -W - параметр потрібен, якщо ви захочете використовувати іменовані "трубопроводи" або "пайпи" для підключення;
  5. —shared-memory-base-name — цей параметр стане вам у нагоді для MEMORY підключень через загальну пам'ять на Windows;

Зрозуміло, що на цьому список усіх параметрів підключення до MySQL серверу не обмежується. Насправді їх набагато більше.

Якщо з якоїсь причини стандартний варіант із зазначенням хоста, користувача та пароля вам не підійде, то для з'ясування повного переліку параметрів підключення вам буде корисна така інформація - https://dev.mysql.com/doc/refman/5.7/en/ connecting.html

Як створити базу даних у MySQL консолі

Після того, як ми підключилися до сервера MySQL та запустили командний рядок MySQL, час розпочати життєвий цикл нашої бази даних сайту, який стартує з її створення. Для створення бази даних MySQL через командний рядок потрібно запровадити наступну команду:

CREATE DATABASE ім'я_бази_даних;

Те саме дію можна зробити і за допомогою спеціальної MySQL утиліти mysqladmin. Запускається вона ізольовано від командного рядка MySQL, тобто. Для її використання вам потрібно буде вийти з неї або відкрити нову консоль сервера.

А потім викликати наступну команду:

mysqladmin create ім'я_бази_даних;

До речі, за допомогою утиліти mysqladmin можна не тільки створювати та видаляти бази даних, не заходячи в консоль MySQL, а й оперувати серверною конфігурацією, процесами MySQL, керувати реплікаціями, пінгувати сервери та робити ще багато всього цікавого.

Як створити користувача MySQL у командному рядку

Не часто, але іноді потрібно створити нового користувача MySQL. Причому в консольному режимі.

У командному рядку MySQL це робиться так:

CREATE USER "ім'я_користувача"@"хост_або_IP_машини" IDENTIFIED BY "пароль_користувача";

Користувач створено. Параметр хост_або_IP_машиниозначає, що при створенні користувача потрібно вказувати IP, з якого він зможе підключатися до сервера або ім'я хоста (підійде доменне ім'я робочої машини в мережі).

До речі, при вказівці хоста для підключення до сервера MySQL можна використовувати символ відсотка. % , який означає, що користувач може з'єднуватися з сервером MySQL з будь-якого IP адреси або хоста.

У цьому слід враховувати, що у разі localhost не входить у список адрес, вказуваних з допомогою %, т.к. localhost означає підключення через UNIX сокет замість стандартного TCP/IP. Тобто. якщо створений користувач MySQL підключатиметься до сервера не за допомогою сокетів, а по іншому протоколу, що вказується при з'єднанні з MySQL сервером в консолі, то йому потрібно буде створювати два облікові записи користувача:

CREATE USER "ім'я_користувача"@"%" IDENTIFIED BY "password"; CREATE USER "ім'я_користувача"@"localhost" IDENTIFIED BY "password";

Зі створенням користувача MySQL в консолі ми розібралися. Тепер задамо права користувача для виконання будь-яких дій з нашою новоствореною базою даних наступною командою:

GRANT ALL PRIVILEGES ON ім'я_бази_даних.* TO "ім'я_користувача"@"хост_або_IP_машини";

Опція ALL, як ви зрозуміли, якраз і вказує на те, що користувачеві дозволяють будь-які дії з певною БД. Повний список прав, які можна надавати користувачам за допомогою команди GRANT, можна знайти тут (правда, опис параметрів англійською) - https://dev.mysql.com/doc/refman/5.7/en/grant.html#grant-privileges

Можна, до речі, використовувати кілька параметрів привілеїв, вказуючи їх під час виклику команди через кому.

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

GRANT ALL ON *.* TO "ім'я_користувача"@"хост_або_IP_машини";

До речі, не зайвим буде очистити кеш MySQL сервера після встановлення привілеїв. Якщо їх змінюватимете, то також не забувайте робити це викликом наступної команди:

FLUSH PRIVILEGES;

А якщо захочете поміняти права користувача, то спочатку використовуйте наступну команду щоб скинути всі права:

REVOKE ALL PRIVILEGES ON *.* FROM "ім'я_користувача"@"хост_або_IP_машини";

А потім встановіть йому потрібні за допомогою GRANTЯк це було описано раніше.

Якщо ж вам у майбутньому потрібно буде змінити пароль користувача MySQL, то для цього достатньо виконати в MySQL Shell наступні команди:

SET PASSWORD FOR "ім'я_користувача"@"хост_або_IP_машини" = PASSWORD("новий_пароль"); FLUSH PRIVILEGES;

Скидання кешу привілеїв MySQL сервера потрібне з тією ж метою, що і при зміні прав - без цієї дії зміна пароля користувача MySQL може бути не зарахована, тому не лінуйтеся користуватися 🙂

В Інтернеті, до речі, повно прикладів використання наступної команди для скидання пароля MySQL користувача:

UPDATE mysql.user SET Password=PASSWORD("пароль") WHERE User="ім'я_користувача";

Але у мене на MySQL 5.7 цей варіант не спрацював, видавши помилку ERROR 1054 (42S22): Unknown column 'Password' in 'field list'. Її причиною виявилося відсутність поля Password в таблиці mysql.user.

З чого можна припустити, що цей варіант працює лише для старих версій MySQL, де в таблиці користувачів це поле існувало. Тому для впевненості використовуйте мій перший варіант, якщо ви, звичайно, не змушені працювати з допотопним ПЗ без можливості оновлення версій 🙂

На цьому створення нового користувача MySQL та огляд дій з його правами та паролями закінчено. Ідемо далі.

Вибір бази даних під час роботи з MySQL через командний рядок

Тепер, після створення користувача MySQL Shell і призначення йому прав на роботу з БД нам потрібно вибрати цю саму базу, щоб можна було оперувати самою базою і даними, що зберігаються в ній.

Для цього використовуємо наступну команду в MySQL консолі:

USE ім'я_бази_даних;

Якщо все пройшло успішно, то консолі виведеться повідомлення Database changed, Що буде сигналізувати про те, що ми виконали вхід до бази MySQL через консоль. До речі, при з'єднанні з сервером MySQL спочатку можна вказувати БД, з якою необхідно буде працювати. Для цього потрібно прописати наступну команду в консолі сервера:

Mysql --user=ім'я_користувача --password=пароль_користувача --host=хост_або_IP_сервера_MySQL --database=ім'я_бази_даних

Або те саме, тільки із запитом введення пароля користувача MySQL:

mysql -u ім'я_користувача -h хост_або_IP_сервера_MySQL ім'я_бази_даних -p

На цьому все. Думаю, жодних складнощів із підключенням до бази даних MySQL через консоль тепер у вас не виникне 🙂

Робота з таблицями MySQL через консоль MySQL

Отже, базу даних MySQL через консоль ми створили. Тепер було б непогано навчитися з нею працювати для випадку, коли командний рядок MySQL буде єдиним засобом доступу до даних, що зберігаються на сервері (як це було в мене, про що я говорив на початку статті).

Як відомо, складається з таблиць, усередині яких і зберігається інформація як записів із кількома полями. Тому, слідуючи ієрархії розміщення інформації, спочатку навчимося проводити типові CRUD операції з таблицями.

CRUD операції, якщо хтось не в курсі, - це операції зі створення, читання, оновлення та видалення даних від англ. Create, Read, Update, Delete (можливо, на співбесідах вам таке знадобиться).

Нагадую, що для виконання дій з таблицями ви повинні спочатку підключитися до БД MySQL за допомогою команди USE.

Отже, перша на порядку денному у нас команда створення таблиці MySQL у БД через командний рядок, який виглядає так:

CREATE TABLE ім'я_таблиці (назва_поля_1 тип_поля_1, назва_поля_2 тип_поля_2(розмір_поля_2), INDEX(назва_поля_1), ...);

Як ви розумієте, полів може бути скільки завгодно, типи їх можуть бути різні, так само як і наявність індексів та ключів опціонально.

До речі, якщо ви захочете скопіювати таблицю в іншу базу даних або просто створити копію поточної, вам допоможуть наступні команди:

CREATE TABLE нове_ім'я_таблиці LIKE старе_ім'я_таблиці; INSERT нове_ім'я_таблиці SELECT * FROM старе_ім'я_таблиці;

Дані команди дозволяють скопіювати структуру таблиці та її дані разом з індексами та тригерами таблиць. Якщо вам потрібні просто дані та структура (імена полів та їх типів даних), то можете обійтися викликом однієї команди:

CREATE TABLE нове_ім'я_таблиці AS SELECT * FROM старе_ім'я_таблиці;

Наступна операція із блоку CRUD у нас читання. У разі таблиць читанням буде виведення на екран їхньої структури. Для цього існує чотири команди:

SHOW FULL COLUMNS FROM имя_таблицы; DESCRIBE имя_таблицы; EXPLAIN имя_таблицы; SHOW CREATE TABLE имя_таблицы;

Перша виводить інформацію про поля таблиці БД в табличному вигляді в консоль MySQL із зазначенням назви поля, типу даних, наявності ключів, значенням за умовчанням і т.д. При використанні ключового слова FULLможна отримати розширену інформацію, включаючи привілеї на кожне з полів для поточного користувача, коментарі до кожного з них та значення кодування.

Друга та третя команди є просто скороченими формами першої команди без розширеної інформації. Навіщо було їх плодити — навіть не уявляю… Хіба що щоб було що запитати на співбесідах при прийомі на роботу? 🙂

Четверта команда, крім імені, типів полів та значень їх за замовчуванням дозволяє отримати значення ключів таблиць, движків таблиць (InnoDB, MyISAM), кодування та ін.

Update операція у разі таблиць є зміна їх структури, тобто. різні дії з полями таблиць MySQL:

ALTER TABLE назва_таблиці DROP COLUMN назва_поля; ALTER TABLE имя_таблицы ADD COLUMN назва_поля VARCHAR(20); ALTER TABLE назва_таблиці CHANGE стара_назва_поля нова_назва_поля VARCHAR(50); ALTER TABLE Назва_таблиці MODIFY назва_поля VARCHAR(3);

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

Те саме можна робити і з індексами таблиць за допомогою багато схожих команд:

ALTER TABLE ім'я_таблиці ADD UNIQUE INDEX ім'я_індексу (назва_поля_1, ...); ALTER TABLE ім'я_таблиці rename INDEX старе_ім'я_індексу TO нове_ім'я_індексу; ALTER TABLE имя_таблицы DROP INDEX имя_индексу;

Наведені команди дозволяють додавати, перейменовувати та видаляти індекси з таблиць MySQL через командний рядок. Для додавання та видалення індексів є, до речі, ще альтернативний варіант використання самостійних команд, а не робити це через ALTER TABLE. Тому за бажання можете використовувати їх:

CREATE UNIQUE INDEX ім'я_індексу (назва_поля_1, ...) ON ім'я_таблиці; DROP INDEX ім'я_індексу ON ім'я_таблиці;

Наведені команди є еквівалентами першої та останньої з попереднього блоку. Для перейменування індексу, на жаль, окремої команди немає. А для зміни типу індексу, на жаль, взагалі немає жодної можливості у MySQL. Єдиний вихід — видалити індекс та створити його знову з потрібним типом.

Ну, і, нарешті, ми дійшли до останньої операції з блоку CRUD — до видалення. Видалити таблиці MySQL із БД дуже просто. Достатньо в консолі MySQL виконати таку команду:

DROP TABLE имя_таблицы;

Іноді практично виникають ситуації, внаслідок яких виходить видалити таблицю чи змінити її структуру. Як правило, це пов'язано з використанням БД зовнішніх ключів для зв'язку таблиць між собою. З цією ситуацією я особисто стикався неодноразово, про що говорив на початку статті.

Тому якщо при видаленні або оновленні структури таблиці або її даних MySQL повернув вам помилку з текстом Cannot delete або update a parent row: a foreign key constraint fails, то наступна інформація вам буде дуже доречною.

Щоб здійснити задумане, нам потрібно тимчасово відключити перевірку існування зовнішніх ключів, зробити необхідну операцію, та був знову включити перевірку, т.к. вона дійсно потрібна і дозволяє запобігати порушенню цілісності даних у більшості випадків.

Власне, з цією метою зовнішні ключі MySQL і необхідні.

Отже, для видалення даних, якому заважають зовнішні ключі, необхідно виконати наступні дії в консолі MySQL:

SET FOREIGN_KEY_CHECKS=0; #необхідна_mysql_команда SET FOREIGN_KEY_CHECKS=1;

До речі, якщо захочете видалити зовнішній ключ, то процедура буде такою самою, як і при видаленні індексу:

ALTER TABLE Назва_таблиці DROP FOREIGN KEY Назва_зовнішнього_ключа;

Щоб дізнатися про ім'я зовнішнього ключа MySQL таблиці, використовуйте вже знайому команду MySQL консолі SHOW CREATE TABLE.

Робота з даними таблиць MySQL через командний рядок

Для таблиць CRUD операції в консолі MySQL ми розглянули. Для повної картини даної шпаргалки не вистачає лише команд для роботи з самими даними, що зберігаються в таблицях БД. Думаю, багато хто знає ці команди і користувався ними на практиці, але все ж таки нагадаю їх ще раз.

CRUD операції для роботи з даними таблиць MySQL виглядатимуть так:

INSERT INTO имя_таблицы (поле1, поле2, ...) VALUES (значення_поля_1, значення_поля_2, ...); SELECT поле1, поле2, ... FROM имя_таблицы; UPDATE ім'я_таблиці SET поле1 = значення_поля_1, поле2 = значення_поля_2; DELETE FROM ім'я_таблиці WHERE поле1 = значення_поля_1;

Наведені вище команди відповідають операціям створення, читання, оновлення та видалення даних із таблиць БД MySQL. При використанні SELECT та UPDATE також можна використовувати уточнюючий оператор WHERE, за допомогою якого можна конкретизувати вибір даних способом, описаним у разі використання DELETE.

Також при вибірці даних із БД за допомогою SELECT можна використовувати наступний варіант для отримання значень усіх полів таблиці:

SELECT * FROM имя_таблицы;

Природно, що в цих операціях можуть використовуватися інші оператори, крім WHERE. Особливо їх багато під час вибірки даних за допомогою SELECT: тут і UNION для об'єднання результатів кількох запитів і різні типи JOIN. Все перераховувати дуже довго і втомливо як для мене, так і для вас це читатиме.

Тому давайте домовимося: якщо вам захочеться про щось дізнатися детальніше — просто напишіть про це у коментарях, і я постараюся вам відповісти. Або це зроблять інші обізнані учасники нашої спільноти. Ок? 😉

Тож поки на даному блоці зупинятись не будемо.

Якщо вам потрібно буде видалити всі дані з таблиці, то можете скористатися наступною MySQL командою:

TRUNCATE имя_таблицы;

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

Ще один цікавий момент, який тут потрібно врахувати, це те, що дана команда не скидає лічильник AUTO_INCREMENT, який використовується, як відомо, для автоматичної генерації значення поля без необхідності його ручної установки.

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

Тобто, якщо до видалення даних таблиці за допомогою TRUNCATEмаксимальне значення лічильника було 1200, то перший запис після цієї процедури значення ідентифікатора буде 1201. У принципі, нічого страшного. Якщо ви задали достатній розмір для цього поля, переповнення значень вам загрожує не скоро.

Однак, в окремих випадках, коли в коді програми є якась прив'язка до значення поля, то ця поведінка може завдавати незручностей.

Щоб цього уникнути, використовуйте замість команди цей варіант:

TRUNCATE TABLE someTable RESTART IDENTITY;

Даний варіант виклику команди TRUNCATEдозволить вам скинути значення лічильника полів з AUTO_INCREMENT. Тому значення поля першого доданого запису після цього видалення буде 1 замість 1201, як у прикладі вище.

Як видалити базу даних MySQL через командний рядок

Життєвий цикл роботи з базою даних добігає кінця і завершується цілком логічно - її видаленням. Для того, щоб зробити цю операцію в консолі MySQL, потрібно виконати наступну команду (при цьому БД, що видаляється, може бути і не обрана командою USE):

DELETE DATABASE ім'я_бази_даних;

Те саме дію можна зробити і за допомогою MySQL утиліти mysqladmin, про яку я вже згадував на початку статті при створенні БД:

Mysqladmin drop имя_базы_данных;

Під час виклику команди в консолі сервера з'явиться таке повідомлення:

Попадання на 데이터베이스 є потенційно дуже погано thing to do.
Any data stored in database will be destroyed.

Do you really want to drop the 'назва_бази_даних' database

Коротко це попередження про те, що видалення бази даних MySQL ідея дуже погана. Також запитується підтвердження дії. Якщо згодні - пишемо yта натискаємо Enterна клавіатурі, після чого на екран виведеться наступне повідомлення (якщо все пройшло успішно, звичайно ж):

Database «ім'я_бази_даних» dropped

Ось так 🙂

Як видалити користувача MySQL у консолі

Тепер та ж доля спіткає і створюваного нами користувача MySQL, щоб продемонструвати вам, як це робиться. Але спочатку непогано б перед самим видаленням перевірити, чи існує необхідний користувач насправді.

Починаючи з MySQL 5.7 для обох цих дій існує одна команда:

DROP USER IF EXISTS ім'я_користувача;

У попередніх версіях MySQL потрібно дві окремі команди:

GRANT USAGE ON *.* TO "ім'я_користувача"@"хост_або_IP_адреса"; DROP USER "ім'я_користувача"@"хост_або_IP_адреса";

На жаль, в даному випадку повідомлення про виконання операції в консолі MySQL традиційно малоінформативно 🙁 Тому, щоб дізнатися, що видалення користувача користувач MySQL все-таки відбулося, можна скористатися наступною командою, яка виводить на екран список всіх користувачів, що існують на поточному MySQL:

SELECT User FROM mysql.user;

Цей варіант команди виведе лише імена користувачів. Якщо вам потрібно буде подивитися хости, з яких користувачі можуть коннектитися до сервера, і список привілеїв, то можете викликати команду в наступному вигляді:

SELECT User, Host, Grant_priv FROM mysql.user;

Також у таблиці mysql.user існує безліч інших полів, в яких зберігаються інші типи привілеїв та інша інформація, з повним списком якої можна познайомитися тут - https://mariadb.com/kb/en/library/mysqluser-table/

Не соромтеся, що це документація до СУБД MariaDB. Технічно це те саме, що і MySQL, т.к. MariaDB є лише її відгалуженням або форком від англ «fork» - відгалуження, вилка.

Навіщо її було робити — знову без поняття? Тому якщо ви щось про це знаєте, було б цікаво прочитати про це в коментарях.

Вихід із консолі MySQL

Ось і все, життєвий цикл БД і користувача, що розпочався їх створенням і завершився видаленням, добіг кінця. Отже, командний рядок MySQL, з яким ми працювали в консолі сервера за допомогою утиліти mysqlнам більше не потрібна.

Залишилося тільки вийти з неї.

Здавалося б, дія тривіальна, але багато хто в ситуації, коли потрібно вийти з командного рядка MySQL просто закривають консоль сервера і відкривають її знову. Можна, звичайно, і так діяти, але це забирає зайві секунди робочого часу і змушує дратуватися щоразу, коли це зробити необхідно.

Правильною поведінкою в даній ситуації буде лише виклик команди exitу командному рядку MySQL, після чого сервіс з нами ввічливо попрощається 🙂

І всього-то 🙂 Так що наступного разу не потрібно плодити консолі і перевідкривати їх щоразу, коли потрібно буде вийти з MySQL в консолі і знову отримати доступ до неї для управління сервером.

Ось і все, що я хотів вам розповісти. Сподіваюся, що моя шпаргалка по роботі з командним рядком MySQL через консоль нагоді не тільки мені, але і вам.

Говорячи про практичне застосування викладеної в статті інформації, хочеться нагадати, що наведеними конструкціями можна користуватися не тільки в командному рядку MySQL і консолі сервера, але і в консолі phpMyAdmin та іншого ПЗ, яке надає таку можливість.

Користуватися вам чи ні — ваша справа. Але, як я сказав на початку статті, бувають ситуації, коли використання консолі MySQL може заощадити ваш час і нерви. А чи користуватися командним рядком щодня чи ні — справа виключно смаку та індивідуальних уподобань.

Пишіть коментарі про те, які команди ви використовуєте найчастіше. А можливо, ви знаєте ще якісь хитрощі. У будь-якому випадку поділіться своєю думкою з іншими та підтримуйте розмови в коментарях інших користувачів.

Обіцяю, що в процесі ви дізнаєтесь багато нового, як і я при написанні кожної статті 🙂

На цьому все! Удачі та до нових зустрічей 🙂

P.S.: якщо вам потрібен сайт або необхідно внести редагування на існуючий, але для цього немає часу та бажання, можу запропонувати свої послуги.

Більше 5 років досвідупрофесійна розробка сайтів. Робота з PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angularта іншими технологіями web-розробки.

Нижче наведено список найкорисніших і найчастіше використовуваних команд MySQLіз прикладами.

mysql на початку рядка означає, що команда виконується після входу в MySQL.

Символ # або $ на початку рядка означає, що команда виконується з командного рядка.

Щоб перевірити статус сервера MYSQLвиконайте:

для FreeBSD:

# service mysql-server status

в CentOS/RHEL:

# service mysqld status

MySQLз консолі, якщо сервер MySQLзнаходиться на тому ж хості:

Щоб підключитися до сервера MySQLз консолі, якщо сервер MySQLзнаходиться на віддаленому хості db1.example.com:

$ mysql -u username -p -h db1.example.com

Робота з базами, таблицями – перегляд, видалення, редагування записів. Консоль

Створити базу даних на MySQLсервері:

Mysql create database

Показати список усіх баз даних на сервері MySQL:

Mysql use;

Відобразити всі таблиці у базі даних:

Mysql show tables;

Переглянути формат таблиці в базі:

Mysql describe;

Видалити базу:

Mysql drop database;

Видалити таблицю з бази:

Mysql drop table;

Показати весь вміст таблиці:

Mysql SELECT * FROM;

Відобразити стовпці та вміст стовпців у вибраній таблиці:

Mysql show columns from ;

Відобразити рядки у певній таблиці, що містять "whatever":

Mysql SELECT * FROM WHERE = "whatever";

Відобразити всі записи у певній таблиці, що містять "Bob" та телефонний номер "3444444:

Mysql SELECT * FROM WHERE name = "Bob" AND phone_number = "3444444";

Відобразити всі записи, НЕмістять ім'я "Bob" та телефонний номер "3444444", відсортовані по полю phone_number:

Mysql SELECT * FROM WHERE name != "Bob" AND phone_number = "3444444" order by phone_number;

Показати всі записи, що починаються з літер "bob" та телефонного номера "3444444" у визначеній таблиці:

Mysql SELECT * FROM WHERE name like "Bob%" AND phone_number = "3444444";

Показати всі записи, що починаються з літер "bob" та телефонного номера "3444444", обмежуючись записами з 1-ої до 5-ї:

Mysql SELECT * FROM WHERE name like "Bob %" AND phone_number = "3444444" limit 1,5;

Використовуйте регулярні вирази ("REGEXP BINARY") для пошуку записів. Наприклад, для регістро-незалежного пошуку - знайти всі записи, що починаються з літери А:

Mysql SELECT * FROM WHERE rec RLIKE "^a";

Показати всі унікальні записи:

Mysql SELECT DISTINCT FROM; mysql SELECT, FROM ORDER BY DESC;

Показати кількість рядків у таблиці:

Mysql SELECT COUNT(*) FROM;

Mysql SELECT SUM(*) FROM;

Видалення стовпця:

Mysql alter table drop column;

Додавання колонки до бази даних:

Mysql alter table add column varchar (20);

Зміна імені стовпця:

Mysql alter table change varchar (50);

Створити стовпець з унікальним ім'ям, щоб уникнути дублікатів у назвах:

Mysql alter table add unique ();

Зміна розміру стовпця:

Mysql alter table modify VARCHAR(3);

Видалення стовпця з таблиці:

Mysql alter table drop index;

Mysql LOAD DATA INFILE " /tmp/filename.csv " replace INTO TABLE FIELDS TERMINATED BY "," LINES TERMINATED BY "n" (field1,field2,field3);

Користувачі, паролі сервера MySQL – додавання, зміна користувачів та паролів. Консоль

Створення нового користувача – підключення до сервера MySQLпід root, переключення до бази даних, додавання користувача, оновлення привілеїв:

# mysql -u root -p mysql use mysql; mysql INSERT INTO user (Host,User,Password) VALUES("%","username", PASSWORD("password")); mysql flush privileges;

Змін користувача пароля з консолі на віддаленому хості db1.example.org:

# mysqladmin -u username -h db1.example.org -p password "new-password"

Зміна пароля користувача з консолі MySQL- Підключення під root, оновлення пароля, оновлення привілеїв:

# mysql -u root -p mysql SET PASSWORD FOR "user"@"hostname" = PASSWORD("passwordhere"); mysql flush privileges;

Відновлення/зміна пароля root сервера MySQL- зупинка MySQL, запуск без таблиць привілеїв, підключення під root, встановлення нового пароля, вихід та перезапуск MySQL.

# /etc/init.d/mysql stop # mysqld_safe -skip-grant-tables & # mysql -u root mysql use mysql; mysql update user set password=PASSWORD("newrootpassword") where User="root"; mysql; flush privileges; mysql quit # /etc/init.d/mysql stop # /etc/init.d/mysql start

Set root password if there is on root password.

# mysqladmin -u root password newpassword

Оновлення пароля root:

# mysqladmin -u root -p oldpassword newpassword

Встановлення права на підключення до сервера з хоста localhost з паролем "passwd" - підключення підroot, переключення до бази даних, встановлення привілеїв, оновлення привілеїв:

# mysql -u root -p mysql use mysql; mysql grant usage on *.* to bob @localhost identified by "passwd"; mysql flush privileges;

Встановлення привілеїв користувачу використання бази даних - підключення під root, переключення до бази даних, встановлення привілеїв, оновлення привілеїв:

# mysql -u root -p mysql use mysql; mysql INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv) VALUES ("%", "databasename", "username", "Y", "Y", "Y"," Y","Y","N"); mysql flush privileges;

Mysql grant all privileges on databasename .* to username @localhost; mysql flush privileges;

Оновлення інформації у базі даних:

Mysql UPDATE SET Select_priv="Y",Insert_priv="Y",Update_priv="Y" where=user";

Видалення рядка у таблиці:

Mysql DELETE from where = "whatever";

Оновлення привілеїв у базі даних:

Mysql flush privileges;

Резервні копії – створення, відновлення бд. Консоль

Створити резервну копію (dump) всіх баз даних у файл alldatabases.sql:

# mysqldump -u root -p password -opt; /tmp/alldatabases.sql

Створити резервну копію однієї бази даних у файл databasename.sql:

# mysql dump -u username -p password -databases databasename; /tmp/databasename.sql

Створити резервну копію однієї таблиці у файл databasename.tablename.sql:

# mysql dump -c -u username -p password databasename tablename ; /tmp/databasename.tablename.sql

Відновлення бази даних (або таблиці) із резервної копії:

# mysql -u username -p password databasename< /tmp/databasename.sql

Створення таблиць БД. Консоль

маленькими літерами вказані імена шпальт;
ПЕРЕПИСНИМИ літерами - типи та атрибути столців;
в (дужках) - значення типу стовпця.

Створити таблицю, приклад 1:

mysql CREATE TABLE (firstname VARCHAR(20), middleinitial VARCHAR(3), lastname VARCHAR(35), suffix VARCHAR(3), officeid VARCHAR(10), userid VARCHAR(15), username VARCHAR(8), email ), телефон VARCHAR(25), групи VARCHAR(15), datestamp DATE, timestamp TIME, pgpemail VARCHAR(255));

Створити таблицю, приклад 2:

Mysql create table (personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, перше ім'я VARCHAR(35), middlename VARCHAR(50), останнєname VARCHAR(50) default "bato");

Утиліта командного рядка mysql є простою SQL-оболонкою (з можливостями бібліотеки readline проекту GNU). Вона підтримує інтерактивний та неінтерактивний режими. В інтерактивному режимі результати запиту подаються в форматі ASCII. При використанні в неінтерактивному режимі (наприклад, як фільтр) результат подається в текстовому форматі з символом табуляції як роздільник (вихідний формат можна змінити за допомогою командного рядка). Сценарії можна запускати, як показано нижче:

Shell> mysql database output.tab

Якщо виникають проблеми через брак пам'яті на даному клієнті, застосовуйте параметр --quick ! Це змусить mysql використовувати функцію mysql_use_result() замість функції mysql_store_result() для отримання результативної вибірки даних.

Використовувати MySQL дуже легко. Запустіть mysql database або mysql --user=user_name --password=your_password databas e. Наберіть SQL-команду прямо в командному рядку, завершивши її одним із символів: `;" , `\g" або `\G" , і натисніть клавішу "Введення"".

Утиліта командного рядка mysql підтримує такі параметри:

Help Виведення довідкової інформації про використання програми та вихід із неї. -A, --no-auto-rehash Вимикає автоматичне рехешування. rehash слід використовувати для отримання хешу таблиць та полів. Це забезпечує швидший старт mysql. --prompt=... Встановлює запрошення на введення команд у заданому форматі. -b, --no-beep Вимикає звуковий сигнал про помилку. -B, --batch Виводить результати в пакетному режимі із символом табуляції як роздільник, кожен рядок з нового рядка. Файл історії не використовується. --character-sets-dir=... Директорія, де є набори символів. -C, --compress Використовувати стиснення даних у протоколі сервер/клієнт. -#, --debug[=...] Журнал налагодження. Значення за промовчанням - "d:t:o,/tmp/mysql.trace". -D, --database=... Ім'я бази даних, що використовується. Здебільшого застосовується в конфігураційному файлі `my.cnf" . --default-character-set=... Встановити набір символів за промовчанням. -e, --execute=... --batch).-E, --vertical Вивести результати запиту (рядки) по вертикалі Можна зробити висновок подібним чином і без цього параметра, завершуючи команди символами \G.-f, --force Продовжувати обробку навіть при виявленні помилки SQL. -g, --no-named-commands Вимикає іменовані команди: слід використовувати лише команди виду \* або застосовувати іменовані команди тільки на початку рядка, що закінчується символом `;" . Починаючи з версії 10.9, клієнт запускається з цією опцією, включеною за замовчуванням! З опцією -g однак довгі команди все ще працюють з першого рядка. -G, --enable-named-commands Дозволяє іменовані команди. Допускаються довгі команди, а також укорочені види команди *. -i, --ignore-space Ігнорувати пробіл після імен функцій. -h, --host=... Приєднатися до бази даних на вказаному хості. -H, --html Вивести вихідні дані у вигляді HTML. -L, --skip-line-numbers Не вказувати номери рядків помилок. Корисно для порівняння результуючих файлів, які містять повідомлення про помилки. --no-pager Блокує пейджер (програма постраничного виведення) і виводить результат стандартний висновок stdout (у Unix). Дивіться також команду \h (інтерактивна допомога). --no-tee Блокує вихідний файл. Також дивіться команду \h (інтерактивна допомога). -n, --unbuffered Очищати буфер після кожного запиту. -N, --skip-column-names Не вказувати імена стовпців у результатах. -O, --set-variable var=option Встановити змінну. Список змінних виводиться через --help . -o, --one-database Оновити лише базу даних, встановлену за умовчанням. Дозволяє пропускати оновлення іншої бази даних у журналі оновлення. --pager[=...] Встановлює тип даних виводу. За умовчанням це змінна оточення PAGER. Її можливі значення - less, more, cat [> ім'я файлу], і т.д. також команду \h (інтерактивна допомога). Цей параметр не працює в пакетному режимі. Пейджер працює лише під Unix. -p, --password[=...] Пароль, який використовується при підключенні до сервера баз даних. Якщо в командному рядку пароль не вказано, він запитується у користувача. При використанні короткої форми -p не залишайте пробіл між параметром та значенням пароля. -P --port=... Номер порту TCP/IP, який використовується для підключення. -q, --quick Не кешувати результат. Виводити його рядок за рядком так, як він надходить від сервера. Це може сповільнити швидкість роботи сервера, якщо результат буде призупинено. Файл історії не використовується. -r, --raw Показувати значення стовпців без будь-якого перетворення. Використовується з --batch. -s, --silent Режим мовчання. Виводити лише повідомлення про помилки. -S --socket=... Файл сокета, який використовується для підключення. -t --table Виводити результат у табличному форматі. За замовчуванням встановлено непакетний режим. -T, --debug-info Виводити деякі налагоджувальні дані при виході з програми. --tee=... Приєднати щось до вихідного файлу. Також дивіться команду \h (інтерактивна допомога). Цей параметр не працює у пакетному режимі. -u, --user=# Ім'я користувача MySQL, якщо цей користувач не активний в даний час. -U, --safe-updates[=#], --i-am-a-dummy[=#] Дозволяє виконувати тільки операції UPDATE та DELETE , використовуючи ключі. Докладніше про цей параметр наведено нижче. Можна скинути цей параметр, встановивши в конфігураційному файлі `my.cnf" значення аргументу --safe-updates=0 . -v, --verbose Більше розширений режим виведення результатів (-v -v -v дає формат виведення таблиці). , --version Виведення інформації про версію та вихід із програми -w, --wait Якщо з'єднання з сервером впало, почекати і спробувати відновити його, замість того, щоб перервати роботу.

Через параметри командного рядка -O або --set-variable також можна встановити наступні змінні:

Якщо ввести командний рядок help , програма mysql виведе список підтримуваних нею команд:

Mysql> help Команди MySQL help (\h) Виводить цей текст. ? (\h) Синонім для help. clear (\c) Команда очищення. connect (\r) Знову підключитися до сервера. Додаткові аргументи – db і host. edit (\e) Редагувати поточну команду за допомогою $EDITOR. ego (\G) Надіслати поточну команду MySQL серверу та вивести результат по вертикалі. exit (\q) Вийти із програми. Те ж, що і quit. go (\g) Надіслати поточну команду MySQL серверу. nopager (\n) Блокувати пейджер, виводити через stdout. notee (\t) Не додавати запис у вихідний файл outfile. pager (\P) Встановити PAGER . Виводити результати запиту через PAGER. print (p) Вивести поточну команду. prompt (\R) Змінити формат запрошення на введення команд mysql. quit (\q) Вийти із програми. rehash (\#) Відновити таблицю хешів. source (\.) Запустити на виконання файл із SQL-сценарієм. Вказати ім'я файлу як аргумент. status (\s) Отримати інформацію про статус сервера. tee (\T) Встановити параметр outfile . Приєднати щось до цього вихідного файлу. use (\u) Використовувати іншу базу даних. Вказати ім'я бази даних як аргумент.

Команда pager працює лише під Unix.

Результат цього наступний:

  • Не дозволяється виконувати команди UPDATE або DELETE, якщо не вказано обмеження за ключами у секції WHERE. Однак можна змусити виконувати команди UPDATE / DELETE , використовуючи оператор LIMIT: UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
  • Усі надто великі результати обмежені рядками #select_limit# .
  • SELECT ы, які можуть зажадати виконання кількість комбінацій рядків більше, ніж #max_join_size# , будуть перервані.

Декілька корисних порад щодо використання клієнта mysql:

Деякі дані більш легкочитати при виведенні їх по вертикалі замість зазвичай використовується горизонтального вікна виведення. Наприклад, текст, який більше за довжиною, ніж по ширині, і містить багато нових рядків, часто набагато легше читати у вертикальному поданні.

Mysql> SELECT * FROM mails WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Чи є це один чоловік з UTF-8 Thimble> or Unicode? Інші, I"ll put this on my TODO List and see what Thimble> happens. Yes, please do that.

  • Для входу в систему можна використовувати налаштування команди tee. Вона може бути запущена за допомогою --tee=... для mysql або інтерактивно з командного рядка введенням команди tee . Усі представлені на екрані дані також додані до заданого файлу. Це може бути дуже корисно для налагодження програми. Утиліту tee можна блокувати з командного рядка командою notee. Повторний запуск команди tee знову увімкне журналування. Якщо при цьому параметр для команди tee не вказано, буде використовуватись попередній файл. Слід врахувати, що команда tee записуватиме результати у файл після кожної виконаної команди, якраз перед появою командного рядка для введення чергової команди.
  • За допомогою опції --pager[=...] став можливим перегляд або пошук результатів в інтерактивному режимі за допомогою Unix-програм less , more або інших. Якщо явно не вказати аргумент у цьому параметрі, клієнт mysql шукатиме змінну оточення PAGER і встановить значення pager . Програму pager можна також запустити з інтерактивного командного рядка командою pager і зупинити командою nopager . Команда може приймати аргумент, який є необов'язковим; pager буде встановлена ​​на значення цього аргументу.. Команда pager може бути викликана і без аргументу, але це вимагає використання опції --pager або відповідної установки за промовчанням стандартного виведення stdout . Команда pager працює лише у Unix, оскільки використовує функцію popen() , що у Windows. Натомість у Windows можна використовувати параметр tee, хоча в ряді ситуацій це менш зручно, ніж застосування команди pager.
  • Декілька порад щодо команди pager: Її можна використовувати для запису у файл: mysql> pager cat > /tmp/log.txt і результати будуть направлені лише у файл. Програми, що викликаються командою pager, можуть приймати будь-які допустимі опції: mysql> pager less -n -i -S Зверніть особливу увагу на опцію -S у наведеному вище прикладі. Вона може бути дуже корисною під час перегляду результатів. Спробуйте застосувати її з горизонтальним виводом (завершуйте команди символами "\g", or ";") і вертикальним (наприкінці команд - "\G"). Дуже громіздкі результати виводу іноді важко буває прочитати з екрану, в цьому випадку команда less з опцією -S дозволить переглянути результати в інтерактивному режимі зліва направо, при цьому при появі рядків з довжиною більше ніж ширина екрану їх виведення буде продовжено виведення з нового рядка . Виведення даних у таких випадках виходить більш легкочитаним. Під час інтерактивного виклику команди less з опцією "-S" можна перемикати режим її роботи (ввімкнено/вимкнено) з командного рядка. Щоб отримати додаткову інформацію щодо less, звертайтеся до опису команди "h".
  • На закінчення відзначимо (якщо ви ще не зрозуміли з попередніх прикладів), що існує можливість комбінувати дуже складні способи обробки результатів. Так, у наступному прикладі результати будуть надіслані у два різних каталоги, змонтованих на двох різних жорстких дисках /dr1 and /dr2, і, незважаючи на це, результати можна побачити на екрані за допомогою команди less: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S
  • Наведені вище функції можна також комбінувати: запустивши tee і встановивши pager в less можна переглядати результати за допомогою Unix-команди less і при цьому одночасно робити запис у файл. Різниця між службовою Unix-утилітою tee, що використовується в програмі pager, і вбудованою в клієнт mysql командою tee полягає в тому, що вбудована команда tee працює навіть у тому випадку, якщо в Unix утиліта tee недоступна. Вбудована команда tee також веде запис всього, що виводиться на екран, тоді як утиліта Unix tee, що використовується з pager, не робить цього достатньо. Остання, проте важлива обставина полягає в тому, що інтерактивна команда tee більш зручна для перемикання режимів роботи включено/вимкнено, якщо при записі в файл іноді виникає необхідність відключити цю функцію.

Можна змінити формат запрошення у командному рядку клієнта mysql.

Можливі наступні опції запрошення:

Опція Опис
\vверсія mysqld
\dім'я бази даних, що використовується
\hім'я хоста, до якого здійснюється підключення
\pномер порту, через який здійснюється підключення
\uІм'я користувача
\Uповна адреса [email protected]
\\ зворотний слеш `\"
\nсимвол нового рядка
\tтабуляція
\ пробіл
\_ пробіл з підкресленням
\Rчас по військовому часовому поясу (0-23)
\rчас за стандартним часовим поясом (1-12)
\mхвилини
\yдва розряди року
\Yчотири розряди року
\Dповний формат дати
\sсекунди
\wдень тижня у трилітерному форматі (Mon, Tue, ...)
\PЧас до полудня/після полудня (am/pm)
\oмісяць у числовому форматі
\Oмісяць у трилітерному форматі (Jan, Feb, ...)
\cЛічильник, що підраховує кількість команд, що вводяться

Символ `\" за яким слідує будь-яка інша буква, просто доповнює цю букву.

Установити параметри запрошення можна такими способами:

У змінних оточенняМожна встановити змінну оточення MYSQL_PS1 для рядка запрошення. Наприклад: shell> export MYSQL_PS1="(\ [email protected]\h) [\d]> " `my.cnf" `.my.cnf"Можна встановити опцію prompt у будь-якому конфігураційному файлі MySQL у групі mysql. Наприклад: prompt=(\ [email protected]\h) [\d]>\_ У командному рядкуМожна встановити опцію --prompt із командного рядка утиліти mysql. Наприклад: shell> mysql --prompt="(\ [email protected]\h) [\d]> " ( [email protected]) > В інтерактивному режиміТакож можна використовувати команду prompt (або \R) для зміни налаштувань запрошення в інтерактивному режимі. Наприклад: mysql> prompt (\ [email protected]\h) [\d]>\_ PROMPT set to "(\ [email protected]\h) [\d]>\_" ( [email protected]) > ([email protected]) > prompt Повернення до вихідних (за замовчуванням) налаштувань PROMPT в утиліті mysql> mysql>