Mysql примеры для командной строки. Работа с MySQL из командной строки

Ниже предоставлен список наиболее полезных и часто используемых команд 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 a 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(35), phone VARCHAR(25), groups VARCHAR(15), datestamp DATE, timestamp TIME, pgpemail VARCHAR(255));

Создать таблицу, пример 2:

Mysql create table (personid INT(50) NOT NULL AUTO_INTCREMENT PRIMARY KEY, firstname VARCHAR(35), middlename VARCHAR(50), lastname VARCHAR(50) default "bato");

Можно не только через 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.


Сервер mysqld может запускаться и работать от любого пользователя. Чтобы настроить mysqld для работы под Unix-пользователем user_name , необходимо выполнить следующие действия:

    Если сервер работает, остановите его (используйте mysqladmin shutdown).

    Измените каталоги и файлы баз данных так, чтобы user_name имел привилегии для чтения и записи файлов в этих каталогах (возможно, это нужно будет делать из Unix-аккаунта root):

    Shell> chown -R user_name /path/to/mysql/datadir

    Если среди каталогов или файлов в каталоге данных MySQL присутствуют символические ссылки, то нужно будет также перейти по этим ссылкам и изменить каталоги и файлы, на которые они указывают. chown -R может не отработать символических ссылок.

    Запустите сервер из аккаунта user_name или, если у вас MySQL 3.22 и выше, запустите mysqld из Unix-аккаунта root и используйте опцию --user=user_name . mysqld переключится на выполнение в контексте Unix-пользователя user_name до того, как начнет обслуживать запросы на соединение.

    Чтобы запускать сервер от имени данного пользователя автоматически в ходе загрузки системы, добавьте строку user, указывающую имя пользователя, в группе файла опций /etc/my.cnf или файла опций my.cnf из каталога данных сервера. Например:

    User=user_name

К этому моменту процесс mysqld должен без помех работать под Unix-пользователем user_name . Однако содержимое таблиц привилегий не изменяется. По умолчанию (сразу после выполнения скрипта инсталляции таблиц привилегий mysql_install_db) MySQL-пользователь root является единственным пользователем с правами на доступ к базе данных mysql , а также на создание и удаление баз данных. Если вы не меняли этих полномочий, они по-прежнему действительны. То, что вы вошли в систему как Unix-пользователь, отличный от root , не может вам помешать получить доступ к MySQL в качестве MySQL-пользователя root; просто задайте клиентской программе опцию -u root .

Отметим, что работа с MySQL в качестве MySQL-пользователя root посредством указания -u root в командной строке не имеет ничего общего с выполнением MySQL под Unix-пользователем root , или вообще под каким бы то ни было Unix-пользователем. Привилегии доступа и имена пользователей MySQL никак не связаны с именами Unix-пользователей. Единственная связь с именами Unix-пользователей заключается в том, что если при запуске клиентской программы не задана опция -u , то клиент попытается соединиться, используя в качестве имени MySQL-пользователя имя Unix-аккаунта.

Если Unix-сервер не слишком хорошо защищен или не нуждается в повышенных мерах безопасности, следует как минимум установить в таблицах привилегий пароль для MySQL- пользователя root. В противном случае любой пользователь с аккаунтом на данной машине сможет запустить mysql -u root db_name и делать в MySQL все, что ему заблагорассудится.


Сервер баз данных MySQL очень часто используется для создания динамичных веб-решений. Одна из причин (а может, и следствие) — почти все хостеры в тарифных планах на UNIX-платформе предлагают одну или несколько баз MySQL. Если вы используете виртуальный хостинг, вам почти нет необходимости изучать администрирование сервера, достаточно только реализовать свои программы, следуя интерфейсу, который поддерживает выбранный вами язык программирования (РНР имеет встроенный интерфейс для связи с БД, в версии 5.0 поддержка MySQL вынесена в отдельную библиотеку по лицензионным соображениям). Все остальные административные заботы — запуск, остановка, перезагрузка, управление правами и пользователями, резервирование и конфигурирование сервера — выполняют администраторы хостер-провайдера. Но в случае установки собственного сервера или VDS (Virtual Dedicated Server — виртуальный выделенный сервер) уже вам самим придется заботиться обо всех нюансах его работы.

Конфигурирование сервера MySQL может производиться двумя путями — путем задания опций в командной строке при запуске сервера и через конфигурационный файл my.ini. Также следует различать опциональные параметры, которые могут задаваться для текущего сеанса работы сервера и теряться при перезагрузке, и переменные окружения, которые действуют глобально для всего сервера и всех баз данных — изменить их можно, только прямо указывая новые значения.

