Установка и настройка MySQL и phpMyAdmin в Kali Linux
Оглавление
3. Установка MySQL в Kali Linux
4. В Kali Linux MySQL заменена на MariaDB
5. Настройка MySQL в Kali Linux
6. Запуск и включение автозапуска MySQL
7. Установка и изменение пароля MySQL. Сброс забытого пароля MySQL/MariaDB
9. Как сменить пароль пользователя MySQL в Kali Linux
10. Отсутствие пароля и пустой пароль MySQL
11. Как установить phpMyAdmin в Kali Linux
12. Как поменять URL адрес phpMyAdmin
13. Ошибка «Login without a password is forbidden by configuration (see AllowNoPassword)»
14. Как пользоваться phpMyAdmin в Kali Linux
16. Дополнительные материалы по MySQL
Для чего нужна MySQL
MySQL - это система управления базами данных, позволяет создавать, хранить, изменять базы данных. Очень часто используется в паре с PHP для хранения баз данных веб-сайтов. Также может использоваться в качестве хранилища данных любой программы или инструмента.
phpMyAdmin - это веб-приложение, написанное на PHP, которое является графическим интерфейсом для MySQL, позволяет работать с данными, в том числе просматривать их, изменять, импортировать и экспортировать в веб-интерфейсе. Для работы phpMyAdmin необходим веб сервер (Apache), а также PHP и MySQL.
Эта инструкция поможет вам лучше понимать MySQL и использовать для работы с базами данных. Также мы установим и настроим phpMyAdmin, чтобы получить графический интерфейс управления базами данных. Используя эти знания, вы сможете, например, запустить сайт на локальном компьютере, развернуть сайт, использующий базу данных из резервной копии.
Клиент и сервер MySQL
MySQL состоит из двух основных компонентов: сервер и клиент.
Сервер MySQL это та самая СУБД, которая обеспечивает работу баз данных. Сервер необходим для работы БД.
Клиент MySQL - это утилита для подключения к серверу. Клиент нужен если вы хотите подключаться к серверу MySQL в командной строке.
Установка MySQL в Kali Linux
Если вы уже работали с производными Debian (Linux Mint, Ubuntu), то в них присутствуют два пакета:
- mysql-server - сервер MySQL
- mysql-client - клиент MySQL
По умолчанию MySQL уже предустановлена в Kali Linux, но если у вас минимальная сборка, то вам может понадобиться установить СУБД вручную. Если вы попытаетесь установить пакет mysql-server, то получите следующую ошибку:
Пакет mysql-server недоступен, но упомянут в списке зависимостей другого пакета. Это может означать, что пакет отсутствует, устарел или доступен из источников, не упомянутых в sources.list E: Для пакета «mysql-server» не найден кандидат на установку
Дело в том, что в Kali Linux (и видимо в свежих Debian, а также во всех её производных) этот пакет называется по-другому:
- default-mysql-server (исполнимые файлы СУБД и настройка системной базы данных)
- default-mysql-server-core (только исполнимые файлы СУБД)
Поэтому для установки MySQL используйте следующую команду:
sudo apt install default-mysql-server
В Kali Linux MySQL заменена на MariaDB
Мы говорим MySQL, но MySQL полностью отсутствует в репозиториях Kali Linux. Независимо от того, была ли эта СУБД предустановлена в вашу систему или вы установили её вручную, вместо неё устанавливается MariaDB.
Вы можете убедиться в этом сами командой:
apt show default-mysql-server
Повторюсь, MySQL отсутствует в репозиториях Kali Linux и если вам нужна именно MySQL, а не MariaDB, то вам придётся это решать или подключением дополнительного репозитория, либо ручной установкой скаченного файла.
MariaDB - это тоже система управления базами данных. Она является ответвлениями от MySQL. Задача MariaDB выполнять все функции MySQL, но быть лучше. Название службы, название конфигурационных файлов не изменились. Просто по привычке я и дальше в этой инструкции буду говорить «MySQL», но мы будем работать исключительно с MariaDB.
Настройка MySQL в Kali Linux
Конфигурационные файлы MySQL:
- /etc/mysql/my.cnf (ссылка на /etc/alternatives/my.cnf)
- /etc/mysql/debian.cnf (устаревший файл, будет удалён в будущих версиях)
- /etc/mysql/conf.d/mysql.cnf
- /etc/mysql/conf.d/mysqldump.cnf
- /etc/mysql/mariadb.conf.d/50-client.cnf
- /etc/mysql/mariadb.conf.d/50-mysqld_safe.cnf
- /etc/mysql/mariadb.conf.d/60-galera.cnf
- /etc/mysql/mariadb.conf.d/50-mysql-clients.cnf
- /etc/mysql/mariadb.conf.d/50-server.cnf
Большинство настроек собраны в файле 50-server.cnf. По умолчанию служба MySQL прослушивает входящие подключения только на localhost (невозможны подключения с других компьютеров).
Запуск и включение автозапуска MySQL
Для запуска службы выполните команду:
sudo systemctl start mysql
По умолчанию все сетевые службы отключены от автозапуска, подробности смотрите в статье «Настройка и запуск Apache, MySQL, SSH и PostgreSQL в Kali Linux».
Для включения автозапуска MySQL при каждом включении компьютера выполните команду:
sudo systemctl enable mysql
Установка и изменение пароля MySQL. Сброс забытого пароля MySQL/MariaDB
Для только что установленной MySQL пароль пользователя root является пустым. Чтобы его изменить запустите и следуйте инструкциям:
sudo mysql_secure_installation
Подробное описание шагов и перевод инструкций смотрите в статье «Какой пароль рута MySQL в Kali Linux / Как сбросить пароль рута MySQL в Kali Linux». В этой же статье смотрите, как сбросить пароль, если вы его забыли.
Подключение к MySQL
Когда служба сервера MySQL запущена, то чтобы подключиться к ней, нужно использовать команду вида:
mysql -u ПОЛЬЗОВАТЕЛЬ -p -h ХОСТ
Все три опции являются необязательными.
Если пропущена опция -u, то в качестве имени пользователя MySQL будет использоваться текущее имя пользователя в ОС.
Опция -p означает, что выполняется вход с паролем. После этой опции не надо писать пароль - он будет запрошен в приглашении командной строки.
Если не указать опцию -h, то будет сделана попытка подключения к локальному серверу.
Попытка подключения, когда не установлен пароль пользователя:
mysql -u root
Это вызовет ошибку:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
Суть проблемы в том, что по умолчанию используется аутентификация unix_socket, то есть когда имя пользователя ОС совпадает с именем пользователя в MySQL/MariaDB, то пароль вовсе не нужно вводить. Но другой пользователи не может войти от имени другого пользователя, поэтому, чтобы войти как root, нужно использовать sudo. Подробности смотрите в статье «Аутентификация по паролю и unix_socket в MySQL и MariaDB».
Можно выбрать один из вариантов:
1. Всегда использовать sudo:
mysql -u root
2. Внести изменения в настройки MySQL, чтобы к СУБД могли подключаться и обычные пользователи.
3. Создать нового пользователя MySQL. Если это будет пользователь с таким же именем как ваше имя в ОС, то тогда можно использовать аутентификацию по unix_socket и не вводить пароль при подключении. Либо можно выбрать аутентификацию по паролю и использовать любое имя.
Для получения доступа к базе данных MariaDB обычному пользователю без использования sudo привилегий (это также установит пароль пользователя root), зайдите в приглашение командной строки MySQL
sudo mysql
и запустите следующие SQL команды:
use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'ПАРОЛЬ'; exit
Обратите внимание, что вам нужно ввести ПАРОЛЬ.
Затем попробуйте войти в базу данных без sudo, как показано ниже.
mysql -u root -p
Как сменить пароль пользователя MySQL в Kali Linux
Показанный выше способ использовался для смены типы аутентификации, но его же можно использовать для смены пароля.
Зайдите в приглашение командной строки MySQL (используйте либо sudo, либо опцию -u, чтобы выполнить вход как root):
mysql -u root -p
и запустите следующие команды:
use mysql; ALTER USER 'root'@'localhost' IDENTIFIED BY 'НОВЫЙ ПАРОЛЬ'; exit
Обратите внимание, что вам нужно ввести НОВЫЙ ПАРОЛЬ.
Также обратите внимание, что данным способом меняется пароль пользователя root. Если вы хотите сменить пароль другого пользователя MySQL, то в предыдущем SQL запросе укажите имя этого пользователя, например:
ALTER USER 'ПОЛЬЗОВАТЕЛЬ'@'localhost' IDENTIFIED BY 'НОВЫЙ ПАРОЛЬ';
Отсутствие пароля и пустой пароль MySQL
Если вы работаете исключительно на localhost’е и проблемы безопасности вас не волнуют, то для удобства можно установить пустой пароль (не делайте этого, если вы не до конца понимаете возможные риски):
ALTER USER 'root'@'localhost' IDENTIFIED BY '';
В этом случае при подключении можно не использовать опцию -p:
mysql -u root
Как установить phpMyAdmin в Kali Linux
По умолчанию phpMyAdmin не установлен в Kali Linux.
Установку можно выполнить двумя способами:
- Поскольку phpMyAdmin это веб-приложение на PHP, то можно просто скачать архив с исходным кодом (скриптами) и распаковать в любую папку на сервере.
- В большинстве дистрибутивов в стандартных репозиториях имеется установочный пакет phpMyAdmin. Преимущество этого подхода - вам не нужно следить за выходом новых версий phpMyAdmin и делать обновления вручную.
Я предпочитаю устанавливать phpMyAdmin из стандартных репозиториев (а WordPress, напротив, предпочитаю устанавливать просто копируя папку с файлами WordPress в папку веб-сервера; благодаря этому я контролирую процесс обновления; если действительно нужно обновиться, то всё это делается в удобном веб-интерфейсе самой WordPress).
У вас уже должны быть установлены Apache, MySQL, PHP. По умолчанию они уже имеются в Kali Linux, но если у вас версия с минимальным количеством пакетов, то установите их:
sudo apt install apache2 default-mysql-server php
Устанавливаем phpMyAdmin следующей командой:
sudo apt install phpmyadmin
Ответьте «Нет» на запрос о настройки с dbconfig-common:
Для перехода между пунктами используйте клавишу Tab, а для нажатия Enter.
Выберите «apache2».
Для выбора пунктов используйте клавишу Пробел, для перехода между пунктами используйте клавишу Tab, а для нажатия Enter.
Теперь, после включения веб-сервера, phpMyAdmin будет доступен по адресу https://IP_адрес_вашего_сервера/phpmyadmin/
А для локального сервера по адресу http://localhost/phpmyadmin/
Не забудьте запустить службы:
sudo systemctl start apache2 sudo systemctl start mysql
Внизу страницы phpMyAdmin вы можете увидеть сообщения на красном фоне:
Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину. Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.
Если вам интересно, какие расширенные функции имеются ввиду, то обратитесь к разделу «Дополнительная настройка phpMyAdmin».
Если вы хотите только их включить, то перейдите по ссылке http://localhost/phpmyadmin/chk_rel.php и кликните "Создать базу данных".
После этого все новые функции будут активированы.
Как поменять URL адрес phpMyAdmin. Как включить и отключить phpMyAdmin
Если при установке phpMyAdmin вы выбрали не настраивать его для использованием с веб-сервером Apache, то для включения phpMyAdmin используйте команду:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-enabled/
Чтобы изменения вступили в силу, перезагрузите веб-сервер.
Чтобы отключить phpMyAdmin, используйте команду:
sudo rm /etc/apache2/conf-enabled/phpmyadmin.conf
Чтобы изменения вступили в силу, перезагрузите веб-сервер.
В файле /etc/phpmyadmin/apache.conf есть важная строка:
Alias /phpmyadmin /usr/share/phpmyadmin
Суть её в том, что URL адресу /phpmyadmin (например, http://localhost/phpmyadmin) начинает соответствовать папка /usr/share/phpmyadmin. То есть файлы (скрипты) phpMyAdmin физически расположены в /usr/share/phpmyadmin, а не в директории веб-сервера (например, /var/www/html/).
Подробности о директиве Alias вы можете почитать в статье «Модуль Apache mod_alias».
Многие автоматические сканеры «скрытых» файлов и папок веб-сервера и сайтов обязательно проверяют директории «phpmyadmin», «pma» и другие подобные. Вы можете хорошо спрятать ваш phpMyAdmin изменив Alias. Например:
Alias /lkjgler94345 /usr/share/phpmyadmin
Теперь phpMyAdmin станет доступен по адресу http://localhost/lkjgler94345 - такое найти непросто.
Ошибка «Login without a password is forbidden by configuration (see AllowNoPassword)»
При попытке входа в phpMyAdmin с пустым паролем вы можете получить ошибку:
Login without a password is forbidden by configuration (see AllowNoPassword)
Суть в том, что вход без пароля запрещён конфигурацией phpMyAdmin.
Два способа исправления:
- установите пароль MySQL
- в конфигурации phpMyAdmin разрешите вход без пароля.
Чтобы разрешить вход без пароля в phpMyAdmin, откройте файл /etc/phpmyadmin/config.inc.php:
sudo gedit /etc/phpmyadmin/config.inc.php
Найдите вторую (их там две) строку
// $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
Раскомментируйте её, чтобы получилось:
$cfg['Servers'][$i]['AllowNoPassword'] = TRUE;
Сохраните и закройте файл config.inc.php.
Как пользоваться phpMyAdmin в Kali Linux
Работа в phpMyAdmin интуитивно понятна, поэтому сложностей не должно возникнуть.
Но по умолчанию в PHP установлены очень маленькие лимиты на размер обрабатываемого файла, поэтому если вы импортируете или экспортируете большую базу данных, то можете столкнуться с ошибкой phpMyAdmin «Incorrect format parameter», о том, как её исправить, смотрите эту статью.
Если вы много работаете с phpMyAdmin, то вы можете настроить его под себя, в том числе установить настройки по умолчанию для импорта и экспорта. Пример как это сделать в статье «Как в phpMyAdmin поменять настройки экспорта по умолчанию».
Альтернатива phpMyAdmin
Обратите внимание, что phpMyAdmin - это «прокладка», которая средствами PHP выполняет действия с базами данных. Поэтому появляются потери в скорости при обработке очень больших баз данных, а также можно столкнуться с лимитами PHP, установленными в его конфигурационном файле.
Импорт и экспорт больших баз данных в MySQL можно выполнять средствами самой MySQL - с СУБД поставляются вспомогательные утилиты, которые позволяют выполнять разнообразные действия. Об этом смотрите в статье «Как импортировать и экспортировать базы данных в MySQL или MariaDB», в которой рассказывается об утилите mysqldump.
Редактировать базы данных, вносить новые записи, удалять записи и прочее вы можете делать в командной строке с помощью SQL запросов. Об основах языка запросов SQL смотрите в статье «Изучение MySQL / MariaDB для начинающих».
Дополнительные материалы по MySQL
Вас также могут заинтересовать следующие статьи:
- Настройка и запуск сетевых служб в Kali Linux (Apache, MySQL, SSH, PostgreSQL, NetworkManager и Bluetooth)
- Азы работы с веб-сервером для пентестера
- Какой пароль рута MySQL в Kali Linux / Как сменить пароль рута MySQL в Kali Linux
- Пароли по умолчанию в Kali Linux
- Аутентификация по паролю и unix_socket в MySQL и MariaDB
Связанные статьи:
- Инструкция по установке веб-сервера Apache c PHP, MariaDB и phpMyAdmin в Windows. Настройка безопасности локального веб-сервера (99.2%)
- Как защитить веб-сервер Apache от взлома в Windows (99.2%)
- Установка MariaDB в Windows. Переход с MySQL на MariaDB в Windows (84.1%)
- Какой пароль рута MySQL в Kali Linux. Как сменить/сбросить пароль рута MySQL в Kali Linux (82.1%)
- Установка веб-сервера (Apache 2.4, MySQL 8.0, PHP 8, phpMyAdmin) на Windows 10 (75.1%)
- Внедрение команд ОС: понятие, эксплуатация, автоматизированный поиск уязвимости (RANDOM - 0.8%)