Основы администрирования MySQL при помощи командной строки. Как зайти в MySQL – подробное описание всех дверей Работа с mysql из командной строки
Утилита командной строки mysql является простой SQL-оболочкой (с возможностями библиотеки readline проекта GNU). Она поддерживает интерактивный и неинтерактивный режимы. В интерактивном режиме результаты запроса представляются в ASCII-формате. При использовании в неинтерактивном режиме (например, в качестве фильтра) результат представляется в текстовом формате с символом табуляции в качестве разделителя (выходной формат можно изменить при помощи параметров командной строки). Сценарии можно запускать, как показано ниже:
Shell> mysql database output.tab
Если возникают проблемы из-за недостатка памяти на данном клиенте, применяйте параметр --quick ! Это заставит mysql использовать функцию mysql_use_result() вместо функции mysql_store_result() для получения результирующей выборки данных.
Использовать mysql очень легко. Запустите mysql database или mysql --user=user_name --password=your_password databas e. Наберите SQL-команду прямо в командной строке, завершив ее одним из символов: `;" , `\g" или `\G" , и нажмите клавишу ``Ввод"".
Утилита командной строки mysql поддерживает следующие параметры:
Help Вывод справочной информации об использовании программы и выход из нее. -A, --no-auto-rehash Отключает автоматическое рехеширование. rehash следует использовать для получения хеша таблиц и полей. Это обеспечивает более быстрый старт mysql . --prompt=... Устанавливает приглашение на ввод команд в заданном формате. -b, --no-beep Выключает звуковой сигнал об ошибке. -B, --batch Выводит результаты в пакетном режиме с символом табуляции в качестве разделителя, каждая строка с новой строки. Файл истории не используется. --character-sets-dir=... Директория, где находятся наборы символов. -C, --compress Использовать сжатие данных в протоколе сервер/клиент. -#, --debug[=...] Журнал отладки. Значение по умолчанию - "d:t:o,/tmp/mysql.trace". -D, --database=... Имя используемой базы данных. Большей частью применяется в конфигурационном файле `my.cnf" . --default-character-set=... Установить набор символов по умолчанию. -e, --execute=... Выполнить команду и завершить программу (вывод результата как и для --batch). -E, --vertical Вывести результаты запроса (строки) по вертикали. Можно произвести вывод подобным образом и без данного параметра, завершая команды символами \G . -f, --force Продолжать обработку даже при обнаружении ошибки SQL. -g, --no-named-commands Выключает именованные команды. Следует использовать только команды вида \* либо применять именованные команды только в начале строки, заканчивающейся символом `;" . Начиная с версии 10.9 клиент запускается с этой опцией, включенной по умолчанию! С опцией -g , однако, длинные команды все еще работают с первой строки. -G, --enable-named-commands Разрешает именованные команды. Допускаются длинные команды, а также укороченные команды вида \*. -i, --ignore-space Игнорировать пробел после имен функций. -h, --host=... Подсоединиться к базе данных на указанном хосте. -H, --html Вывести выходные данные в виде HTML. -L, --skip-line-numbers Не указывать номера строк для ошибок. Полезно для сравнения результирующих файлов, включающих сообщения об ошибках. --no-pager Блокирует пейджер (программа постраничного вывода) и выводит результат в стандартный вывод stdout (в Unix). Смотрите также команду \ h (интерактивная помощь). --no-tee Блокирует выходной файл. Смотрите также команду \h (интерактивная помощь). -n, --unbuffered Очищать буфер после каждого запроса. -N, --skip-column-names Не указывать имена столбцов в результатах. -O, --set-variable var=option Установить значение переменной. Список используемых переменных выводится через --help . -o, --one-database Обновить только базу данных, установленную по умолчанию. Позволяет пропускать обновления другой базы данных в журнале обновления. --pager[=...] Устанавливает тип данных вывода. По умолчанию это переменная окружения PAGER . Ее возможные значения - less, more, cat [> имя файла], и т.д. См. также команду \h (интерактивная помощь). Этот параметр не работает в пакетном (batch) режиме. Пейджер работает только под Unix. -p, --password[=...] Пароль, используемый при подсоединении к серверу баз данных. Если в командной строке пароль не указан, то он запрашивается у пользователя. При использовании краткой формы -p не оставляйте пробел между параметром и значением пароля. -P --port=... Номер порта TCP/IP, используемый для подсоединения. -q, --quick Не кэшировать результат. Выводить его строка за строкой так, как он приходит от сервера. Это может замедлить скорость работы сервера, если вывод результата будет приостановлен. Файл истории не используется. -r, --raw Показывать значения столбцов без какого-либо преобразования. Используется с --batch . -s, --silent Режим молчания. Выводить только сообщения об ошибках. -S --socket=... Файл сокета, используемый для подсоединения. -t --table Выводить результат в табличном формате. Установлено по умолчанию для непакетного режима. -T, --debug-info Выводить некоторые отладочные данные при выходе из программы. --tee=... Присоединить что-либо к выходному файлу. Смотрите также команду \h (интерактивная помощь). Этот параметр не работает в пакетном режиме. -u, --user=# Имя пользователя MySQL, если этот пользователь не является активным в данное время. -U, --safe-updates[=#], --i-am-a-dummy[=#] Разрешает выполнять только операции UPDATE и DELETE , используя ключи. Более полная информация об этом параметре приведена ниже. Можно сбросить данный параметр, установив в конфигурационном файле `my.cnf" значение аргумента --safe-updates=0 . -v, --verbose Более расширенный режим вывода результатов (-v -v -v дает формат вывода таблицы). -V, --version Вывод информации о версии и выход из программы. -w, --wait Если соединение с сервером упало, подождать и попытаться восстановить его, вместо того, чтобы прервать работу.
Через параметры командной строки -O или --set-variable можно также установить следующие переменные:
Если ввести в командной строке help , программа mysql выведет список поддерживаемых ею команд:
Mysql> help Команды MySQL help (\h) Выводит данный текст. ? (\h) Синоним для help. clear (\c) Команда очистки. connect (\r) Снова подключиться к серверу. Дополнительные аргументы - db и host. edit (\e) Редактировать текущую команду с помощью $EDITOR. ego (\G) Послать текущую команду MySQL серверу и вывести результат по вертикали. exit (\q) Выйти из программы. То же что и quit. go (\g) Послать текущую команду MySQL серверу. nopager (\n) Блокировать пейджер, выводить через stdout. notee (\t) Не добавлять записи в выходной файл outfile. pager (\P) Установить PAGER . Выводить результаты запроса через PAGER. print (\p) Вывести текущую команду. prompt (\R) Изменить формат приглашения на ввод команд mysql. quit (\q) Выйти из программы. rehash (\#) Восстановить таблицу хэшей. source (\.) Запустить на выполнение файл с SQL-сценарием. Указать имя файла в качестве аргумента. status (\s) Получить информацию о статусе сервера. tee (\T) Установить параметр outfile . Присоединить что-либо к данному выходному файлу. use (\u) Использовать другую базу данных. Указать имя базы данных в качестве аргумента.
Команда pager работает только под Unix.
Результат этого следующий:
- Не разрешено выполнять команды UPDATE или DELETE , если не указаны ограничения по ключам в секции WHERE . Однако можно заставить выполняться команды UPDATE / DELETE , используя оператор LIMIT: UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
- Все слишком большие результаты ограничены строками #select_limit# .
- SELECT ы, которые могут потребовать для исполнения количество комбинаций строк более, чем #max_join_size# , будут прерваны.
Несколько полезных советов по использованию клиента mysql:
Некоторые данные более удобочитаемы при выводе их по вертикали вместо обычно используемого горизонтального окна вывода. Например, текст, который больше по длине, чем по ширине, и содержит в себе много новых строк, часто намного легче читать в вертикальном представлении.
Mysql> SELECT * FROM mails WHERE LENGTH(txt) sbj: UTF-8 txt: >>>>> "Thimble" == Thimble Smith writes: Thimble> Hi. I think this is a good idea. Is anyone familiar with UTF-8 Thimble> or Unicode? Otherwise, I"ll put this on my TODO list and see what Thimble> happens. Yes, please do that. Regards, Monty file: inbox-jani-1 hash: 190402944 1 row in set (0.09 sec)
- Для входа в систему можно использовать опции команды tee. Она может быть запущена с помощью параметра --tee=... для mysql или интерактивно из командной строки вводом команды tee . Все представляемые на экране данные будут также добавлены к заданному файлу. Это может быть очень полезно для целей отладки программы. Утилиту tee можно блокировать из командной строки командой notee . Повторный запуск команды tee снова включит журналирование. Если при этом параметр для команды tee не указан, то будет использоваться предыдущий файл. Следует учесть, что команда tee будет записывать результаты в файл после каждой выполненной команды, как раз перед появлением командной строки для ввода очередной команды.
- При помощи опции --pager[=...] стал возможным просмотр или поиск результатов в интерактивном режиме с помощью Unix-программ less , more или иных подобных. Если явно не указать аргумент в этом параметре, клиент mysql будет искать переменную окружения PAGER и установит значение pager . Программу pager также можно запустить из интерактивной командной строки командой pager и остановить командой nopager . Команда может принимать аргумент, который является необязательным; pager будет установлена в значение этого аргумента.. Команда pager может быть вызвана и без аргумента, но это требует использования опции --pager или соответствующей установки по умолчанию стандартного вывода stdout . Команда pager работает только в Unix, поскольку использует функцию popen() , отсутствующую в Windows. Вместо этого в Windows можно использовать параметр tee , хотя в ряде ситуаций это менее удобно, чем применение команды pager .
- Несколько советов касательно команды pager: Ее можно использовать для записи в файл: mysql> pager cat > /tmp/log.txt и результаты будут направлены только в файл. Вызываемые командой pager программы могут принимать любые допустимые опции: mysql> pager less -n -i -S Обратите особое внимание на опцию -S в вышеприведенном примере. Она может быть очень полезна при просмотре результатов. Попробуйте применить ее с горизонтальным выводом (завершайте команды символами "\g", or ";") и с вертикальным (в конце команд - "\G"). Очень громоздкие результаты вывода иногда трудно бывает прочесть с экрана, в этом случае команда less с опцией -S позволит просмотреть результаты в интерактивном режиме слева направо, при этом при появлении строк с длиной больше, чем ширина экрана, их вывод будет продолжен вывод с новой строки. Вывод данных в таких случаях получается более удобочитаемым. При интерактивном вызове команды less с опцией "-S" можно переключать режим ее работы (включено/выключено) из командной строки. Чтобы получить дополнительную информацию относительно less, обращайтесь к описанию команды "h".
- В заключение отметим (если вы этого еще не поняли из предыдущих примеров), что существует возможность комбинировать очень сложные способы обработки результатов. Так, в следующем примере результаты будут посланы в два различных каталога, смонтированных на двух различных жестких дисках в /dr1 and /dr2, и, несмотря на это, результаты можно увидеть на экране посредством команды less: mysql> pager cat | tee /dr1/tmp/res.txt | \ tee /dr2/tmp/res2.txt | less -n -i -S
- Приведенные выше функции можно тоже комбинировать: запустив tee и установив pager в less , можно просматривать результаты с помощью Unix-команды less и при этом одновременно производить запись в файл. Разница между служебной Unix-утилитой tee , используемой в программе pager , и встроенной в клиент mysql командой tee заключается в том, что встроенная команда tee работает даже в том случае, если в Unix утилита tee недоступна. Встроенная команда tee также ведет запись всего, что выводится на экран, тогда как утилита Unix tee , используемая с pager , не делает этого в достаточном объеме. Последнее, но тем не менее важное обстоятельство состоит в том, что интерактивная команда tee более удобна для переключения режимов работы включено/выключено, если при записи в файл иногда возникает необходимость отключить эту функцию.
Можно изменить формат приглашения в командной строке клиента mysql .
Возможны следующие опции приглашения:
Опция | Описание |
\v | версия mysqld |
\d | имя используемой базы данных |
\h | имя хоста, к которому производится подсоединение |
\p | номер порта, через который производится подсоединение |
\u | имя пользователя |
\U | полный адрес username@host |
\\ | обратный слэш `\" |
\n | символ новой строки |
\t | табуляция |
\ | пробел |
\_ | пробел с подчеркиванием |
\R | время по военному часовому поясу (0-23) |
\r | время по стандартному часовому поясу (1-12) |
\m | минуты |
\y | два разряда года |
\Y | четыре разряда года |
\D | полный формат даты |
\s | секунды |
\w | день недели в трехбуквенном формате (Mon, Tue, ...) |
\P | Время до полудня/после полудня (am/pm) |
\o | месяц в числовом формате |
\O | месяц в трехбуквенном формате (Jan, Feb, ...) |
\c | Счетчик, подсчитывающий количество вводимых команд |
Символ `\" за которым следует любая другая буква, просто дополняет эту букву.
Установить параметры приглашения можно следующими способами:
В переменных окружения Можно установить переменную окружения MYSQL_PS1 для строки приглашения. Например: shell> export MYSQL_PS1="(\u@\h) [\d]> " `my.cnf" `.my.cnf" Можно установить опцию prompt в любом конфигурационном файле MySQL в группе mysql . Например: prompt=(\u@\h) [\d]>\_ В командной строке Можно установить опцию --prompt из командной строки утилиты mysql . Например: shell> mysql --prompt="(\u@\h) [\d]> " (user@host) > В интерактивном режиме Можно также использовать команду prompt (или \R) для изменения настроек приглашения в интерактивном режиме. Например: mysql> prompt (\u@\h) [\d]>\_ PROMPT set to "(\u@\h) [\d]>\_" (user@host) > (user@host) > prompt Возвращение к исходным (по умолчанию) настройкам PROMPT в утилите mysql> mysql>Популярная система управления базами данных 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 недоступен, а может быть даже оцените удобство консольных команд и будете все реже заходить в панель, предпочитая управлять сервером напрямую.
Теги:
От автора: девушка, у вас машина не заводится? Может «с толкача» попробуем? Я помогу! Не знаете, как это? «С толкача» заводили только сервер СУБД через 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 из командной строки. В общем, все то, без чего сервер БД не заведется «с толкача».
Развитие информационных технологий - одно из передовых направлений деятельности человечества. Поэтому в данную область инвестируется огромное количество средств. С момента начала и по сегодняшний день было решено много различных задач, которые серьезно облегчили повседневную жизнь многих людей. Однако с развитием технологий возник ряд проблем, одна из которых - чрезмерный объем информации, подлежащей хранению. Базы данных были призваны разрешить возникшую ситуацию.
Краткий обзор систем управления базами данных
Так как проблема хранения большого объема информации актуальна на сегодняшний день, существует несколько способов решения. Каждый из них ориентирован на задачи определенной направленности. Однако в совокупности они образуют полноценный комплекс, который позволяет упростить проблему хранения данных.
Существует определенная классификация, которая определяет необходимость использования той или иной базы данных и СУБД (системы управления базами данных). Наиболее распространенными в настоящее время принято считать клиент-серверные технологии хранения данных. К ним относятся следующие виды: Firebird, Interbase, IBM DB2, Sybase, Oracle, PostgreSQL, ЛИНТЕР, MySQL. Нас будет интересовать последний вариант - MySQL, команды которой полностью соответствуют стандартам SQL. Данная технология является одной из популярных и часто применяемых для решения как локальных прикладных, так и производственных задач малого масштаба.
Предшественниками клиент-серверной технологии являются файл-серверные СУБД, которые утратили свои позиции из-за ряда имеющихся недостатков, среди которых выделяют необходимость распространения ядра СУБД на каждом компьютере и значительную нагрузку на локальную сеть, приводящую к увеличению временных затрат. К данной группе относятся Borland Paradox.
Новые технологии, набирающие популярность
Однако несколько лет назад появилась передовая технология, которая приобретает популярность и пользуется спросом при решении небольших локальных задач. Речь идет о встраиваемых системах управления базами данных. Главная особенность рассматриваемых СУБД - отсутствие серверной части. Сама система представляет собой библиотеку, позволяющую унифицированным образом работать с большими объемами информации, размещенными на локальном компьютере. Данный способ исключает недостатки файл-серверных средств, а также значительно превосходит по скорости клиент-серверные технологии.
В качестве примеров можно рассматривать OpenEdge, SQLite, BerkeleyDB, один из вариантов Firebird, Sav Zigzag, Compact, ЛИНТЕР, а также один из вариантов MySQL, команды которого ничем не отличаются от используемых в клиент-серверных СУБД. Однако встраиваемые системы могут легко утратить свою актуальность, если задача перестанет носить локальный характер.
Основные преимущества СУБД MySQL
Система управления базами данных MySQL является одной из наиболее востребованных технологий, так как может быть задействована для решения огромного количества задач. Если сравнивать ее с современными аналогами, то можно выделить ряд основных преимуществ.
Главным плюсом на российском рынке считается ее доступность, так как она бесплатна в большинстве случаев. Второй особенностью является быстродействие. Одной из самых популярных систем является MySQL. Команды в ней выполняются быстро, с минимальным временем отклика. Не оказывает влияния на скорость обработки команд подключение к серверу нескольких клиентов в многопоточном режиме за счет использования механизма InnoDB для быстрой поддержки транзакций.
Наличие ODBC драйвера позволяет упростить разработчикам решение многих задач. К преимуществам также стоит отнести наличие возможности осуществления записей фиксированной и переменной длины. Но главная функция, которая очень ценится в кругу программистов, - интерфейс с языками С и РНР. Возможности, предоставляемые MySQL, позволили использовать данную СУБД для огромного числа провайдеров услуг интернет-хостинга.
А для простого обывателя, проявляющего интерес к современным технологиям хранения информации, необходимо изучать MySQL, и их синтаксис потому, что специалисты в данном направлении являются широко востребованными и высокооплачиваемыми в любой точке мира. Поэтому, если кого-нибудь интересует данное направление, не стоить медлить. Необходимо переходить к изучению прямо сейчас.
Что необходимо для изучения
На первый взгляд может показаться, что данная область сложна в самостоятельном изучении и требует постоянной связи со специалистом. Однако это далеко не так. Изучать архитектуру и особенности MySQL, основные команды языка запросов и все, что с этим связано, можно самостоятельно, не прибегая при этом к помощи консультанта. Для этого достаточно иметь желание и прилагать усилия для того, чтобы двигаться дальше. Только саморазвитие и изучение этой области позволят приобрести новые знания, закрепить приобретенные навыки и, возможно, начать строить карьеру и продвигаться в данном направлении.
Для изучения основных команд, прежде всего, необходимо иметь под рукой бесплатную версию консольной утилиты MySQL. Именно с нее начинается процесс обучения. Скачать ее можно с официального сайта MySQL. Она легко устанавливается на любую операционную систему, образуя серверную и клиентскую на одном компьютере, что очень удобно.
Затем необходимо прибегнуть к поиску обучающего мануала, содержащего основные сведения о среде MySQL. для базового изучения, как правило, в них также содержатся. Информации по этому поводу достаточно много. Однако к выбору необходимо подойти серьезно. Информация должна быть представлена последовательно и четко структурирована.
В случае если у вас имеются начальные знания английского языка, можно воспользоваться встроенной в консоль поддержкой. Для этого существует специальная команда help , которая помогает разобраться в использовании утилиты MySQL.
Основные консольные команды
Плавно переходя от основных особенностей, возможностей и преимуществ, мы подобрались к списку основных команд. Утилита MySQL изначально содержит только одного пользователя, который как раз и используется для изучения. Это пользователь с именем root , пароль для которого полностью идентичен имени.
При первом и последующих запусках консоли MySQL пользователю необходимо будет вводить пароль root для дальнейшей работы с СУБД MySQL. Команды консоли будут доступны только после прохождения аутентификации.
После успешной проверки для удобства можно отобразить существующие команды при помощи команды help . После этого на консоли будут представлены все существующие команды и краткое описание к ним.
и отображения
Теперь необходимо перейти к следующему шагу. Для этого необходимо выбрать существующую или создать новую базу данных. Для выбора существующей базы необходимо использовать команду use. И через пробел ввести имя базы данных. Изначально в утилите она существует только одна - с именем test . Поэтому запрос будет выглядеть следующим образом: use test .
Для создания базы данных необходимо воспользоваться командой create , указав ей ключевое слово database и задав соответствующее имя. Структура примет следующий вид: create database Name_of_database . Для работы с созданной базой к ней необходимо обратиться при помощи команды use .
В среде предусмотрена функция, предназначенная для отображения существующих баз данных, таблиц, первичных ключей или внешних связей и вывода имеющейся о них информации на MySQL консоль. Команды в этом случае должны всегда начинаться с предложения show . Например, для того чтобы отобразить список имеющихся баз данных для текущего пользователя, достаточно ввести следующий запрос: show databases . Для отображения таблицы достаточно после ключевого слова изменить объект отображения, вписав tables .
Команды управления таблицами
Прежде чем перейти дальше, необходимо ещё раз напомнить, что соответствие стандартам языка SQL предоставляет широкие возможности разработчикам, независимо от используемых СУБД и операционных систем. Запросы, разработанные в любой среде, которая поддерживает стандарт SQL, успешно отработают (при наличии базы данных и таблиц) в среде MySQL. Команды консоли Windows ничем не отличаются от используемых в других операционных системах.
Для работы с таблицами существует ряд определенных команд, которые, если перевести их с английского, говорят сами за себя. О команде create было упомянуто выше. Она также может быть задействована для добавления таблиц в ранее созданную базу данных. Для удаления объектов баз данных, в частности и таблиц, используется команда drop , к которой добавляется имя уничтожаемого объекта. Пример: drop name _ of _ your _ table .
Синтаксис обращений к серверу БД всегда имеет общую структуру. Поэтому запрос, разработанный в Windows, успешно отработает и в консоли MySQL Linux. Команды, обработанные сервером без ошибок в одной операционной системе, не могут привести к возникновению ошибок в других.
Команда Select
Но самая важная для работы с таблицами команда, синтаксис которой достаточно прост, - команда select . Именно она применяется для выбора данных из базы. Первоначальный синтаксис имеет следующую структуру: select * from table _ name . Отправив такой запрос серверу базы данных, клиент должен получить все записи, хранящиеся в таблице.
Многие никогда не задумываются, но при просмотре интернет-ресурсов постоянно используются MySQL команды.PHP-запросы используют синтаксис языка SQL, чтобы отображать содержимое каталогов интернет-магазинов или новости в социальных сетях. Вместо знака “*” после предложения select , как правило, приводится список основных полей таблицы или нескольких таблиц, данные из которых необходимо обработать. В случае выборки из нескольких таблиц используется специальная связка join , которая служит для их соединения по имеющимся внешним связям. Однако это условие можно изменять, самостоятельно указывая, по каким полям должна проводиться связь.
Задание ограничений выборки
Иногда происходит ситуация, когда ответ, полученный от сервера базы данных, содержит повторяющиеся данные. Для того чтобы пользователю были видны только уникальные записи, используется предложение distinct. Оно помещается перед списком запрашиваемых полей и служит вспомогательным средством для сокрытия дубликатов.
Будем считать что все у нас уже установлено и теперь приступаем непосредственно к работе.
Подключаемся:
ceval@srv:~$ mysql -pПАРОЛЬ
-p, —password=
— Пароль пользователя, для соединения с сервером MySQL. Не должно быть пробела между -p и паролем.
-u, —user=
- Имя пользователя для соединения с сервером MySQL. Необязательно, по умолчанию используется такое же, как ваш логин.Используеться если логин отличается от имени пользователя для соединения с сервером MySQL.
$ mysql -u ceval_ -pПАРОЛЬ
Если мы ввели свой пароль правильно, то увидим такие строки и приглашения:
Welcome to the MySQL monitor. Commands end with ; or \g.
Server version: 5.0.45-Debian
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql>
Создаем нужную нам базу, с кодировкой cp1251, указанную кодировку можно заменить на требуемую:
CREATE DATABASE db_name DEFAULT CHARACTER SET cp1251 DEFAULT COLLATE cp1251_general_ci;
Удаления базы:
DROP DATABASE db_name;
Смена базы
USE `mydatabase`;
Удаления таблицы из базы
DROP TABLE `db_table`;
Еще немного:
->\g show databases; // смотрим какие базы есть
->\g create database sputnik; // создаем новую базу
->\g show databases; // проверяем создалась ли она
->\q // Выходим
В разных версиях MySQL могут быть разные команды (4 и 5) в данном случае \g — дает команду серверу выполниьт скрипт SQL
Загрузка, сохранение базы данных MySQL (backup, restore) работа с mysql ubuntu
Загрузить базу сохраненными данными (если делалось сохранение данных). Они сохранены например в файле baza.sql
mysql
->\g show databases;
->\u baza;
->\. /home/backup/baza.sql
->\q
/home/backup/baza.sql — путь к файлу бекапа
[b]Сохранить базу с данными в файл baza.sql
mysqldump baza > /home/backup/baza.sql;
База хранится: /var/lib/mysql/baza
- для удаления всей базы данных достаточно удалить данный каталог.
Можно осуществлять различными способами:
— подключиться по ssh и работать через командную строку;
— использовать phpmyadmin;
— использовать пакет mysql-admin — это графическая утилита администрирования MySQL (GUI tool for intuitive MySQL administration
MySQL)
Теперь устанавливаем себе пакет mysql-admin
на машину
sudo aptitude install mysql-admin
Дальше идем на удаленную машину и правим конфиг [b]my.cnf
$ sudo nano /etc/mysql/my.cnf
Для начало можно проверить:
$ netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Как видно из вывода пока MySQL слушает на localhoste, а нам нужно, чтобы MySQL слушал на всех интерфейсах, а не только на localhost, поэтому находим и редактируем такую запись:
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
#
[...]
и что б MySQL слушал на всех интерфейсах, закомментируем эту строчку:
[...]
#bind-address = 127.0.0.1:
[...]
Рестанем MySQL:
$ sudo /etc/init.d/mysql restart
И посмотрем снова вывод команды:
$ netstat -an | grep 3306
Вывод должен выглядеть следующим образом:
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
и теперь можно запускать mysql-admin для удаленной работы с MySQL — Alt+F2 — mysql-admin
или
$ mysql-admin
работа с mysql ubuntu