Очистить базу данных mysql через консоль

Обновлено: 04.07.2024

Ниже предоставлен список наиболее полезных и часто используемых команд MySQL с примерами.

Это перевод статьи отсюда>>>, с некоторыми незначительными изменениями и дополнениями.

mysql> в начале строки означает, что команда выполняется из MySQL-клиента.

Общие команды

Что бы проверить статус сервера MYSQL выполните:

Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на том же хосте:

Работа с базами и таблицами

Работа с базами

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

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

Переключиться для работы с определенной базой данных:

Работа с таблицами

Отобразить все таблицы в базе данных:

Просмотреть формат таблицы в базе:

Показать все содержимое таблицы:

Отобразить количество строк в таблице:

Подсчитать количество колонок в таблице:

Удаление строки в таблице:

mysql> DELETE from [table name] where [field name] = 'whatever';

Удаление столбца из таблицы:

mysql> alter table [table name] DROP INDEX [column name];

Удалить таблицу из базы:

Работа с колонками

Добавить колонку в таблицу:

mysql> ALTER TABLE [table name] ADD COLUMN [new column name] varchar (20);

Изменение имени колонки:

mysql> ALTER TABLE [table name] CHANGE [old column name] [new column name] varchar (50);

Создать колонку с уникальным именем, что бы избежать дубликатов в названиях:

mysql> ALTER TABLE [table name] ADD UNIQUE ([column name]);

Изменение размера колонки:

mysql> ALTER TABLE [table name] MODIFY [column name] VARCHAR(3);
Выборка данных

Показать все содержимое таблицы:

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

mysql> SELECT * FROM [table name] WHERE [field name] = "whatever"; mysql> SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444'; mysql> SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number; mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444'; mysql> SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;

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

Отобразить выбранные записи, отсортированные по возрастанию ( asc ) или убыванию ( desc ):

mysql> SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;
Регулярные выражения

Импорт и экспорт данных в/из файла

Загрузка файла CSV в таблицу:

mysql> LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name] FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' (field1,field2,field3);

Пользователи, пароли сервера MySQL:добавление, изменение пользователей и паролей

mysql> INSERT INTO user (Host,User,Password) VALUES('%','username', PASSWORD('password')); mysql> SET PASSWORD FOR 'user'@'hostname' = PASSWORD('passwordhere');

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

Подробнее о восстановлении пароля root для MySQL написано тут>>>.

Работал сегодня с сервером mysql. Надо было проверять дампы баз и искать в них данные. Постоянно загружал и удалял таблицы, базы и т.д. В общем, работал много с mysql, а чтобы все было максимально быстро, то через консоль. Оказалось, что простого и быстрого способа удалить разом все таблицы в базе mysql нет. Рассказываю, как поступал я для очистки таблиц без удаления самой базы данных.

Хочешь научиться автоматически разворачивать и поддерживать высоконагруженные проекты? Тогда рекомендую познакомиться с онлайн курсом " Infrastructure as a code." в OTUS. Актуально для системных администраторов и devops инженеров. Подробности по .

В общем случае удалить таблицы из базы данных можно командой в консоли mysql:

Если у вас таблиц десятки и сотни, очевидно, что вручную их указывать неудобно. Дальше каждый изобретает свой велосипед в виде различных скриптов на php или bash. Мне не захотелось этим заниматься, уверен был, что можно найти способ проще и я его нашел.

Можно воспользоваться mysqldump и некоторыми ключами.

Эта команда сделает дамп только структуры базы данных, при этом для каждой таблицы перед ее созданием будет команда на удаление. Вот эти команды на удаление мы и заберем из дампа.

Удалить все таблицы из mysql базы

Мы получили набор команд на удаление всех таблиц. Теперь направим эти команды в mysql консоль на исполнение.

У меня настроена авторизация в mysql из консоли без пароля. В общем случае, с паролем команда будет выглядеть вот так:

Таким простым способом, без скриптов, можно прямо в консоли сервера удалить все таблицы из базы данных mysql, не удаляя саму базу. Может возникнуть вопрос, а почему не удалить все же базу и не создать заново. Причин может быть несколько:

  1. У вас нет прав на создание и удаление баз данных (наиболее частый случай).
  2. Не помните точно параметры базы данных, не хочется вспоминать, искать, как создать новую базу данных с теми же параметрами, что стоят у текущей (мой случай).

Если у вас есть какое-то свое простое решение по удалению таблиц из базы, делитесь в комментариях.

Если на экране появляется приветствие mysql, то всё прошло ok.

Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой ";". При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить ";" и нажать "enter".

Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:

Результатом будет что то вроде этого:

Выбрать базу данных jeka:

Посмотреть названия всех таблиц в конкретной базе данных (после выполнения use):

Просмотреть структуру таблицы (имена и тип полей):

Достать информацию о юзере с >

Бэкап структуры таблицы, а точнее sql-запрос на её создание

Если в конце запроса поставить не ; а \G, то результат будет показан другим образом - иногда весьма удобно, если таблица имеет много полей:

mysql использования /G вместо; дебаг запроса.

Посмотреть, какие запросы выполняются в данный момент на сервере MySQL:

Учтите, что будут отображены еще не выполненные (активные) запросы, поэтому show processlist; актуальная команды только для нагруженных БД, в других случаях маловероятно, что команда что то покажет.

Подробнее о том, как изменять структуру mysql-таблиц (alter table).

Что делать если вижу знаки вопросов вместо текста в MySQL?

