Bash Days | Linux | DevOps
23.3K subscribers
151 photos
25 videos
663 links
Авторский канал от действующего девопса

Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.

Автор: Роман Шубин
Реклама: @maxgrue

MAX: https://max.ru/bashdays

Курс: @tormozilla_bot
Блог: https://bashdays.ru
Download Telegram
😀😃😄😁😆

🔧 Утилиты: #utils
💳 Таблицы: #sheets
Скрипты: #bash
🎙 Мониторинг: #monitoring
🤔 Отладка: #debug
🎃 Линукс: #linux
✉️ Nginx: #nginx
📦 GIT: #git
📊 Mysql: #mysql
📱 Сервисы: #services
🔄 Девопс: #devops
🛡 Безопасность: #security
👻 Игры: #games
🌐 Сети: #networks
💬 Будни: #рабочиебудни
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11118
Йоу-Йоу и снова ваш покорный сеньор у микрофона. Короче писал, писал я вам сегодня интересный пост, про офигительные циркули, но прибежало начальство и нагрузило какой-то шляпой, сижу вот плачу. В общем доведу до ума портянку и завтра уже вечерком закину.

Сегодня мини пост. Вчера мы с тобой обсуждали коды выходов программ/скриптов. Давай теперь затронем тему mysql, а конкретнее как расшифровать коды ошибок, которые пишутся в лог без пояснений.

Смотрим mysql ошибки:

tail -n 20 /var/log/mysql/error.log

Команда tail записывает в стандартный поток вывода содержимое файла, заданного в параметре файл, начиная с указанной позиции.

Ключ -n = количество строк с конца, которые выведутся на экран, по умолчанию 10.

Так, получили 20 строчек с ошибками, смотрим что же там, опа ошибка:

11:47:52 [ERROR] mysqld: Can't open file: ‘/var/lib/mysql/tokens.frm' (errno: 24)

О чем она мне говорит? Ну ясно понятно - не могу открыть файл tokens.frm. Идем смотреть, хм, файл лежит на месте и даже не нулевого размера. Права правильные mysql:mysql. Так… место на диске тоже предостаточно. И что ты от меня хочешь псина?

Важный совет — всегда читай ошибку с начала и до конца! В 99% ты сможешь понять о чем идет речь и загуглить. Но как показывает практика: много кто читает 2-3 слова и бежит к тимлиду — Наташа, у нас все сломалось! А Наташа смотрит тот же самый лог и прекрасно понимает в чем дело. Не беси своего тимлида! Читай внимательно, вникай.

Вернемся к нашей неочевидной ошибке с открытием файла tokens.frm. Видишь в конце строки, в скобочках errno: 24? ВОТ ЭТО ОНО! А что значит 24? Ща…

Из коробки с mysql идет прекрасная утилита, которая называется perror, вот с помощью нее ты и можешь расшифровать эту ошибку. Давай попробуем.

perror 24
OS error code 24: Too many open files

Ёпта! Too many open files, а мы то всего-навсего уперлись в open_files_limit который прописан в конфиге my.cnf. Дело закрыто! Увеличиваем этот параметр и гордимся своими профессиональными навыками дебагинга.

Увеличение этого параметра может и не спасти ситуацию, тогда проблема в ulimit, смотрим какое в нем число и по возможности увеличиваем. Подробно про ulimit расписывать не буду, закинул в беклог, обязательно поговорим о нем следующих постах.

Еще есть прекрасный файл /etc/security/limits.conf в котором тоже может быть что-то не так накручено, ну и параметр fs.file-max в /etc/sysctl.conf. Каждая отдельная ситуация индивидуальна. Но в большинстве случаев решается повышением значения ulimit.

Для каждого кода ошибки в mysql будет свой способ решения, чем больше у тебя информации на руках, тем больше запросов ты сможешь загуглить. Так что если что-то упало, не рви на жопе себе волосы, всё решаемо и ты обязательно справишься! Главное знать какой инструмент и когда применить.

Ладно, надеюсь было полезно, пойду дальше плакать. Завтра залетит интеграция от партнера, ну а вечером уже закину пост про офигительные циркули. Давай!

tags: #mysql #linux #debug

💩 @bashdays
Please open Telegram to view this post
VIEW IN TELEGRAM
👍119
Здрасти здрасти хуймордасти, оказывается есть люди, которые не знают как залетать в mysql без пароля.

Попался вчера свежий Bash скрипт от персонажа комиксов, который явно указывает пароль от mysql. Заебись Bash скрипт с паролями от рутового мускла. Так делать не нужно.

А нужно всего лишь создать файл в домашнем каталоге пользователя и обозвать его /home/user/.my.cnf.

Содержимое файла .my.cnf

[client]
user=user
password=passwd
database=db


Этот файл содержит настройки по умолчанию для команд mysql.

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

Либо передавать напрямую в mysql путь до файла с помощью ключа:

--defaults-file==filename


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

Теперь если в командой строке просто ввести mysql, ты залетишь в mysql без юзера и пароля + сменится база данных.

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


А для винды есть mysql_config_editor, который поможет зашифровать пароль, ведь в винде нужные права на файл хуй поставишь.

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

Хороших предстоящих выходных!

tags: #linux #mysql

🔔 @bashdays
Please open Telegram to view this post
VIEW IN TELEGRAM
9526