Список всех доступных команд и опций можно получить, введя в консоли "mysqld --help". Следует сказать, что практически все команды универсальны и поддерживаются на всех платформах, где работает сервер MySQL, но существует несколько специфических команд для платформы Windows NT. Для всех команд существует полный синтаксис, когда команда начинается двумя символами тире (минус) "--", за которыми сразу, без пробелов, следует название команды (или опции, далее эти слова будут синонимами). Если требуется задать какое-либо значение, после названия команды следует знак "=" и задаваемое значение. Сокращенная форма предусматривает один знак тире, название команды сокращается до одой буквы, а параметры задаются через пробел. Только опция "--socket" не имеет короткой формы (она должна бы быть "-s"). Помните, что написание команд чувствительно к регистру символов, и команды "-l" и "-L" совершенно разные. В конфигурационном файле можно задавать комментарии — они отделяются знаком "#", и вся строка до конца игнорируется.


Сначала познакомимся с самыми важными командами.

Команда --help самая важная, она выводит список вех доступных команд

Help или -? (в серверах версии 4.1 и выше нет краткой команды "-h"; кроме того, для запуска команды надо предварительно задать команду "--verbose") — выводит справку по доступным командам и опциям, сам сервер при этом не запускается.
--version или -V — пригодится, если надо узнать точную версию сервера MySQL и платформу, на которой он запущен.
--user= или -u — задает имя пользователя, с правами которого запускается сервер. Обычно не рекомендуется запускать сервер от имени пользователя root. Пример: "--user=vasya".
-p — используется вместе с командой "-u" и задает пароль учетной записи пользователя. Если пароля нет (инсталляция по умолчанию не предусматривает пароля для пользователя root), команду можно опустить. Обратите внимание — синтаксис команды отличается — пароль задается в строке сразу после команды, безо всяких разделителей. Пример: "--user=vasya -pverygoodpassword", где «verygoodpassword» — это пароль пользователя «vasya».
-P или --port= — определяет номер порта, через который устанавливается соединение с сервером mysqld. По умолчанию сервер слушает TCP порт 3306, но можно задать любой другой. Обратите внимание — сокращенный вариант команды пишется с большой буквы Р, так как маленькая буква р используется для задания пароля пользователя.
--bind-address= — применяется для принудительного задания IP-адреса сервера, по умолчанию берется текущий адрес компьютера.
--skip-networking — команда полностью запрещает использование сетевых соединений для подключения к серверу, работать можно только локально, с хоста localhost.

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

Вывод сообщений на русском — используйте --language=russian

Datadir= или -h — позволяет явно указать каталог, где хранятся базы данных. Может потребоваться, если вы хотите хранить базы на другом разделе или логическом диске, или же у вас есть несколько серверов, которые используют разные каталоги для хранения баз данных. Допустимо задавать как полный путь, так и относительный. Пример: "mysqld --datadir=\home\vasya\bases".
--basedir= или -b — путь к директории с установленным сервером.
--tmpdir= или -t — путь к каталогу для временных файлов.
--character-sets-dir=. Эта опция задает путь к каталогу, который содержит конфигурационные файлы для различных кодировок. Эти данные важны для правильной сортировки и поиска в строковых полях таблиц.
--language= или -L — позволяет переопределить язык вывода сообщений и ошибок. По умолчанию используется английский язык, но поддерживаются и другие — в частности, русский. Для задания языка вывода надо указать его название латинскими буквами (russian — для русского, english — для английского). Для работы команды должна существовать директория \share\, но если путь к ней отличается от стандартного, тогда вместо задания языка вам надо описать полный путь к директории — например, "--language=\user\vasya\mysql\langv\russian".
--default-character-set= — задает кодировку символов по умолчанию. Среди возможных значений параметра charset имеются: koi8_ru, german1, cp1251, win1251, koi8_ukr, win1251ukr, win1250 и другие — всего больше 20 различных кодировок. Кодировка важна, если в таблицах будут храниться тексты на различных языках, и важно учитывать национальные особенности при поиске и сортировке данных.

Это были самые важные опции и команды, которые могут понадобится при настройке сервера. Всех же команд очень много, и для их полного изучения используйте встроенную справку (вызов через команду --help).

Некоторые команды специфичны и доступны только для Windows NT

Для платформы Windows NT предусмотрено несколько специфических команд.
--console — команда появилась в версии 3.22.4 и предназначена для вывода всех сообщений об ошибках в окно консоли, что полезно при отладке или изучении влияния разных параметров на работу сервера.
--install — работает только на платформе Win2000/XP и регистрирует сервер MySQL как системный сервис, который запускается при каждой загрузке системы и постоянно существует в оперативной памяти (если надо зарегистрировать сервис, но запускать его пользователь будет сам, команда будет выглядеть как "--insatll-manual"). Команда "--remove" удаляет сервер из писка системных сервисов.
--standalone — запуск сервера под Win2000/XP в виде отдельной программы, а не системного сервиса.

Удобнее всего использовать для указанных действий графическую утилиту WinMySQLAdmin, которая входит в дистрибутив.

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

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

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

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

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

Управление базами данных и пользователями в MySQL

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

Mysql -u root -p

Где ключ -u задает имя пользователя, а -p указывает на аутентификацию по паролю, синтаксис команды позволяет указать пароль, вписав его без пробелов сразу после ключа, но в этом случае он сохранится в истории команд, что не совсем хорошо, поэтому лучше ввести пароль интерактивно. Выполнив эту команду, мы окажемся в среде MySQL, на что указывает изменившееся приглашение командной строки.

Работа в данной среде имеет свои особенности: каждая команда должна завершаться символом ; или \g , о чем, кстати, написано в первой строке приветствия. Выход из данного режима осуществляется командой:

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

Для начала посмотрим список баз:

Show databases;

Как говорится, без лишних подробностей, но для большинства административных задач этого достаточно:

Узнать список пользователей немного сложнее, он хранится в виде таблицы служебной базы mysql , поэтому пишем небольшой запрос:

Select user,host from mysql.user;

Команда select выбирает указанные колонки user, host , опция from указывает откуда мы их выбираем, а именно из таблицы user базы данных mysql .

Первая колонка указывает пользователя, вторая - хост, на котором данному пользователю разрешены подключения, % - обозначает любое значение. Обратите внимание, что если ivanov имеет в настройках localhost , то при подключении к mysql по адресу 127.0.0.1 он не сможет получить доступ, это нужно учитывать, когда вы указываете данные подключения к серверу СУБД в своих приложениях.

Посмотреть владельцев баз можно следующим запросом:

Select host,db,user from mysql.db;

Особых комментариев здесь не требуется. Например, ivanov имеет права на базы с префиксом ivanov_ при подключении через localhost , а andrey на базы с префиксом andrey_ на любом хосте. Посмотреть привилегии пользователя можно командой:

Show grants for "ivanov"@"localhost";

Имя пользователя и хост оборачиваем одинарными кавычками.

Первая строка сообщает, что у указанного пользователя отсутствуют привилегии (USAGE ) на любую таблицу любой базы (*.* ), вторая строка говорит о всех основных привилегиях для всех таблиц всех баз с префиксом ivanov_ .

Подробный разбор системы прав MySQL выходит далеко за пределы данной статьи, скажем только что ALL PRIVELEGES дает пользователь все права на свои базы, но не позволяет управлять правами доступа для других пользователей. Для этого используется набор прав ALL PRIVELEGES WITH GRANT OPTION , который имеет по умолчанию root . Для простого пользователя такой набор прав избыточен.

Попробуем создать нового пользователя:

Create user "petrov"@"localhost" identified by "password";

Синтаксис команды прост, мы указываем имя пользователя и хост, а также идентификационные данные в виде пароля. Все передаваемые значения оборачиваются в одинарные кавычки. Создав пользователя нужно задать ему права, это делается командой GRANT . Сначала явно лишим его привилегий на чужие базы:

Grant usage on *.* to "petrov"@"localhost";

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

Grant all privileges on `petrov\_%`.* to "petrov"@"localhost";

Обратите внимание, что шаблон следует обернуть символами грависа (` ), которые расположены на клавише с русской буквой Ё.

Выдать права на отдельную базу можно так:

Grant all privileges on andrey_drupal8.* to "petrov"@"localhost";

Для отбора прав служит команда REVOKE, которая имеет аналогичный синтаксис, только to (кому ), заменяем на from (у кого ). Например:

Revoke all privileges on andrey_drupal8.* from "petrov"@"localhost";

Для того чтобы MySQL сервер применил права следует заставить его перезагрузить кэш привилегий командой:

Flush privileges;

Также вам может понадобиться сменить пароль пользователя:

Set password for "petrov"@"localhost" = password("newpassword");

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

Rename user "petrov"@"localhost" to "petr"@"127.0.0.1";

Ну и наконец удалить учетную запись:

Drop user "petr"@"127.0.0.1";

Перейдем от пользователей к базам данных, в простейшем случае для создания новой базы достаточно команды:

Create database petrov_newdb;

Это создаст базу данных с кодовой страницей и кодировкой сравнения по умолчанию. Если сервер СУБД отдельно не настраивался, то такой кодировкой скорее всего будет latin1_swedish_ci , что в ряде случаев может вызвать проблемы, если не сейчас, то в дальнейшем, поэтому правилом хорошего тона будет явно указывать кодировку при создании базы. Для UTF-8 это будет так:

Create database petrov_newdb default character set utf8 collate utf8_general_ci;

Для Windows-1251:

Create database petrov_newdb default character set cp1251 collate cp1251_general_ci;

Для удаления базы используйте:

Drop database petrov_newdb;

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

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

Для проверки базы данных выполните, где andrey_drupal8 - имя базы:

Mysqlcheck -u root -p --check andrey_drupal8

Сразу все базы можно проверить командой:

Mysqlcheck -u root -p --check --all-databases

А так как весь вывод на экран скорее всего не поместится, то есть смысл перенаправить его команде less :

Mysqlcheck -u root -p --check --all-databases | less

Обратите внимание, что less позволяет прокручивать вывод как вниз, так и вверх, используя стрелки, для выхода нажмите q .

Если в какой-либо из баз были обнаружены ошибки стоит попытаться их исправить, для этого укажите:

Mysqlcheck -u root -p --auto-repair andrey_drupal8

Для оптимизации используйте ключ --optimize , оптимизировать можно отдельную базу или несколько, для этого перечислите их после ключа --databases :

Mysqlcheck -u root -p --optimize --databases andrey_drupal8 petrov_newdb

а также сразу все:

Mysqlcheck -u root -p --optimize --all-databases

Выгрузка и загрузка дампов БД MySQL

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

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

Начнем с создания дампов, для этих целей используется утилита mysqldump , синтаксис которой повторяет синтаксис mysqlcheck . Для выгрузки дампа используйте команду:

Mysqldump -u root -p andrey_drupal8 > ~/drupal8.sql

Чтобы выгрузить сразу несколько баз используйте ключ --databases или --all-databases для создания дампа сразу всех баз. Вывод команды следует направить в файл и указать его расположение, в нашем случае это файл drupal8.sql в домашней директории. Также можно передать вывод по конвейеру архиватору и получить сразу архив:

Mysqldump -u root -p andrey_drupal8 | gzip > ~/drupal8.sql.gz

В целом мы не советуем использовать один дамп сразу для нескольких баз, лучшим вариантом будет свой дамп для каждой базы, в тоже время использование ключа --all-databases оправдано в случаях, когда вам надо быстро сделать резервную копию всего сервера, например, при обновлении или переустановке СУБД, чтобы можно было быстро восстановить информацию если что-то пойдет не так.

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

Mysql -u root -p andrey_drupal8 < ~/drupal8.sql

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

Для дампов, содержащих более одной базы просто укажите:

Mysql -u root -p < ~/all.sql

В этом случае каждая база будет загружена в свой источник, если база источник не существует, то она будет создана.

Как видим, создание и восстановление дампов при помощи командной строки происходит буквально в одну строку и гораздо проще, и быстрее, чем с использованием phpMyAdmin или подобных ему инструментов.

Восстановление забытого пароля root MySQL

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

Service mysql stop

Затем запускаем ее в безопасном режиме с пропуском таблиц привилегий:

Mysqld_safe --skip-grant-tables &

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

Mysql -u root

и попадаем в среду mysql с правами root без ввода пароля.

Нам кажется, что многие уже догадались, что делать дальше, однако выполнить set password в данном режиме не получится, поэтому надо идти другим путем. Вспоминаем, что информация о пользователях хранится в таблице user служебной БД mysql . После чего выполним следующий запрос:

Update mysql.user set password = password ("newpassword") where user="root";

Важно! В новых версиях MySQL вместо колонки password таблицы user используется колонка authentication_string , поэтому вместо set password следует указывать set authentication_string .

Данный запрос установит новый пароль newpassword для всех строк в колонке user которых значится root .

Обновим кэш привилегий:

Flush privileges;

Выйдем из режима:

Остановим службу и запустим в обычном режиме:

Service mysql stop
service mysql start

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