Это проблема с кодировкой. Вероятно в my.ini файле mysql-сервера не добавлено:

Нужно добавить в .ini файл либо выполнить в консоли команду "SET NAMES utf8", после чего во время текущей сессии отображаться русский текст в mysql-консоли будет без проблем:

Как сделать бэкап базы mysql через консоль Linux?

Сделать бэкап базы database в файл dump_name.sql

[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_name.sql] – имя файла, дампа на выходе.

Развернуть базу из файла через командную строку

[username] – имя пользователя который имеет доступ к базе данных.
[password] – пароль пользователя.
[database] – имя базы данных.
[dump_to_restore.sql] – имя файла, из которого поднимаем базу

Сделать дамп структуры одной таблицы mysql (без данных):

Например, задампим таблицу users из базы данных mydatabase:

Развернуть mysql-dump в БД с именем database_name:

Ещё одна интересная штука. Выполнять из консоли, не требуется предварительно подключаться к mysql (mysql>). Вывести список таблиц базы данных, не подключаясь непосредственно к mysql:

Заключение

Может показаться, что писать запросы в командной строке не удобно. Но это заблуждение. На слабых машинах phpmyadmin работает не так шустро как хотелось бы. Тем более не на всех серверах стоят морды с phpmyadmin, adminer и т.д. Linux + mysql в терминале реально повысили мою производительность.

Поисковые запросы , по которым приходили пользователи


Дата добавления: 9 лет назад mysql
  • Как сделать копию структуры таблицы в mysql? Решено!
  • Как обновить AI в mysql? Решено!
  • Узнать, насколько slave отстает от master в mysql Решено!
  • Получить комментарии к полям mysql-таблицы 1 ответ
  • ERROR 9006: ProxySQL Error: connection is locked to hostgroup 10 but trying to reach hostgroup 11 Решено!
  • MySQL - изменение полей, структуры таблицы 0 комментариев
  • Запросы инъекции для mysql 0 комментариев
  • Доступ к mysql из-вне3 комментария
  • Mysql перенос таблиц из одной базы данных в другую 0 комментариев
  • Анализ производительности MySQL с использованием performance_schema 0 комментариев

Комментарии 2

Viktor, спасибо. Судя по скринам, штука интересная.
Правда, уж больно много зависимостей она имеет.. Как решу проблему с зависимостями, отпишусь.

Небольшая памятка по работе с сервером MySQL из командной строки.

Подключение к MySQL через консоль

Получить информацию об установленной версии MySQL

Для подключения к mysql в консоли наберите команду

Приглашение командной строки изменится, это значит, сервер MySQL ждёт от вас команд.

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

Для отключения от MySQL нужно написать exit или (в unix-системах) нажать комбинацию клавиш ctrl+с.

Для вывода всех баз данных на сервере используйте команду show databases.

Выберите нужную базу данных командой use.

Теперь можно вводить запросы.

Чтобы подключиться к MySQL и сразу выбрать нужную базу

Полезные команды MySQL

Показать все таблицы выбранной базы данных в текущей БД.

Показать все таблицы базы данных db_name.

Показать список столбцов в таблице table_name в текущей БД

Показать список столбцов в таблице table_name из БД db_name

Вывести структуру нужной таблицы

Вывести значения системных переменных.

Показать список выполняющихся в настоящий момент запросов.

Общая статистика MySQL.

Статистика по всем таблицам в базе db_name.

Что бы выполнять запросы к MySQL из консоли, не всегда требуется предварительно подключаться к mysql. Параметр -e позволяет исполнить команду, вывести результат на экран, после чего отключиться от сервера MySQL. Например, можно вывести список таблиц базы данных.

Управление базами данных

Создание базы данных из консоли сервера

Удаление базы данных из консоли сервера

Создание базы данных db_name из консоли MySQL

Удаление базы данных db_name из консоли MySQL

Замена в поле одной подстроки на другую

Работа с пользователями

Вывести список пользователей

Показать список прав пользователя user

Создать нового пользователя

Чтобы создаваемый пользователь смог подключаться к серверу MySQL с любого IP адреса или хоста (за исключением localhost), можно использовать символ процента, вот так

Чтобы разрешрешить пользователю подключаться вообще со всех хостов, придётся создать для него две учётные записи.

Добавить указанные привилегии для таблиц БД db_name пользователю user@localhost

Чтобы изменить права пользователю, иногда удобно сначала сбросить все права

А затем установить нужные с помощью GRANT, как было показано выше.

Добавить все привилегии для таблиц БД db_name пользователю user@localhost

Удаление привилегий пользователя user@localhost для БД db_name:

Сделать из пользователя суперпользователя и дать полный доступ ко всем БД на сервере

Удалить пользователя user@localhost

Изменить пароль пользователя в консоли MySQL

Установить пароль для пользователя user в консоли сервера.

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

Если же в БД много поврежденных таблиц можно воспользоваться командой mysqlcheck.

Проверить db_name на ошибки.

Восстановление и оптимизация всех БД

Бэкап MySQL из командной строки

Экспорт базы MySQL

Дамп нескольких баз

Дамп всех баз на сервере

Дамп только структуры базы, без данных

Дамп структуры одной таблицы mysql, без данных:

Развернуть базу данных MySQL из дампа

Клонирование таблиц

Скопировать структуру и ключи таблицы, без копирования данных.

Клонировать таблицы базы данных со всеми данными.

На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.

Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.

Читайте также: