- Работаем с MySQL через командную строку
- Что делать если вижу знаки вопросов вместо текста в MySQL?
- Как сделать бэкап базы mysql через консоль Linux?
- Заключение
- Комментарии 2
- Команды MySQL в Linux
- Работа с базами, таблицами — просмотр, удаление, редактирование записей. Консоль
- Пользователи, пароли сервера MySQL — добавление, изменение пользователей и паролей. Консоль
- Резервные копии — создание, восстановление бд . Консоль
- ALTER очень больших таблиц в MySQL
- В лоб
- Включаем мозг
- И все таки — нужно добавить поле
- Мой способ заключается в следующем
- Команда ALTER TABLE в MySQL: как добавить, удалить и изменить столбцы
- Использование и примеры ALTER TABLE
- Переименовать таблицу
- Добавление столбца и изменение свойств столбца
- Изменить тип столбца
- Изменение значения столбца по умолчанию
- Почему вы должны использовать ALTER TABLE?
- Изменить столбец в MySQL
- Добавить столбец
- Отбросить/удалить столбец
- Переименовать столбец
- Изменить столбец
Работаем с MySQL через командную строку
День добрый, друзья! 🙂 Для подключения к mysql наберите
- h — хост базы данных, если коннектимся к локальной базе (по ip 127.0.0.1), этот параметр можно опустить
- u — имя пользователя
- p — пароль, его нужно будет ввести после нажатия enter
Например, если нужно законнектиться к локальной быдухе под root`ом и пароль у него не установлен (пустой пароль — это плохо), достаточно написать
Если на экране появляется приветствие mysql, то всё прошло ok.
Для выхода из командной строки mysql можно написать exit, в linux достаточно нажать ctrl+C. Теперь можно писать любые mysql-запросы. Чтобы запрос выполнился, в конце обязательно нужно поставит точку с запятой «;». При написании длинных запросов удобно делать enter`ом переход на следующую строку. А после полного написание запроса поставить «;» и нажать «enter».
Для работы с конкретной базой данных нужно её выбрать с помощью оператора use. Показать все базы данных:
Результатом будет что то вроде этого:
Выбрать базу данных jeka:
Посмотреть названия всех таблиц в конкретной базе данных (после выполнения use):
Просмотреть структуру таблицы (имена и тип полей):
Достать информацию о юзере с >
Бэкап структуры таблицы, а точнее sql-запрос на её создание
Если в конце запроса поставить не ; а \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 в терминале реально повысили мою производительность.
- Как в mysql лучше всего хранить ip адрес? 1 ответ
- Установить mysql 5.6 на travis Решено!
- Получить комментарии к полям mysql-таблицы 1 ответ
- Got a packet bigger than ‘max_allowed_packet’ bytes — ошибка mysql Решено!
- 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, спасибо. Судя по скринам, штука интересная.
Правда, уж больно много зависимостей она имеет.. Как решу проблему с зависимостями, отпишусь.
eugene-PC:www eugene$ eugene$ sudo rpm -ivh
Источник
Команды MySQL в Linux
Ниже предоставлен список наиболее полезных и часто используемых команд MySQL с примерами.
mysql в начале строки означает, что команда выполняется после входа вMySQL.
Символ # или $ в начале строки означает, что команда выполняется из командной строки.
Что бы проверить статус сервера MYSQL выполните:
для FreeBSD:
в CentOS / RHEL:
Что бы подключиться к серверу MySQL из консоли, если сервер MySQL находится на том же хосте:
Работа с базами, таблицами — просмотр, удаление, редактирование записей. Консоль
Создать базу данных на MySQL сервере:
Показать список всех баз данных на сервере MySQL:
Отобразить все таблицы в базе данных:
Просмотреть формат таблицы в базе:
Удалить таблицу из базы:
Показать все содержимое таблицы:
Отобразить столбцы и содержимое столбцов в выбранной таблице:
Отобразить строки в определенной таблице, содержащие » whatever «:
Отобразить все записи в определенной таблице, содержащие » Bob » и телефонный номер » 3444444 :
Отобразить все записи, НЕ содержащие имя » Bob » и телефонный номер » 3444444 «, отсортированные по полю phone_number :
Показать все записи, начинающиеся с букв » bob » и телефонного номера » 3444444 » в определенной таблице:
Показать все записи, начинающиеся с букв ‘ bob » и телефонного номера » 3444444 «, ограничиваясь записями с 1-ой до 5-ой:
Использование регулярных выражений ( «REGEXP BINARY» ) для поиска записей. Например, для регистро-независимого поиска — найти все записи, начинающиеся с буквы А :
Показать все уникальные записи:
Показать количество строк в таблице:
Подсчитать количество столбцов в таблице:
Добавление колонки в базу данных:
Изменение имени столбца:
Создать столбец с уникальным именем, что бы избежать дубликатов в названиях:
Изменение размера столбца:
Удаление столбца из таблицы:
Загрузка файла CSV в таблицу:
Пользователи, пароли сервера MySQL — добавление, изменение пользователей и паролей. Консоль
Создание нового пользователя — подключение к серверу MySQL под root, переключение к базе данных, добавление пользователя, обновление привилегий:
Изменений пользовательского пароля из консоли на удаленном хосте db1.example.org :
Изменение пользовательского пароля из консоли MySQL — подключение под root, обновление пароля, обновление привилегий:
Восстановление/изменение пароля root сервера MySQL — остановка MySQL, запуск без таблиц привилегий, подключение под root, установка нового пароля, выход и перезапуск MySQL.
Set a root password if there is on root password.
Обновление пароля root:
Установка права на подключение к серверу с хоста localhost с паролем » passwd » — подключение подroot, переключение к базе данных, установка привилегий, обновление привилегий:
Установка привилегий пользователю на использование базы данных — подключение под root, переключение к базе данных, установка привилегий, обновление привилегий:
Обновление информации в базе данных:
Удаление строки в таблице:
Обновление привилегий в базе данных:
Резервные копии — создание, восстановление бд . Консоль
Создать резервную копию (dump) всех баз данных в файл alldatabases.sql :
Создать резервную копию одной базы данных в файл databasename.sql :
Создать резервную копию одной таблицы в файл databasename.tablename.sql :
Восстановление базы данных (или таблицы) из резервной копии:
Источник
ALTER очень больших таблиц в MySQL
Если в Вашем проекте есть таблицы размер которых исчисляется гигабайтами, а для того чтобы поменять структуру такой таблицы вам на несколько часов приходится останавливать все сервисы — эта статья будет для Вас.
Дано: таблица размером в несколько десятков гигабайт данных. Задача — изменить структуру таблицы.
Сразу забегу в перед, работать метод будет только на транзакционных таблицах. Если у вас MyISAM-таблица на десятки гигабайт, то тут как в том анекдоте — «разбирайтесь сами со своими проблемами». Пример будет приведен для InnoDB таблицы.
Предположим что структура нашей таблицы такая:
Мы хотим добавить в эту таблицу поле last_login.
Какие у нас есть варианты.
В лоб
Вариант прекрасно работет на мелких проектах где размер таблиц редко превышает 50 000 записей. Нам вариант не подходит т.к. ALTER будет выполнятся слишком долго и все это время таблица будет заблокирована как на запись так и на чтение. Соответственно сервис нужно будет останавливать на это время.
Включаем мозг
Можно вообще не трогать таблицу раз уж на то пошло, а сделать отдельную `users_lastvisits`:
Теперь можно во всех запросах где нужен last_login делать JOIN с таблицей last_login. Работать будет, конечно, медленнее, да и в запросах дописывать JOIN тоже лишнее время, но в целом этого иногда бывает достаточно и на этом пункте можно и остановится.
И все таки — нужно добавить поле
Можно поднять master-slave репликацию, сделать ALTER на slave-сервере а потом поменять их местами. Если честно я таким никогда не занимался, может это и проще следующего способа, но не всегда есть возможность поднять репликацию.
Мой способ заключается в следующем
Создаем новую таблицу с конечной структурой, делаем на первой таблицы триггеры, которые будут логировать все изменения, одновременно с этим начинаем переливать данные из первой таблицы во вторую, а по окончании «вливаем» изменившиеся данные и переименовываем таблицы.
Итак, подготавливаем 2 таблицы — первая с нужной структурой, вторая для логирования изменений.
Теперь начинаем переливку. Для этого надо открыть 2 соединения с базой. В одном будет идти собственно переливка, в другом нужно будет ненадолго заблокировать таблицу на запись.
Все, теперь пока таблица переливается у нас есть время подумать как будем вливать изменившиеся с момента начала переливки данные. Тут вообщем то ничего сложного — скрипт приводить я не буду, нужно просто брать по одной записи из таблицы users_updated_rows в том порядке, в котором они добавлялись (сортировать по первичному ключу) и обновлять или удалять её в таблице _users;
Итак, переливка таблицы уже закончилась, нужно вливать остальные данные. Запускаем скрипт. Скрипт должен работать постоянно и обновлять все записи которые добавляются в лог, когда он перельет все данные нужно переименовать таблицы:
Стоит заметит что в этот момент возможна небольшая потеря данных т.к. запросы выполняются не атомарно. Если это критично, лучше выключить сервис на некоторое время чтобы запросов на изменение не было. Можно например забрать права на запись у пользователя а выполнять команды под другим пользователем.
Если все сделать правильно данные не будут потеряны и перерывов в работе сервиса практически не будет. Что нам и требовалось. Таким же способом можно перелить данные на другой сервер, поменяется только способ переливки. Вместо
нужно перелить через mysqldump:
Таким способом мне удалось перелить без остановки работы сервисов на другой сервер таблицу размером в 60Gb и 400 млн строк где то за 12 часов.
Кстати, велосипед уже изобретен Facebook и называется Online Schema Change for MySQL.
Источник
Команда ALTER TABLE в MySQL: как добавить, удалить и изменить столбцы
Главное меню » Базы данных » База данных MySQL » Команда ALTER TABLE в MySQL: как добавить, удалить и изменить столбцы
Использование и примеры ALTER TABLE
Во-первых, давайте создадим базу данных и таблицу, которые мы будем называть соответственно «mytest» и «andreyex». Вот как вы это сделаете:
Переименовать таблицу
Синтаксис для переименования таблицы:
Итак, чтобы изменить таблицу andreyex на «myusers», выполните следующие действия:
Добавление столбца и изменение свойств столбца
Синтаксис добавления столбца в таблицу:
Чтобы удалить столбец:
Здесь мы добавим строковый столбец «address», набрав:
Добавьте столбец TIMESTAMP с именем «date», введя следующую команду:
Добавьте индекс в столбец с именем «id», выполнив:
Также возможно сделать несколько дополнений одновременно:
Теперь наша таблица должна выглядеть так:
Изменить тип столбца
Синтаксис модификации столбцов:
Чтобы изменить поле адреса, чтобы разрешить более крупные строки:
Мы также можем объединить сразу несколько модификаций:
С помощью этой команды мы также изменили столбец с именем «name» на «lastname» и указали ему значения NULL.
Изменение значения столбца по умолчанию
Чтобы изменить значение по умолчанию для столбца, используйте синтаксис SET DEFAULT:
Теперь наша финальная таблица выглядит так:
Почему вы должны использовать ALTER TABLE?
Внесение изменений в структуру базы данных MySQL через командную строку и ALTER TABLE иногда может быть более быстрым и гибким, чем использование PHPMyAdmin или аналогичных инструментов графического интерфейса.
Команда предлагает еще больше возможностей, которые здесь мы не рассматривали. Для получения дополнительной информации ознакомьтесь с документацией по MySQL или задайте вопрос в разделе комментариев.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник
Изменить столбец в MySQL
Команда ALTER изменяет или изменяет структуру таблицы. Например,
- Добавление столбца
- Удаление столбца
- Переименование столбца
- Модификация колонки
В этой статье мы попробуем примеры команд ALTER для добавления, удаления, переименования и изменения столбцов таблицы в MySQL.
Добавить столбец
Мы можем добавить столбец в уже существующую таблицу, используя следующий синтаксис команды ALTER.
В этом синтаксисе не забудьте заменить имя_таблицы и имя_столбца на имя, которое вы хотите дать.
Мы также можем указать положение вновь созданного столбца, используя предложения FIRST и AFTER и ссылаясь на уже существующий столбец в таблице. Например
Если мы хотим добавить столбец перед существующим столбцом, мы можем использовать предложение FIRST. Точно так же, если мы хотим добавить столбец после существующего столбца, мы можем использовать предложение AFTER.
Мы также можем добавить несколько столбцов, используя тот же синтаксис столбцов ALTER TABLE и ADD. Например
Отбросить/удалить столбец
Удалить столбец в MySQL очень просто. Мы можем удалить существующий столбец в таблице, используя команду ALTER TABLE и DROP. Синтаксис для удаления столбца:
Вот как просто удалить столбец таблицы в MySQL.
Переименовать столбец
Мы можем переименовать столбец, используя предложение CHANGE вместе с командой ALTER TABLE. В котором мы сначала предоставляем существующее имя столбца, а затем новое имя вместе с типом данных, за которым следует предложение CHANGE. Чтобы изменить имя столбца, выполните следующую команду
Если мы можем изменить имя столбца, мы можем изменить имя таблицы и использовать предложение RENAME с командой ALTER TABLE. Синтаксис для переименования таблицы:
Изменить столбец
Предположим, мы хотим изменить определение столбца или тип данных столбца в MySQL. Предложение MODIFY нам пригодится, чтобы помочь в этом случае. Мы можем использовать предложение MODIFY для изменения типа данных столбца. Как это
Источник