Mysql авторизация на php: Простая аутентификация на PHP / Хабр
Содержание
Как обезопасить phpMyAdmin |
Linode Docs
 results match 
 results
Нет результатов
Фильтры
Фильтры (
)
Все
0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>
Добавить теги
Все
0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>
Добавить авторов
Все
0, ‘текст-белый’: checkbox.checked, ‘текст-серый-400’: !checkbox.checked && checkbox.count === 0 }» style=letter-spacing:.07px x-text=checkbox.title>
Обновлено
, HackerSploit Эс
posible que usted esté viendo una traducción generada
автоматический. Estamos trabajando con traductores profesionales
пункт verificar лас traducciones де нуэстро ситио сети. Эсте проект
es un trabajo en curso.
Создать учетную запись Linode
чтобы попробовать это руководство с кредитом в долларах США.
Этот кредит будет применяться к любым действительным услугам, использованным во время вашего первого
дней.
Что такое phpMyAdmin?
phpMyAdmin — это бесплатное межплатформенное веб-приложение с открытым исходным кодом на основе PHP, которое предлагает простой, мощный и удобный графический интерфейс на основе браузера для взаимодействия и работы с базами данных MySQL.
Это делает процесс создания, изменения и настройки баз данных MySQL более простым и эффективным.
Зачем защищать phpMyAdmin?
phpMyAdmin широко используется разработчиками и системными администраторами как в рабочей среде, так и в среде разработки. Поэтому это жизненно важный компонент для защиты, учитывая характер данных, которые он использует для создания и управления.
Функции phpMyAdmin
Вот некоторые из основных функций phpMyAdmin:
- Выполнение стандартных запросов SQL.
- Создание, изменение и удаление пользователей и разрешений пользователей.
- Создание, изменение и удаление баз данных, таблиц, строк и полей.
- Поиск объектов в базах данных и таблицах.
- Создайте резервную копию баз данных MySQL.
Прежде чем начать
Чтобы установить и защитить phpMyAdmin, вам необходимо иметь сервер Linux со следующими запущенными службами:
- Apache2
- MySQL 8 или выше
- PHP
90 011 Три части программного обеспечения required также обычно называют стеком LAMP. Следующие шаги можно использовать в Ubuntu 20.04 для установки всего необходимого программного обеспечения:
Установите Apache 2.4 из репозитория Ubuntu:
sudo apt install apache2
Установите пакет
mysql-server
:sudo apt install mysql-server
Установка PHP, репозитория расширений и приложений PHP, поддержки Apache и поддержки MySQL:
sudo apt install php libapache2-mod-php php-mysql
При необходимости установите дополнительную поддержку cURL, JSON и CGI:
sudo apt install php-curl php-json php-cgi
Примечание
Эти шаги в этом руководстве были протестированы только на Ubuntu 20. 04. В разных дистрибутивах могут потребоваться дополнительные шаги для успешного завершения установки.
Создание пользователя MySQL
Всегда рекомендуется создавать отдельного пользователя базы данных для каждого приложения и избегать использования учетной записи пользователя root.
Чтобы создать нового пользователя MySQL, вы можете войти в MySQL с помощью следующей команды:
sudo mysql -u root
Создайте нового пользователя, введя следующую команду, заменив переменные
пользователя
ипароль
своими значениями.СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'user'@'localhost', ИДЕНТИФИЦИРОВАННОГО С caching_sha2_password BY 'password';
После создания пользователя назначьте права администратора. Это можно сделать, выполнив следующую команду:
ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА *.* 'пользователю'@'localhost' С ПРЕДОСТАВЛЕНИЕМ ОПЦИИ;
Выйдите из MySQL, выполнив следующую команду:
выход
Примечание
Дополнительно рекомендуется отключать вход в систему root.
Установить phpMyAdmin
phpMyAdmin можно установить, выполнив в терминале следующую команду:
sudo apt-get install phpmyadmin php-json php-curl php-mbstring php-zip php-gd
Укажите используемую технологию веб-сервера, убедитесь, что вы указали apache в качестве веб-сервера по умолчанию.
- В процессе установки вам будет предложено настроить базу данных для phpMyAdmin с помощью dbconfig-common. Выберите
да
, чтобы продолжить.
- Вам также будет предложено указать пароль приложения для phpMyAdmin. Введите надежный уникальный пароль для доступа к phpMyAdmin в качестве администратора и выберите
OK
.
После установки phpMyAdmin вам нужно будет включить модуль PHP
mbstring
, это можно сделать, выполнив в терминале следующую команду:судо phpenmod mbstring
После включения модуля
mbstring
вам потребуется перезапустить службу apache2. Чтобы перезапустить службу, выполните в терминале следующую команду:sudo systemctl restart apache2
Настройка phpMyAdmin для работы с Apache2
Чтобы разрешить доступ phpMyAdmin к Apache2, необходимо создать символическую ссылку для некоторых файлов конфигурации, чтобы phpMyAdmin мог получить к ним доступ. Это можно сделать, введя следующую команду:
sudo ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf-available/phpmyadmin.conf
После создания символических ссылок в phpMyAdmin должны быть включены файлы конфигурации, а apache2 необходимо перезапустить:
sudo a2enconf phpmyadmin sudo systemctl перезагрузить apache2
После перезапуска Apache2 домашняя страница phpMyAdmin будет свободно доступна в вашем веб-браузере с использованием следующего синтаксиса:
http:///phpmyadmin
Вход в систему может быть выполнен с использованием учетных данных, которые были созданы в ответ на приглашение при установке phpMyAdmin.
Примечание Хотя это не включено в это руководство или в базовую установку phpMyAdmin, настоятельно рекомендуется установить SSL/TLS перед вводом каких-либо учетных данных через http
, вместо этого используя только https
на порту 443
.
Изменение псевдонима phpMyAdmin
Первым шагом в обеспечении безопасности phpMyAdmin является изменение псевдонима каталога по умолчанию, который используется для доступа к phpMyAdmin. По умолчанию любой пользователь может получить доступ к phpMyAdmin, обратившись к URL-адресу сервера: https://
Это представляет угрозу безопасности, поскольку злоумышленники знают имя каталога и могут получить к нему доступ без ограничений.
Чтобы смягчить это, вы можете выполнить следующие действия, чтобы создать новый псевдоним для изменения URL-адреса, по которому осуществляется доступ к странице входа:
Откройте файл /etc/phpmyadmin/apache.conf и используйте текстовый редактор по вашему выбору, чтобы найдите раздел
Alias
, который по умолчанию выглядит следующим образом:- Файл: /etc/phpmyadmin/apache. conf
1 2 3 4 5 6 7
# Конфигурация Apache по умолчанию для phpMyAdmin Псевдоним /phpmyadmin /usr/share/phpmyadmin <Каталог /usr/share/phpmyadmin> Параметры SymLinksIfOwnerMatch DirectoryIndex index.php
Рекомендуется добавить к первой записи phpmyadmin
Alias
символы, сгенерированные генератором случайных строк, для редактирования и создания суффикса для псевдонима, как показано в следующем файле:- Файл: /etc/phpmyadmin/apache.conf
1 2 3 4 5 6 7
Конфигурация Apache по умолчанию для phpMyAdmin Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin <Каталог /usr/share/phpmyadmin> Параметры SymLinksIfOwnerMatch DirectoryIndex index. php
После создания псевдонима перезапустите apache:
sudo systemctl reload apache2
Псевдоним теперь будет использоваться в качестве каталога для доступа к домашней странице phpMyAdmin.
Настройка аутентификации на основе пароля
В качестве дополнительного уровня безопасности вы также можете использовать функцию аутентификации apache2 для интеграции формы аутентификации имени пользователя и пароля, которая будет настроена для обеспечения дополнительного уровня защиты каталога/URL phpMyAdmin.
Сначала добавьте параметр
AllowOverride
в конфигурацию каталога в файле конфигурации apache2 phpMyAdmin, найденном в/etc/phpmyadmin/apache.conf
. Это позволит вам переопределить любые конфигурации apache2, указанные в файле .htaccess. Ваш файлapache.conf
должен отражать следующее:- Файл: /etc/phpmyadmin/apache. conf
1 2 3 4 5 6 7 8 9
# Конфигурация Apache по умолчанию для phpMyAdmin Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin <Каталог /usr/share/phpmyadmin> Параметры SymLinksIfOwnerMatch DirectoryIndex index.php Разрешить переопределить все
Теперь вы можете настроить аутентификацию apache2, создав файл конфигурации .htaccess в каталоге phpMyAdmin по умолчанию. Необходимо создать файл
/usr/share/phpmyadmin/.htaccess
. После создания файла вы можете создать конфигурацию аутентификации, как указано ниже:- Файл: /usr/share/phpmyadmin/.htaccess
1 2 3 4
Тип аутентификации Базовый AuthName "Держись подальше" AuthUserFile /etc/phpmyadmin/. htpasswd Требовать действительного пользователя
После создания конфигурации вам необходимо создать пользователя и пароль для формы аутентификации. Как указано в файле
/usr/share/phpmyadmin/.htaccess
, файл .htaccess, содержащий учетные данные, будет храниться в папке/etc/phpmyadmin/.htpasswd
. Для создания пользователя и пароля можно использовать утилитуhtpasswd
следующим образом, заменивsudo htpasswd -c /etc/phpmyadmin/.htpasswd <пользователь>
Вам будет предложено указать новый безопасный пароль. Рекомендуется, чтобы этот пароль отличался от пароля phpMyAdmin.
Теперь вы можете перезапустить apache2, чтобы применить конфигурацию и активировать дополнительный уровень аутентификации.
sudo systemctl перезагрузить apache2
Ограничение доступа к определенному IP-адресу
Дополнительная мера безопасности, которую вы можете предпринять, — это ограничить доступ phpMyAdmin к определенному IP-адресу или набору IP-адресов. Это отличная конфигурация безопасности, если у вас есть статический IP-адрес, который не меняется, однако, если вы используете динамическую конфигурацию IP, вы можете оказаться заблокированным при изменении IP-адреса.
Чтобы настроить ограничение на основе IP, выполните процедуры, описанные ниже:
Доступ и ограничение на основе IP можно настроить в файле
/etc/phpmyadmin/apache.conf
в разделе/usr/share/phpmyadmin
. конфигурация каталога. Чтобы запретить доступ ко всем IP-адресам и предоставить доступ к определенному IP-адресу или подсети, добавьте в файл следующую конфигурацию, показанную ниже, при этом заменяя IP-адрес своим собственным IP-адресом или IP-адресами:- Файл: /etc/phpmyadmin/apache.conf
1 2 3 4
Запретить заказ, Разрешить Запретить от всех Разрешить с 192. 168.1.1
Теперь полный файл конфигурации должен выглядеть следующим образом:
- Файл: /etc/phpmyadmin/apache.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
Псевдоним /phpmyadmin-jwef82r68662b /usr/share/phpmyadmin <Каталог /usr/share/phpmyadmin> Параметры SymLinksIfOwnerMatch DirectoryIndex index.php Разрешить переопределить все Разрешить переопределить все # ограничить libapache2-mod-php файлами и каталогами, необходимыми pma
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/: /usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/:/usr/share/php/PhpMyAdmin/:/usr /share/php/Symfony/:/usr/share/php/Twig/:/usr/share/php/Twig-Extensions/:/usr/share/php/ReCaptcha/:/usr/share/php/Psr/Container /:/usr/share/php/Psr/Cache/:/usr/share/php/Psr/Log/:/usr/share/php/Psr/SimpleCache/ ЕслиМодуль> Порядок Запретить, Разрешить Запретить от всех Разрешить с 192. 168.1.1 Каталог> # Запретить веб-доступ к каталогам, которым это не нужно <Каталог /usr/share/phpmyadmin/templates> Требовать все отказано Каталог> <Каталог /usr/share/phpmyadmin/libraries> Требовать все отказано Каталог>
После добавления конфигурации IP-адреса перезапустите apache2, чтобы применить ее:
sudo systemctl reload apache2
Эта конфигурация запретит доступ всем, кроме тех, которые имеют указанный вами IP-адрес или совпадают с ним. Если неуказанный IP-адрес попытается получить доступ к phpMyAdmin, он получит Запрещено
ответ.
Пользовательская конфигурация PHP
Вы также можете добавить определенные конфигурации PHP, чтобы сделать phpMyAdmin намного более безопасным, удалив всю информацию о сервере или системе и изменив параметры аутентификации cookie.
Чтобы добавить наши пользовательские параметры PHP, вам необходимо изменить файл
/etc/phpmyadmin/config. inc.php
. В файле вам нужно будет создать раздел для пользовательской конфигурации, который содержит следующее:- Файл: /etc/phpmyadmin/config.inc.php
1 2 3 4 5 6 7 8
/* Пользовательская конфигурация безопасности */ $cfg['LoginCookieValidity'] = 14400; $cfg['LoginCookieRecall'] = ложь; $cfg['AllowUserDropDatabase'] = ложь; $cfg['ShowServerInfo'] = ложь; $cfg['RestrictPaths'] = да;
Эти параметры конфигурации изменяют срок действия файлов cookie по умолчанию, автоматически отключая пользователей по истечении заданного периода времени. Это также не позволит пользователям удалять базы данных и пропустит информацию о сервере из phpMyAdmin.
После добавления конфигураций перезапустите apache2, чтобы применить изменения:
sudo systemctl перезагрузить apache2
Эта страница была первоначально опубликована на
безопасность
веб сервер
апач
php
Присоединяйтесь к беседе.
Прочитайте другие комментарии или разместите свои ниже. Комментарии должны быть уважительными,
конструктивны и соответствуют теме руководства. Не публиковать
внешние ссылки или реклама. Прежде чем публиковать, подумайте,
комментарий будет лучше адресован, связавшись с нашим
Служба поддержки или запрос на
наш
Сайт сообщества.
Система комментариев Disqus для Linode Docs требует принятия
Функциональные файлы cookie, которые позволяют нам анализировать использование сайта, чтобы мы могли
измерять и улучшать производительность. Для просмотра и создания комментариев к этому
статью, пожалуйста
обновить настройки файлов cookie
на этом веб-сайте и обновите эту веб-страницу. Обратите внимание: у вас должен быть
В вашем браузере включен JavaScript.
Включите JavaScript для просмотра
комментарии от Disqus.comments от Disqus
Disqus
Как предоставить все права доступа к базе данных в MySQL
Чтобы начать редактирование привилегий в MySQL, вы должны сначала войти на свой сервер, а затем подключиться к клиенту mysql
. Как правило, вам нужно подключиться с root
или любой другой учетной записью, которая является вашей основной, начальной учетной записью «суперпользователя», которая имеет полный доступ на протяжении всей установки MySQL.
Обычно пользователю root
будет назначен пароль аутентификации при установке MySQL, но если это не так, вам следует предпринять шаги для повышения безопасности, добавив паролей root
, как показано в официальной документации.
Подключение к инструменту командной строки MySQL
В этом примере мы предположим, что root
является основной учетной записью MySQL. Чтобы начать использовать инструмент командной строки MySQL ( mysqlcli
), подключитесь к серверу как пользователь root
, затем введите команду mysql
:
$ mysql Добро пожаловать в монитор MySQL. Команды заканчиваются на ; или \г. Ваш идентификатор подключения к MySQL — 112813. Версия сервера: 5. 5.43-0ubuntu0.14.04.1 (Ubuntu) [...] mysql>
В случае успеха вы увидите некоторый вывод о вашем соединении с MySQL и увидите подсказку mysql
.
Примечание. В случае, если вы не можете напрямую подключиться к серверу в качестве пользователя root до подключения к
mysql
, вы можете указать пользователя, которого вы хотите подключить , как , добавив -- пользователь =
флаг:
$ mysql --user=имя пользователя
Предоставление привилегий
Теперь, когда вы находитесь на mysqlcli
, вам нужно только ввести команду GRANT
с необходимыми параметрами, чтобы применить соответствующие разрешения.
Типы привилегий
Команда GRANT
может применять широкий спектр привилегий, от способности СОЗДАВАТЬ
таблиц и баз данных до чтения или записи ФАЙЛОВ
и даже ВЫКЛЮЧЕНИЕ 9009 6 сервер. Команде доступно множество флагов и опций, поэтому вы можете ознакомиться с тем, что
GRANT
действительно можно сделать, просмотрев официальную документацию.
Привилегии для конкретной базы данных
В большинстве случаев вы будете предоставлять привилегии пользователям MySQL на основе конкретной базы данных
, к которой эта учетная запись должна иметь доступ. Обычной практикой, например, является то, что каждая уникальная база данных MySQL на сервере имеет своего собственного уникального пользователя
, связанного с ней, так что только один единственный пользователь
имеет доступ для аутентификации к одному единственному база данных
и наоборот.
до предоставьте все привилегии
пользователю
, позволяя пользователю полное управление по сравнению с конкретной базой данных , используйте следующий синтаксис:
MySQL> Предоставление всех привилегий на базе данных. ;
С помощью этой команды мы сказали MySQL:
-
ПРЕДОСТАВИТЬ
ПРИВИЛЕГИИ
типаВСЕ
(таким образом, все, конечно). Примечание. Для большинства современных установок MySQL не требуется дополнительныйПРИВИЛЕГИИ
ключевое слово. - Эти привилегии предназначены для
имя_базы_данных
и применяются ко всем таблицам этой базы данных, на что указывает.*
последующий код. - Эти привилегии назначаются
имени пользователя
, когда этоимя пользователя
подключено локально, как указано@'localhost'
. Чтобы указать любой действительный хост, замените'localhost'
на'%'
.
Вместо предоставления всех привилегий всей базе данных, возможно, вы хотите предоставить пользователю tolkien
только возможность читать данные ( SELECT
) из таблицы авторов
базы данных books
. Это легко сделать следующим образом:
mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА books.authors TO 'tolkien'@'localhost';
Создание другого суперпользователя
Хотя это и не особенно безопасно, в некоторых случаях вы можете захотеть создать еще одного «суперпользователя», который имеет ВСЕ привилегии во ВСЕХ базах данных на сервере. Это можно сделать аналогично предыдущему, но заменив имя_базы_данных
со звездочкой подстановочного знака:
mysql> ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА *.* 'tolkien'@'%';
Теперь tolkien
имеет те же привилегии, что и стандартная учетная запись root
, будьте осторожны!
Сохранение изменений
В качестве последнего шага после любых обновлений прав пользователя обязательно сохраните изменения, введя команду FLUSH PRIVILEGES
из командной строки mysql
:
mysql> FLUSH PRIVILEGES;
Запрос выполнен успешно, затронуто 0 строк (0,01 сек.