Как установить root пароль для MySQL в Debian 9 (или MySQL 5.7+, MariaDB 10.1+)

Одно из новшеств новых версий MySQL и его свободного ответвления под названием MariaDB, является организация аутентификации пользователей базы данных. Мы привыкли, что после установки mysql-server, следующим шагом задаём root пароль, однако, после установки mysql-server в Debian 9, мы столкнёмся с тем, что ожидаемое «окно» ввода root пароля не появится, а все инструкции в интернетах по установке root пароля MySQL не сработают. Дело в том, что теперь под пользователем MySQL root можно авторизовываться только через auth_socket, например, в консоли через mysql-client из под unix root пользователя, без ввода пароля: mysql -u root.

Такие дела. Все эти mysqladmin -u root password, SET PASSWORD FOR root@localhost=PASSWORD, UPDATE user SET Password=PASSWORD(… не помогут. Утверждают, это повышает безопасность.

Но это, мягко скажем, не очень удобно для организации и управления базами данных, а также создания новых пользователей этих баз данных, когда есть, например, phpMyAdmin, предоставляющий комфортный веб-интерфейс для рутинных действий. Поэтому заходим в mysql-client из под unix root пользователя:

Читать дальше…

Решено: знаки вопросов, кракозябры вместо кириллицы в консоли

Не так давно в консоли стал наблюдать частичную потерю кириллицы, вероятно, после обновления. Метод, описанный в статье 2015 года, не сработал, поэтому статью удалил, и нашёл другое решение.

Откроем в редакторе /etc/environment.

su
mcedit /etc/environment

Где mcedit можно заменить на nano.

environment — это конфигурационный файл для задания переменных, доступных глобально во всей ОС. Добавим в него две такие переменные:

LANG="ru_RU.UTF-8"
LANGUAGE="ru_RU.UTF-8"

Сохраним и выйдем из редактора. Затем в консоли вызовем три команды:

locale-gen ru_RU.UTF-8
update-locale
dpkg-reconfigure locales

Теперь осталось выйти из сеанса консоли и снова зайти, чтобы применить новую конфигурацию.

P.S. На скринах есть ошибка в коде, кто заметит какая? 🙂

Решено: не устанавливается Docker CE

Вы следуете точно по инструкции с официального сайта Docker, например, по такой: https://docs.docker.com/install/linux/docker-ce/debian/, и, при попытке установить docker-ce, получаете ошибку:

Пакет docker-ce недоступен, но упомянут в списке зависимостей другого пакета.
Это может означать, что пакет отсутствует, устарел, или доступен из источников, не упомянутых в sources.list

E: Для пакета «docker-ce» не найден кандидат на установку

Вы думаете, какого блин, начинаете искать альтернативные пути установки, устанавливаете по конкретной версии, через deb пакет. Может даже пытаетесь установить ядро посвежее. Но ничего не помогает?

Возможно у вас VPS сервер на платформе OpenVZ, на которой нет доступа к модулям и конфигурации ядра, в связи с чем установить на такой сервер Docker нельзя. Такие дела! Нужен VPS сервер на платформе KVM.

Решение: Qt Creator «Отсутствуют подходящие комплекты»

Если при попытке собрать проект, вы обнаруживаете, что нет неких комплектов для сборки, то похоже, что вы установили qtcreator без SDK. Поэтому нужно сделать следующее:

apt install qt-sdk

И перезапустить Qt Creator.

Если после этого при компиляции возникнет ошибка «qt creator needs a compiler setup to build», то выберите в параметрах компилятор:

Подсчитать количество файлов в каталоге Linux

В определённом каталоге

Быстрый подсчёт всех файлов и каталогов в указанном:

ls -f КАТАЛОГ | wc -l

Примечание: учитываются «.», «..» и все файлы и каталоги, начинающиеся с точки.

С учётом вложенных каталогов

Подсчёт только файлов в указанном и вложенных каталогах рекурсивно:

find КАТАЛОГ -type f | wc -l

Подсчёт только каталогов в указанном и вложенных рекурсивно:

find КАТАЛОГ -type d | wc -l

Засечь время выполнения команды в Linux

Иногда может быть полезным определить время выполнения команды. Сделать это можно с помощью команды time, подставив её в начале вызова. Примеры:

time zip -r /var/backups/etc.zip /etc/
time mysqldump -u backup -p`cat /home/dev/.extrahide.pas` extrahide > extrahide.sql

Лог запросов в MySQL

В разработке для отладки и тестирования может пригодиться логировать запросы в MySQL.

Воспользоваться этой возможностью легко, достаточно в конфигурационном файле MySQL (my.cnf) добавить в секцию mysqld следующее:

[mysqld]
...
general_log_file = /var/log/mysql/mysql.log
general_log = 1

И перезапустить сервер СУБД:

service mysql restart

Примечание: не применяйте данную опцию на продакшне, если не хотите в кратчайшие сроки забить всё свободное место логами запросов. Ну или настройте ротацию логов.

Получить статистику трафика и проверить загруженность сети в Linux

Первый инструмент — jnettop.

Показывает статистику трафика в реальном времени.

Установка:

apt install jnettop

Запуск:

jnettop

Второй инструмент — cbm.

Показывает загруженность сети.

Установка:

apt install cbm

Запуск:

cbm

На что обращаем внимание: не упирается ли трафик в возможности интерфейса, например, если интерфейс 100 Мбит, а средний трафик около 90 Мбит, то это плохо.

 

Как записать видео с экрана Linux в mp4

apt install recordmydesktop gtk-recordmydesktop ffmpeg

Запустить из меню программ RecordMyDesktop, заснять.

Затем полученный файл формата ogv сконвертировать в mp4 следующим образом:

ffmpeg -i ИМЯ_ФАЙЛА_ИСТОЧНИКА.ogv -c:v libx264 -preset veryslow -crf 22 -c:a libmp3lame -qscale:a 2 -ac 2 -ar 44100 ИМЯ_ФАЙЛА_РЕЗУЛЬТАТА.mp4

Как узнать кто и с каким ключом авторизовывался по ssh

Лог авторизации по ssh расположен по адресу /var/log/auth.log (либо его вариации типа /var/log/auth.log.1, /var/log/auth.log-20171020 при ротации логов). Если посмотреть его, то обнаружатся записи на подобии:

Oct 20 11:18:13 server sshd[27690]: Accepted publickey for denis from 127.0.0.1 port 1234 ssh2: RSA 12:34:56:78:90:ab:cd:ef:gh:ij:kl:mn:op:qr:st:uv
Oct 20 11:18:13 server sshd[27690]: pam_unix(sshd:session): session opened for user denis by (uid=0)
Oct 20 11:18:13 server systemd-logind[123]: New session 151 of user denis.
Oct 20 11:18:13 server systemd: pam_unix(systemd-user:session): session opened for user denis by (uid=0)

Трудность заключается в том, что мы видим, что под определённым IP (в примере выше 127.0.0.1) авторизовался клиент с помощью публичного ключа (publickey) под некоторым пользователем (denis), но какой именно клиент, а конкретнее — какой именно публичный ключ был использован для авторизации — не ясно.

Запись ssh2: RSA 12:34:56:78:90:… сходу нам ни о чём не говорит, ведь добавленные в ~/.ssh/authorized_keys публичные ключи имеют вид:

ssh-rsa AAAAAAAbnFij3rfsdoinsfdo3243SHDBSJJJS/*r3HJDD... email@server.loc

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

Читать дальше…