- Linux и Windows: помощь админам и пользователям
- Администрируем и настраиваем Windows, Linux.
- 15 практических примеров использования команд Mysqladmin для администрирования MySQL сервера
- 2. Как проверить работает ли MySQL сервер?
- 3. Как посмотреть какая версия MySQL используетсяI am running?
- 4. Как посмотреть статус MySQL сервера?
- 5. Как просмотреть статус переменных MySQL и их текущее значение?
- 6. Как отобразить все системные переменные MySQL сервера и их значения?
- 7. Как отобразить все запущенные процессы/запросы в базе mysql?
- 8. Как создать базу MySQL?
- 9. Как удалить существующую базу MySQL?
- 10. Как перегрузить все привилегии и права на таблицы?
- 11. Как образом выполнить безопасную остановку MySQL сервера?
- 12. Список всех mysqladmin flush комманд.
- 13. Как убить подвешенный клиентский процесс в MySQL ?
- 14. Как запустить или остановить репликацию MySQL на slave-сервер?
- 15. Как скомбинировать несколько команд mysqladmin вместе?
- Устраняем типичные ошибки в MySQL
- Не удаётся подключиться к локальному серверу
- Не удаётся подключиться к серверу MySQL
- Ошибки запрета доступа в MySQL
- Потеря соединения с сервером MySQL
- Слишком много подключений
- Недостаточно памяти
- MySQL продолжает «падать»
- Заключение
- Как проверить версию MySQL
- Из командной строки
- Из оболочки MySQL
- Использование PHP
- Выводы
- Записки IT специалиста
- Основы администрирования MySQL при помощи командной строки
- Управление базами данных и пользователями в MySQL
- Проверка, оптимизация, исправление ошибок баз данных MySQL
- Выгрузка и загрузка дампов БД MySQL
- Восстановление забытого пароля root MySQL
- Дополнительные материалы:
Linux и Windows: помощь админам и пользователям
Администрируем и настраиваем Windows, Linux.
15 практических примеров использования команд Mysqladmin для администрирования MySQL сервера
В 15 примерах использования команд mysqladmin ниже, используется пароль root Mysql tmppassword. Поменяйте его на ваш пароль
1. Как изменить пароль root на Mysql?
2. Как проверить работает ли MySQL сервер?
3. Как посмотреть какая версия MySQL используетсяI am running?
[cut]Эта команда так же отображает текущий статус сервера.
4. Как посмотреть статус MySQL сервера?
Команда status отображает следующую информациюcommand displays the following information:
- Uptime: Время безотказной работы в секундах
- Threads: Общее количество клиентов, подключенных к серверу.
- Questions: Общее количество запросов к серверу с момента запуска.
- Slow queries: Общее количество запросов, чьё время выполнения было больше чем значение переменной long_query_time.
- Opens: Total number of tables opened by the server.
- Flush tables: How many times the tables were flushed.
- Open tables: Total number of open tables in the database.
5. Как просмотреть статус переменных MySQL и их текущее значение?
6. Как отобразить все системные переменные MySQL сервера и их значения?
7. Как отобразить все запущенные процессы/запросы в базе mysql?
Вы можете использовать эту команду для эффективного дебага любых проблем с производительностью и определять процесс, который вызывает проблемы, запустив команду на автообновление каждую секунду.
8. Как создать базу MySQL?
Замечание: Для отображения все таблиц в базе данных, общего количества колонок, строк, индексов и прочее. используйте команду mysqlshow.
9. Как удалить существующую базу MySQL?
10. Как перегрузить все привилегии и права на таблицы?
Команда Refresh сбросит все таблица и закроет/откроет лог-файлы.
11. Как образом выполнить безопасную остановку MySQL сервера?
Вы можете использовать команду “/etc/rc.d/init.d/mysqld stop” для остановки сервера. Для запуска выполните “/etc/rc.d/init.d/mysql start”
12. Список всех mysqladmin flush комманд.
- flush-hosts: Сбросить всю информацию в кэше хостов.
- flush-privileges: Перезагрузить права.
- flush-status: Очистить статус переменных.
- flush-threads: Flush the thread cache.
13. Как убить подвешенный клиентский процесс в MySQL ?
Сперва определите подвешенный процесс используя команду processlist.
Затем используйте команду kill и нужный process_id. Для завершения нескольких процессов разделите process id запятыми.
14. Как запустить или остановить репликацию MySQL на slave-сервер?
15. Как скомбинировать несколько команд mysqladmin вместе?
В примере ниже скомбинированы команды process-list, status и version для полного вывода статуса сервера.
Вы можете также использовать краткую форму записи:
Используйте опцию -h для подключения к удаленному MySQL серверу и выполнения команды.
Постовой
Покупайте ламинат только в интернет-магазине «Паркет-Всем». Самые выгодные ценовые предложения, огромный ассортимент и удобная доставка.
Купить оригинальные японские запчасти в интернет магазине «Tan Sin» это самое лучшее, что вы можете сделать для своего автомобиля.
Устраняем типичные ошибки в MySQL
MySQL — система управления базами данных (СУБД) с открытым исходным кодом от компании Oracle. Она была разработана и оптимизирована специально для работы веб-приложений. MySQL является неотъемлемой частью таких веб-сервисов, как Facebook, Twitter, Wikipedia, YouTube и многих других.
Эта статья расскажет, как определять, с чем связаны частые ошибки на сервере MySQL, и устранять их.
Не удаётся подключиться к локальному серверу
Одной из распространённых ошибок подключения клиента к серверу является «ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)».
Эта ошибка означает, что на хосте не запущен сервер MySQL ( mysqld ) или вы указали неправильное имя файла сокета Unix или порт TCP/IP при попытке подключения.
Убедитесь, что сервер работает. Проверьте процесс с именем mysqld на хосте сервера, используя команды ps или grep, как показано ниже.
Если эти команды не показывают выходных данных, то сервер БД не работает. Поэтому клиент не может подключиться к нему. Чтобы запустить сервер, выполните команду systemctl.
Чтобы проверить состояние службы MySQL, используйте следующую команду:
Если в результате выполнения команды произошла ошибка службы MySQL, вы можете попробовать перезапустить службу и ещё раз проверить её состояние.
Если сервер работает (как показано) и вы по-прежнему видите эту ошибку, вам следует проверить, не заблокирован ли порт TCP/IP брандмауэром или любой другой службой блокировки портов.
СберЗдоровье , Удалённо , По итогам собеседования
Для поиска порта, который прослушивается сервером, используйте команду netstat .
Не удаётся подключиться к серверу MySQL
Ещё одна похожая и часто встречающаяся ошибка подключения — «(2003) Can’t connect to MySQL server on ‘server’ (10061)». Это означает, что в сетевом соединении было отказано.
Следует проверить, работает ли в системе сервер MySQL (смотрите выше) и на тот ли порт вы подключаетесь (как найти порт, можно посмотреть выше).
Похожие частые ошибки, с которыми вы можете столкнуться при попытке подключиться к серверу MySQL:
Ошибки запрета доступа в MySQL
В MySQL учётная запись (УЗ) определяется именем пользователя и клиентским хостом, с которого пользователь может подключиться. УЗ может также иметь данные для аутентификации (например, пароль).
Причин для запрета доступа может быть много. Одна из них связана с учётными записями MySQL, которые сервер разрешает использовать клиентским программам при подключении. Это означает, что имя пользователя, указанное в соединении, может не иметь прав доступа к базе данных.
В MySQL есть возможность создавать учётные записи, позволяющие пользователям клиентских программ подключаться к серверу и получать доступ к данным. Поэтому при ошибке доступа проверьте разрешение УЗ на подключение к серверу через клиентскую программу.
Увидеть разрешённые привилегии учётной записи можно, выполнив в консоли команду SHOW GRANTS
Входим в консоль (пример для Unix, для Windows консоль можно найти в стартовом меню):
В консоли вводим команду:
Дать привилегии конкретному пользователю в БД по IP-адресу можно, используя следующие команды:
Ошибки запрещённого доступа могут также возникнуть из-за проблем с подключением к MySQL (см. выше).
Потеря соединения с сервером MySQL
С этой ошибкой можно столкнуться по одной из следующих причин:
- плохое сетевое соединение;
- истекло время ожидания соединения;
- размер BLOB больше, чем max_allowed_packet .
В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).
Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра connect_timeout .
В случае с размером BLOB нужно установить более высокое значение для max_allowed_packet в файле конфигурации /etc/my.cnf в разделах [mysqld] или [client] как показано ниже.
Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.
Слишком много подключений
Эта ошибка означает, что все доступные соединения используются клиентскими программами. Количество соединений (по умолчанию 151) контролируется системной переменной max_connections . Устранить проблему можно, увеличив значение переменной в файле конфигурации /etc/my.cnf .
Недостаточно памяти
Если такая ошибка возникла, это может означать, что в MySQL недостаточно памяти для хранения всего результата запроса.
Сначала нужно убедиться, что запрос правильный. Если это так, то нужно выполнить одно из следующих действий:
- если клиент MySQL используется напрямую, запустите его с ключом —quick switch , чтобы отключить кешированные результаты;
- если вы используете драйвер MyODBC, пользовательский интерфейс (UI) имеет расширенную вкладку с опциями. Отметьте галочкой «Do not cache result» (не кешировать результат).
Также может помочь MySQL Tuner. Это полезный скрипт, который подключается к работающему серверу MySQL и даёт рекомендации по настройке для более высокой производительности.
MySQL продолжает «падать»
Если такая проблема возникает, необходимо выяснить, заключается она в сервере или в клиенте. Обратите внимание, что многие сбои сервера вызваны повреждёнными файлами данных или индексными файлами.
Вы можете проверить состояние сервера, чтобы определить, как долго он работал.
Чтобы узнать время безотказной работы сервера, запустите команду mysqladmin .
Кроме того, можно остановить сервер, сделать отладку MySQL и снова запустить службу. Для отображения статистики процессов MySQL во время выполнения других процессов откройте окно командной строки и введите следующее:
Заключение
Самое важное при диагностике — понять, что именно вызвало ошибку. Следующие шаги помогут вам в этом:
- Первый и самый важный шаг — просмотреть журналы MySQL, которые хранятся в каталоге /var/log/mysql/ . Вы можете использовать утилиты командной строки вроде tail для чтения файлов журнала.
- Если служба MySQL не запускается, проверьте её состояние с помощью systemctl . Или используйте команду journalctl (с флагом -xe ) в systemd.
- Вы также можете проверить файл системного журнала (например, /var/log/messages ) на предмет обнаружения ошибок.
- Попробуйте использовать такие инструменты, как Mytop, glances, top, ps или htop, чтобы проверить, какая программа использует весь ресурс процессора или блокирует машину. Они также помогут определить нехватку памяти, дискового пространства, файловых дескрипторов или какого-либо другого важного ресурса.
- Если проблема в каком-либо процессе, можно попытаться его принудительно остановить, а затем запустить (при необходимости).
- Если вы уверены, что проблемы именно на стороне сервера, можете выполнить команды: mysqladmin -u root ping или mysqladmin -u root processlist , чтобы получить от него ответ.
- Если при подключении проблема не связана с сервером, проверьте, нормально ли работает клиент. Попробуйте получить какие-либо его выходные данные для устранения неполадок.
Как проверить версию MySQL
MySQL (и его заменитель MariaDB) — самая популярная система управления реляционными базами данных с открытым исходным кодом. Между версиями MySQL есть некоторые важные различия, поэтому в некоторых ситуациях может быть важно знать, какая версия работает на вашем сервере.
Например, если вы устанавливаете приложение, для которого требуется определенная версия MySQL, перед началом установки вам необходимо выяснить версию вашего сервера MySQL.
В этой статье мы покажем вам, как проверить версию сервера MySQL или MariaDB, установленную в вашей системе.
Из командной строки
Если у вас есть SSH-доступ к серверу, есть несколько различных команд, которые могут помочь вам определить версию вашего MySQL.
Бинарный файл сервера MySQL называется mysqld . Чтобы получить версию сервера, запустите двоичный файл с помощью параметра —version или -V :
Команда выведет информацию о версии MySQL и завершит работу. В этом примере версия сервера MySQL — 5.7.27 :
mysqladmin — это клиентская утилита, которая используется для выполнения административных операций на серверах MySQL. Его также можно использовать для запроса версии MySQL:
Результат будет немного отличаться от предыдущей команды:
Из оболочки MySQL
Утилита командного клиента, такая как mysql , также может использоваться для определения версии сервера MySQL.
Чтобы подключиться к серверу MySQL, просто введите mysql :
После подключения к оболочке MySQL версия будет напечатана на экране:
Чтобы получить информацию о версии MySQL и других компонентах, запросите переменные version :
Есть также некоторые другие операторы и команды, которые могут показать вам версию сервера. Оператор SELECT VERSION() отобразит только версию MySQL.
Команда STATUS показывает версию MySQL, а также информацию о статусе сервера:
Использование PHP
Если вы используете виртуальный хостинг и у вас нет доступа к командной строке или к клиенту MySQL, например PhpMyAdmin, вы можете определить версию сервера MySQL с помощью PHP.
В корневой каталог документов веб-сайта загрузите следующий файл PHP с помощью клиента FTP или SFTP . Убедитесь, что вы изменили my_user и my_password на реальную учетную запись пользователя MySQL :
Откройте файл в браузере, и версия сервера MySQL отобразится на вашем экране:
Выводы
Определение версии сервера MySQL — относительно простая задача. В этом руководстве мы показали несколько различных вариантов того, как найти версию MySQL, работающую в вашей системе.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
- Главная
- Основы администрирования MySQL при помощи командной строки
Основы администрирования MySQL при помощи командной строки
Популярная система управления базами данных MySQL широко применяется для различных нужд, в первую очередь как стандарт де-факто в области интернет хостинга. Не менее широко распространен пакет для управления данной СУБД — phpMyAdmin. Без сомнения, это хороший, удобный продукт, но очень часто случается так, что навыки работы с этим продуктом полностью заменяют навыки работы с самой СУБД. Поэтому в данном материале мы решили познакомить наших читателей с тем, как выполнять основные задачи администрирования MySQL из командной строки.
Как могли заметить наши постоянные читатели, мы последовательно выступаем против применения начинающими разного рода панелей управления, какими бы удобными и распространенными они не были. В тоже время мы не отрицаем их существование и сами с удовольствием используем в повседневной деятельности.
Но есть одно большое отличие: специалист, умеющий работать с командной строкой, используя панель, не заменяет ей умение работать с продуктом, а только облегчает себе выполнение повседневных задач. А новичок, привыкший совершать все действия в панели, в случае ее недоступности впадает в тихую панику, ведь теперь нужно вводить какие-то «заклинания» в эту непонятную черную консоль.
На самом деле работать с СУБД на уровне командной строки совсем несложно, а часть задач по администрированию проще и удобнее выполнять именно в ней. Сразу оговоримся, под администрированием мы подразумеваем именно администрирование сервера СУБД, а не самих баз данных. С ними, конечно, тоже можно работать из командной строки, но лучше использовать для этого более подходящие инструменты.
Управление базами данных и пользователями в MySQL
Если танцевать следует начинать от печки, то работу с СУБД следует начинать с создания баз данных и пользователей этих баз. Задачи по сути своей простые и прекрасно, а главное — просто, решаются из консоли. Для работы с сервером MySQL предназначена одноименная утилита mysql, работа с которой происходит в интерактивном режиме, поэтому вначале подключимся к серверу:
Где ключ -u задает имя пользователя, а -p указывает на аутентификацию по паролю, синтаксис команды позволяет указать пароль, вписав его без пробелов сразу после ключа, но в этом случае он сохранится в истории команд, что не совсем хорошо, поэтому лучше ввести пароль интерактивно. Выполнив эту команду, мы окажемся в среде MySQL, на что указывает изменившееся приглашение командной строки.
Работа в данной среде имеет свои особенности: каждая команда должна завершаться символом ; или \g, о чем, кстати, написано в первой строке приветствия. Выход из данного режима осуществляется командой:
Сразу об одной очень распространенной ошибке: забыли поставить точку с запятой в конце команды. Что делать? Ничего страшного, просто добейте недостающие символы в следующей строке.
Для начала посмотрим список баз:
Как говорится, без лишних подробностей, но для большинства административных задач этого достаточно:
Узнать список пользователей немного сложнее, он хранится в виде таблицы служебной базы mysql, поэтому пишем небольшой запрос:
Команда select выбирает указанные колонки user, host, опция from указывает откуда мы их выбираем, а именно из таблицы user базы данных mysql.
Первая колонка указывает пользователя, вторая — хост, на котором данному пользователю разрешены подключения, % — обозначает любое значение. Обратите внимание, что если ivanov имеет в настройках localhost, то при подключении к mysql по адресу 127.0.0.1 он не сможет получить доступ, это нужно учитывать, когда вы указываете данные подключения к серверу СУБД в своих приложениях.
Посмотреть владельцев баз можно следующим запросом:
Особых комментариев здесь не требуется. Например, ivanov имеет права на базы с префиксом ivanov_ при подключении через localhost, а andrey на базы с префиксом andrey_ на любом хосте. Посмотреть привилегии пользователя можно командой:
Имя пользователя и хост оборачиваем одинарными кавычками.
Первая строка сообщает, что у указанного пользователя отсутствуют привилегии (USAGE) на любую таблицу любой базы (*.*), вторая строка говорит о всех основных привилегиях для всех таблиц всех баз с префиксом ivanov_.
Подробный разбор системы прав MySQL выходит далеко за пределы данной статьи, скажем только что ALL PRIVELEGES дает пользователь все права на свои базы, но не позволяет управлять правами доступа для других пользователей. Для этого используется набор прав ALL PRIVELEGES WITH GRANT OPTION, который имеет по умолчанию root. Для простого пользователя такой набор прав избыточен.
Попробуем создать нового пользователя:
Синтаксис команды прост, мы указываем имя пользователя и хост, а также идентификационные данные в виде пароля. Все передаваемые значения оборачиваются в одинарные кавычки. Создав пользователя нужно задать ему права, это делается командой GRANT. Сначала явно лишим его привилегий на чужие базы:
Затем можем выставлять права по своему усмотрению, например, выдача полных прав на базы с шаблоном имени petrov_:
Обратите внимание, что шаблон следует обернуть символами грависа (`), которые расположены на клавише с русской буквой Ё.
Выдать права на отдельную базу можно так:
Для отбора прав служит команда REVOKE, которая имеет аналогичный синтаксис, только to (кому), заменяем на from (у кого). Например:
Для того чтобы MySQL сервер применил права следует заставить его перезагрузить кэш привилегий командой:
Также вам может понадобиться сменить пароль пользователя:
Переименовать его, причем переименование не обязательно обозначает смену именно имени пользователя, можно изменить как имя, так и хост, в любых комбинациях:
Ну и наконец удалить учетную запись:
Перейдем от пользователей к базам данных, в простейшем случае для создания новой базы достаточно команды:
Это создаст базу данных с кодовой страницей и кодировкой сравнения по умолчанию. Если сервер СУБД отдельно не настраивался, то такой кодировкой скорее всего будет latin1_swedish_ci, что в ряде случаев может вызвать проблемы, если не сейчас, то в дальнейшем, поэтому правилом хорошего тона будет явно указывать кодировку при создании базы. Для UTF-8 это будет так:
Для удаления базы используйте:
Проверка, оптимизация, исправление ошибок баз данных MySQL
По мере активной работы MySQL базы могут фрагментироваться, а также содержать ошибки в данных таблиц. Мы не говорим сейчас о серьезных сбоях, такие ситуации следует рассматривать индивидуально, а о простейших ошибках, которые успешно устраняются средствами самой СУБД. Для проверки, ремонта и оптимизации удобно использовать утилиту mysqlcheck.
Для проверки базы данных выполните, где andrey_drupal8 — имя базы:
Сразу все базы можно проверить командой :
А так как весь вывод на экран скорее всего не поместится, то есть смысл перенаправить его команде less:
Обратите внимание, что less позволяет прокручивать вывод как вниз, так и вверх, используя стрелки, для выхода нажмите q.
Если в какой-либо из баз были обнаружены ошибки стоит попытаться их исправить, для этого укажите:
Для оптимизации используйте ключ —-optimize, оптимизировать можно отдельную базу или несколько, для этого перечислите их после ключа —databases:
а также сразу все:
Выгрузка и загрузка дампов БД MySQL
Еще одна распространенная задача при администрировании любой СУБД, дампы баз используются как для резервного копирования, так и для переноса или создания копий. Если резервное копирование — процесс автоматизированный, то создание копий для переноса на другой сервер или перед какими-то существенными вмешательствами в структуру базы приходится делать вручную.
А если дело касается больших баз, то тут phpMyAdmin плохой помощник, сказываются ограничения на время исполнения скриптов, размер загружаемого файла, доступную память и т.д. И если выгрузить большой дамп с его помощью еще можно, то вот загрузить обратно может и не получиться.
Начнем с создания дампов, для этих целей используется утилита mysqldump, синтаксис которой повторяет синтаксис mysqlcheck. Для выгрузки дампа используйте команду:
Чтобы выгрузить сразу несколько баз используйте ключ —databases или —all-databases для создания дампа сразу всех баз. Вывод команды следует направить в файл и указать его расположение, в нашем случае это файл drupal8.sql в домашней директории. Также можно передать вывод по конвейеру архиватору и получить сразу архив:
В целом мы не советуем использовать один дамп сразу для нескольких баз, лучшим вариантом будет свой дамп для каждой базы, в тоже время использование ключа —all-databases оправдано в случаях, когда вам надо быстро сделать резервную копию всего сервера, например, при обновлении или переустановке СУБД, чтобы можно было быстро восстановить информацию если что-то пойдет не так.
Для того чтобы восстановить базу нужно направить дамп на вход утилиты mysql, для одиночных дампов всегда следует указывать базу приемник, например:
В качестве приемника вовсе не обязательно должна выступать база источник, но учтите, что если база уже существует, все ее содержимое будет заменено содержимым дампа.
Для дампов, содержащих более одной базы просто укажите:
В этом случае каждая база будет загружена в свой источник, если база источник не существует, то она будет создана.
Как видим, создание и восстановление дампов при помощи командной строки происходит буквально в одну строку и гораздо проще, и быстрее, чем с использованием phpMyAdmin или подобных ему инструментов.
Восстановление забытого пароля root MySQL
Еще одна очень популярная задача. Скажем сразу, восстановить пароль суперпользователя MySQL, как и любого другого пользователя, нельзя, но можно его сменить. Для этого нужно обладать правами суперпользователя операционной системы. Сначала остановим службу СУБД:
Затем запускаем ее в безопасном режиме с пропуском таблиц привилегий:
Обратите внимание, что после выполнения данной команды приглашение командной строки пропадет, останется один мигающий курсор. Пишем прямо туда:
и попадаем в среду mysql с правами root без ввода пароля.
Нам кажется, что многие уже догадались, что делать дальше, однако выполнить set password в данном режиме не получится, поэтому надо идти другим путем. Вспоминаем, что информация о пользователях хранится в таблице user служебной БД mysql. После чего выполним следующий запрос:
Важно! В новых версиях MySQL вместо колонки password таблицы user используется колонка authentication_string, поэтому вместо set password следует указывать set authentication_string.
Данный запрос установит новый пароль newpassword для всех строк в колонке user которых значится root.
Обновим кэш привилегий:
Выйдем из режима:
Остановим службу и запустим в обычном режиме:
Надеемся, что после прочтения данной статьи вы приобретете начальные навыки работы с MySQL из командной строки и сможете уверенно себя чувствовать даже тогда, когда phpMyAdmin недоступен, а может быть даже оцените удобство консольных команд и будете все реже заходить в панель, предпочитая управлять сервером напрямую.
Дополнительные материалы:
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: