Mysql командная строка. Команды MySQL в Linux

От автора: опять заплутали, и не знаете, как зайти в MySQL? Не вы первый! Собирайте всех заблудившихся, и сейчас отправимся прямиком в гости к ней. К кому «к ней»? К самой популярной СУБД всемирной паутины!

Где в Денвере находится MySQL

Имеется в виду не столица штата Колорадо в США, а пакет программ для создания и тестирования приложений на PHP. В состав набора для «джентльменов» входит локальный сервер Apache, MySQL сервер и оболочка phpMyAdmin. Именно с помощью данного программного пакета чаще всего «новички» познают все тонкости работы с этой системой управления БД.

Перед тем, как зайти в MySQL через браузер, нужно запустить локальный сервер, затем в адресной строке набрать localhost, и в появившемся окне «Ура, заработало!» в разделе утилиты выберите phpMyAdmin.

После чего окажетесь там-же (в phpMyAdmin).

Проходим к базам данных через «лабиринт»

Мы с вами отправимся в «дремучий» лес, и постараемся через него «пробраться» к серверу баз. Не подумайте, что мы от кого-то прячемся, просто сейчас мы будем действовать, как . Поехали!

Перед тем, как зайти в MySQL через командную строку, следует выяснить, где находится главная директория сервера баз данных. Если вы используете СУБД в «чистом» виде без «примесей» (вне «джентльменского» набора), то корневая папка сервера расположена здесь: C:\Program Files\MySQL\MySQL Server 5.5\bin\mysql.exe

Если вы используете Денвер, то искомый фал находится по этому пути: Z:\usr\local\mysql-5.5\bin\mysql.exe,

где Z – это виртуальный диск, который создается после запуска локального веб-сервера. У вас он может быть под другим именем (точнее, буквой).

Нас интересует именно файл mysql.exe. Запустим его на выполнение, указав имя сервера баз данных, пароль и пользователя, под которым зайдем в MySQL.

Как включить MySQL через командную строку: заходим в «Пуск», среди стандартных программ выбираем «Командная строка». Запускаем утилиту, и с этого момента опишем всю процедуру «хождения» в дремучем лесу пошагово, чтобы вся группа «заблудившихся» не потерялась еще раз Стартуем:

В черное окно CMD (командной строки) вводим путь, где хранится исполняемый файл MySQL, а рядом указываем имя пользователя СУБД и пароль. Так как у нас локальный сервер, то мы вводим после идентификатора u имя пользователя root без пароля.

На самом деле это неправильно, и для каждого пользователя сервера MySQL должен быть установлен пароль. Более подробно все вопросы безопасности СУБД мы рассмотрим в одной из наших следующей публикации.

Вот весь кусок «кода»: Z:\usr\local\mysql-5.5\bin\mysql.exe -u root

Если все прошло успешно, то ниже в окне командной строки должна появиться информация о версии запущенного сервиса, год выпуска и другая «ненужная» для нас информация.

Теперь, чтобы проверить правильность подключения, введем после оператора mysql> запрос, который отобразит все базы данных хранящиеся на сервере. Код запроса:

show databases ;

Не забывайте в конце запроса ставить точку с запятой, иначе система выдаст сообщение об ошибке. После ввода запроса и нажатия на клавишу «Enter» мы получили список всех баз, хранящихся на сервере СУБД:

Но этого нам мало. Давайте «копнем» еще глубже в структуру. Рассмотрим, как зайти в базу данных MySQL и получить список всех ее таблиц. Напомню, что сейчас мы уже авторизированы на сервере, поэтому нам потребуется лишь ввести еще один запрос:

show tables from db1;

show tables from db1 ;

db1 – это имя нужной нам базы.

На скриншоте мы видим, что запрашиваемая база данных содержит всего одну таблицу.

Копаем глубже!

Как говорится, «аппетит» приходит после получения результатов выполнения кода. Поэтому постараемся копнуть еще глубже, чтобы получить данные, которые хранятся в таблице. Перед тем, как войти в MySQL еще раз, приведем пример SQL-запроса, с помощью которого мы сможем осуществить задуманное:

SELECT * FROM animal;

SELECT * FROM animal ;

Вводим запрос, запускаем на выполнение и…. Почему-то сервер выдал нам ошибку.

И все потому, что мы забыли указать MySQL, какая из баз нас интересует. Вот сервер и «ругается», что ни одна из БД не выделена. Это еще раз доказывает, что работа с СУБД через командную строку сильно отличается от взаимодействия с ней через программную оболочку.

В phpMySQL данный запрос был бы успешно выполнен и сервер возвратил выборку из всех строк, содержащихся в запрашиваемой таблице.

Исправим наше общее упущение (свою вину всегда трудно признавать ), и перед тем, как войти в MySQL через консоль снова, подготовим «специфический» запрос, с помощь которого мы укажем системе нужную БД:

USE db1 ;

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

И теперь введем и запустим запрос на выборку всех данных из таблицы animal еще раз. «Да будут данные!» — сказал администратор, и запустил на выполнение SELECT. Докопались до базы db1, и получили содержимое таблицы animal. Не зря перед тем, как войти в базу данных MySQL, мы провели целый «ритуал», и написали правильное «заклинание» на языке SQL.

Что можно еще накопать?

Вглубь мы «докопались» до самого дна MySQL. Теперь давайте «копнем» немного в сторону. Какие еще сведения можно получить через командную строку, опрашивая MySQL? Хотите узнать структуру таблицы, типы данных всех столбцов, первичный ключ? Пожалуйста! Запустите на выполнение этот запрос:

describe animal;

describe animal ;

Иногда, чтобы знать, как включить сервер MySQL, требуется получить список всех зарегистрированных пользователей СУБД. Для этого используется следующий запрос.

Доброго времени суток, коллеги 🙂

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

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

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

Поскольку я буду демонстрировать работу с командной строкой 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, for 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 с нужной учёткой. Но для второго способа нам без первого всё равно не обойтись 🙂 Поэтому для начала подключаемся к серверу 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 or 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 имя_базы_данных;

При вызове команды в консоли сервера появится следующее сообщение:

Dropping the database is potentially a very bad thing to do.
Any data stored in the 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 и MariaDB я, честно говоря, не сильно в курсе. Поэтому если вы что-то об этом знаете — было бы интересно прочитать об этом в комментариях.

Выход из консоли 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-разработки.

Можно не только через PHP. В комплекте с MySQL поставляется консольный клиент для подключения в серверу MySQL. Консольный — это означает, что у программы нет оконного интерфейса, а есть только интерфейс командной строки, в котором обращение к базам данных выполняется с помощью SQL запросов.

Команды для подключения к MySQL в командной строке, а уж тем более сами SQL запросы идентичны и для . В дальнейшем для краткости я буду писать «MySQL», но везде я имею в виду «MySQL или MariaDB», поскольку в данном случае разницы между ними нет.

Подключившись через командную строку к СУБД MySQL можно выполнять самые разные задачи: просматривать базы данных и их таблицы, отправлять запросы к базам данных и получать результаты выполнения этих запросов.

Для подключения к серверу MySQL используется команда клиентская программа, которая называется mysql.exe. Её нужно запустить, но сделать нужно не двойным кликом, как обычную программу, а из командной строки.

Начнём с того, что нажмём сочtтание клавиш Win+r и выполним

Откроется командная строка.

Теперь нам нужно перейти в папку с файлом mysql.exe . Эта папка bin в директории, где установлена ваша СУБД MySQL. К примеру, у меня MariaDB, которая установлена в папке C:\Server\bin\mariadb\ . Следовательно, интересующий нас файл находится в каталоге C:\Server\bin\mariadb\bin\ . Для перехода в этот каталог используется команда cd следующим образом:

Cd C:\Server\bin\mariadb\bin\

В этой команде замените C:\Server\bin\mariadb\bin\ на правильный для вашей системы путь

Теперь запустим файл mysql.exe. Необязательно указывать расширение файла.exe — система сама догадается, что мы имеем ввиду. Также нам нужно использовать опцию -u и -p . После первой опции нужно указать имя пользователя — root . После второй опции — пароль для пользователя. В моём случае пароль не установлен, поэтому я запускаю без опции -p :

Mysql -u root

Может показаться, что мало что изменилось, но новое приглашение командной строки

MariaDB [(none)]>

говорит о том, что мы подключены к серверу MySQL. Точнее, в моём случае мы подключены к серверу MariaDB.

Чтобы посмотреть список баз данных, введём команду:

SHOW DATABASES;

Чтобы последующие запросы отправлялись к определённой базе данных (например, к test), используется команда USE :

USE test;

Чтобы посмотреть таблицы в выбранной базе данных запустите команду:

SHOW TABLES;

Создадим какую-нибудь таблицу:

CREATE TABLE AuthorsTBL (AuthorID INT NOT NULL AUTO_INCREMENT, AuthorName VARCHAR(100), PRIMARY KEY(AuthorID));

И вновь посмотрим содержимое базы данных test.

От автора: девушка, у вас машина не заводится? Может «с толкача» попробуем? Я помогу! Не знаете, как это? «С толкача» заводили только сервер СУБД через cmd? Значит, как запустить MySQL через командную строку вы знаете, а автомобиль – даже не догадываетесь. Мадмуазель, вы «странная» блондинка!.

Странности в описании MySQL

При подготовке каждой статьи мне приходится «основательно» шерстить интернет в поисках справочных материалов по той или иной «сайтостроительной» дисциплине. По большей части «наук» в Сети опубликовано множество подробных руководств и учебников, но только не по MySQL.

Конечно, есть достойные образовательные , но в основной части по СУБД приводятся лишь примеры написания команд, и даже без указания синтаксиса. В такой ситуации любому «чайнику» понять, например, как подключиться к MySQL через командную строку, почти нереально.

Чтобы найти ответ новичку, придется перешерстить с десяток тематических форумов, где профессиональные разработчики (корча из себя чуть ли не «академиков») снизойдут до того, чтобы хоть что-то нормально пояснить начинающему.

Стоит понимать, что настоящему админу следует знать все способы запуска и работы с сервером БД. Понятно, что программные оболочки – самый удобный метод, но ведь они не всегда могут оказаться «под рукой». Поэтому знание того, как включить MySQL через командную строку, не раз спасет и данные сайта, и вашу репутацию специалиста (если собираетесь заниматься веб-разработкой профессионально).

Рассмотрим эту тему более подробно. И не корчите, пожалуйста, мины, если что-то из сказанного в данном материале покажется вам таким же простым, как заводить автомобиль «с толкача» .

Запускаем cmd

Для запуска MySQL из командной строки сначала активируем саму утилиту (cmd), которая входит в стандартный набор Windows. Сделать это можно несколькими способами:

Клавиатурным сочетанием Win+R, а затем в появившемся диалоге «Выполнить» ввести cmd

Через панель «Пуск».

Кроме этого MySQL может поставляться с «родной» оболочкой. Например, если вы устанавливаете сервер БД на локальную машину как самостоятельное «приложение», которое не входит в набор для «джентльменов».

Родная MySQL командная строка запускается также как и обычная cmd. Отличие в работе обеих утилит проявится позже. Об этом мы поговорим в следующем разделе.

Работа с командной строкой

Сначала разберемся со встроенной в операционную систему утилитой. Рассмотрим, как запустить MySQL из командной строки Windows. Для этого нужно:

Путь к папке в файловой системе ПК, куда вы установили сервер БД.

Учетная запись пользователя – логин и пароль.

Если вы работаете с Денвером, то исполняемый файл находится на виртуальном диске, который создается после запуска локального сервера, по этому пути: Z:\usr\local\mysql-5.5\bin

Как я уже сказал, командная строка MySQL в Denwer запускается через cmd OC. То есть, сначала запускаем ее, а затем прописываем путь к исполняемому файлу СУБД. Пароль и логин для доступа можно указывать сначала или потом после активации утилиты MySQL. Как по мне, то удобнее прописывать все сразу: Z:\usr\local\mysql-5.5\bin\mysql.exe -u root

Мы зашли на сервер СУБД под правами администратора. У меня пароль для root не установлен, поэтому его значение не указано. После того, как мы запустили MySQL из командной строки, внизу появится справочная информация о версии утилиты, сервера и id подключения.

Теперь давайте проверим правильность проведенной процедуры и «силу» своих прав. Например, выведем список всех таблиц, которые сейчас используются на сервере:

SHOW OPEN TABLES;

SHOW OPEN TABLES ;

MySQL в командной строке Windows выдал нам лишь таблицы, входящие в состав системной базы. Это потому, что все данные, хранящиеся в ней, используются в работе запущенного экземпляра СУБД. Таким образом мы узнали, что сервер работает и что мы зашли на него с правами администратора, как и планировали.

Схема работы с оболочкой, устанавливаемой вместе с системой управления БД, немного отличается. Чтобы «прочувствовать» все это на себе, давайте активируем MySQL через эту командную строку.

После ее запуска появляется окно, в котором нужно сразу вводить пароль. В остальном весь процесс взаимодействия с утилитой одинаков.

Работа с другими приложениями

Состав стандартного набора средств СУБД не ограничивается одним «экзешником» сервера. Их ассортимент можно просмотреть, заглянув в ту же папку, где «стоит» сервер БД. Для примера запустим утилиту dump MySQL через командную строку.

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

На следующем шаге перед тем, как зайти в MySQL через командную строку, нам потребуется указать учетную запись и пароль к ней. Пример использования команды mysqldump:

mysqldump -uroot world>C:\Users\домашний\Desktop\dump\copy.sql

Чтобы команда сработала корректно, указанная директория на момент выполнения должна быть создана. Иначе утилита вернет сообщение, что такого пути не существует.

Также стоит отметить, что указанный пользователь 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 — путь к папке данных (где хранятся все БД). Иногда имеет смысл разместить данные на отдельном диске, чтобы повысить производительность или обеспечить надежность.

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

# The 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 myisam_sort_buffer_size = 8M

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

  • Сергей Савенков

    какой то “куцый” обзор… как будто спешили куда то