Как установить 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 пользователя:

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

Безопасное хранение учётных данных в PHP

В веб-приложениях, как и в любом другом виде приложений, одной из самых сложных вещей является защита «секретных» данных. Этими данными могут быть ключи авторизации API, пароли БД и др. В идеале они не должны определяться в самом приложении, а загружаться из другого источника.

Хоть и множество проблем, связанных с защитой секретных данных, может быть устранено с помощью более менее «секретной обработки”, но, тем не менее, кажется, что всё ещё имеет место быть потребность в сохранении секретных данных прямо в коде. Использование такого рода паттерна, очевидно, не рекомендуется. В базе данных Common Weakness Enumeration есть даже запись об этом: CWE-798. Жёстко закодированные учётные данные могут представлять огромный риск, если злоумышленник каким-то образом смог получить доступ к коду и прочесть их.

Так что насчёт PHP?

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

Мы пройдёмся по нескольким хорошим методам хранения учётных данных, обсудим, что в них хорошего и плохого. Все они будут использовать простые методы хранения, основанные на коде или в соответствующем простом файле (например, в .env). Мы начнём с худшего варианта — сохранение учётных данных в текстовом виде в коде.

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

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

Не так давно в консоли стал наблюдать частичную потерю кириллицы, вероятно, после обновления. Метод, описанный в статье 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. На скринах есть ошибка в коде, кто заметит какая? 🙂

Новая версия Генератора запоминающихся паролей

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

  1. Увеличены чекбоксы в опциях, чтобы в них было легче попасть пальцем;
  2. Окно с опциями теперь закрывается при нажатии на пространство за пределами его;
  3. Если активирована опция генерации длинного пароля, то теперь он всегда умещается в экран;
  4. Откорректировано оформление и добавлено отображение индекса версии в окне опций;
  5. Добавлена кнопка «Копировать», с помощью которой можно скопировать сгенерированный пароль в буфер обмена;
  6. Добавлена опция показа поля с заметкой.

Обновление применяется автоматически, ничего специально для этого делать не нужно. Если вы, по-прежнему, видите старую версию приложения, то не отчаивайтесь, со временем оно обновится 🙂

Напоминаю, что Генератор запоминающихся паролей (https://ahrameev.ru/password/) теперь является приложением Progressive Web Apps, а значит кроме работы онлайн в браузере, вы можете его установить к себе на мобильное устройство, и пользоваться приложением в оффлайн. Для этого с Android или iOS устройства в браузере (лучше в Chrome) откройте генератор, после чего в меню браузера выберите «Добавить на рабочий стол». Теперь, запуская приложение «Генератор паролей» с рабочего стола (или меню приложений), вы можете пользоваться им без наличия доступа в интернет.

Генератор запоминающихся паролей обновлён!

Согласно метрике, самое популярное в Бложике — это Генератор запоминающихся паролей. Давненько не было у него обновлений, ведь казалось бы, что такого можно ещё было сделать, но таки можно. Генератор запоминающихся паролей теперь стал одним из Progressive Web Apps, что означает, что это уже не просто веб-страница, а приложение, которое можно установить будь то на Android или iOS, да даже на Windows, при этом для этого не нужно заходить в магазин приложений (Google Play или AppStore), а достаточно вызвать в меню мобильного браузера функцию «добавить на рабочий стол». После этого, запуская с рабочего стола, вы сможете пользоваться генератором даже в оффлайн. Кроме того, у приложения обновился дизайн, что может очень обрадовать любителей тёмных тем.

Ссылка на Генератор запоминающихся паролей

Онлайн версия будет работать как и прежде. По сути, приложение осталось всё той же веб-страницей, но получило ряд новых возможностей, что позволило сделать его устанавливаемым на устройства, а также работу без интернета.

А так приложение выглядит после установки на Android: