Работа с пользователями

Опубликовано admin в

Чтобы войти в phpMyAdmin от имени пользователя root MySQL, вам нужно будет переключить его метод аутентификации с auth_socketна, mysql_native_passwordесли вы этого еще не сделали. Для этого откройте приглашение MySQL из вашего терминала:

sudo mysql

Затем проверьте, какой метод аутентификации каждая из ваших учетных записей пользователей MySQL использует, с помощью следующей команды:

SELECT user,authentication_string,plugin,host FROM mysql.user;
Output
 +------------------+----------------------------------+-----------------------+-----------+
 | user             | authentication_string            | plugin                | host      |
 +------------------+----------------------------------+-----------------------+-----------+
 | root             |                                  | auth_socket           | localhost |
 | mysql.session    | *THISISNASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
 | mysql.sys        | *THISISPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
 | debian-sys-maint | *8486437DE5B001CA591363B64746D4C | mysql_native_password | localhost |
 | phpmyadmin       | *5FD2B7524254B3B1EA6D681503A5CA9 | mysql_native_password | localhost |
 +------------------+----------------------------------+-----------------------+-----------+ 5 rows in set (0.00 sec)

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';

Для MySQL 8 необходимо использовать алгоритм шифрования caching_sha2_password

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Затем запустите FLUSH PRIVILEGESкоманду , которая скажет серверу перезагрузить таблицы грантов и применить ваши новые изменения:

FLUSH PRIVILEGES;

Проверьте методы аутентификации, используемые каждым из ваших пользователей, еще раз, чтобы убедиться, что root больше не аутентифицируется с помощью auth_socketплагина:

SELECT user,authentication_string,plugin,host FROM mysql.user;

Если есть желание сменить допустимую длину это можно сделать следующей командой из под MySQL

SET GLOBAL validate_password_length=4;

Подробней тут

А вот так можно отключить проверку пароля на строгость. Запустить из под MySQL

uninstall plugin validate_password;

Сброс пароля Root (для MySQL 8.0)

Перейдите в режим skip-grant-tables, для этого в конфиг пропишите

[mysqld]

skip-grant-tables

Перезагрузите MySQL

systemctl restart mysql

Войдите в консоль MySQL и сбросьте пароль

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

Войдите в снова в MySQL но уже по root

mysql -u root

в mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

Отключите режим skip-grant-tables и перезагрузите MySQL

Добавить пользователя

Cоздайте нового пользователя и дайте ему надежный пароль:

CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';

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

1. Все привилегии

GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;

2. Только чтение

GRANT SELECT ON *.* TO 'sammy'@'localhost'

3. Чтение и добавление и удаление

GRANT SELECT, INSERT, DELETE ON *.* TO 'sammy'@'localhost'

Чтобы права вступили в силу выполняем:

FLUSH PRIVILEGES;

Вывести привилегии по пользователю

select * from mysql.user where User='sammy'\G;

Это список привилегий, которые вы можете предоставить:

ПривилегияЗначение
ALL [PRIVILEGES]Устанавливает все простые привилегии, кроме GRANT OPTION
ALTERПозволяет использовать ALTER TABLE
CREATEПозволяет использовать CREATE TABLE
CREATE TEMPORARY TABLESПозволяет использовать СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ
DELETEПозволяет использовать DELETE
DROPПозволяет использовать DROP TABLE
EXECUTEНе реализована
FILEПозволяет использовать SELECT … INTO OUTFILE и LOAD DATA INFILE
INDEXПозволяет использовать CREATE INDEX и DROP INDEX
INSERTПозволяет использовать INSERT
LOCK TABLESПозволяет использовать LOCK TABLES для таблиц, для которых у вас есть привилегия SELECT
PROCESSПозволяет пользователю видеть все процессы с помощью SHOW PROCESSLIST
REFERENCESНе реализована
RELOADПозволяет использовать FLUSH
REPLICATION CLIENTПозволяет пользователю спрашивать, где находятся подчиненные или главные серверы.
REPLICATION SLAVEТребуется для ведомых устройств репликации (для чтения событий двоичного журнала от ведущего устройства)
SELECTПозволяет использовать SELECT
SHOW DATABASESSHOW DATABASES показывает все базы данных
SHUTDOWNПозволяет использовать завершение работы MySQLadmin
SUPERПозволяет использовать операторы CHANGE MASTER, KILL, PURGE MASTER LOGS и SET GLOBAL, команду отладки MySQLadmin; позволяет подключиться (один раз), даже если достигнуто max_connections
UPDATEПозволяет использовать ОБНОВЛЕНИЕ
USAGEСиноним привилегий
GRANT OPTIONПозволяет предоставлять привилегии

Если надо предоставить для внешних пользователей, надо открыть для MySQL внешний порт и вместо localhost указывать конкретный IP по которому можно обращаться к БД.

После этого выйдите из оболочки MySQL:

exit

Теперь вы можете получить доступ к веб-интерфейсу, посетив доменное имя или публичный IP-адрес вашего сервера, а затем

/phpmyadmin

Шаг 3. Защита вашего экземпляра phpMyAdmin

Из-за своей повсеместности phpMyAdmin является популярной целью для злоумышленников, и вы должны быть особенно осторожны, чтобы предотвратить несанкционированный доступ. Один из самых простых способов сделать это — разместить шлюз перед всем приложением, используя встроенные .htaccessфункции проверки подлинности и авторизации Apache .

Для этого вы должны сначала разрешить использование .htaccessпереопределений файлов, отредактировав файл конфигурации Apache.

Отредактируйте связанный файл, который был помещен в ваш каталог конфигурации Apache:

sudo nano /etc/apache2/conf-available/phpmyadmin.conf

Добавьте AllowOverride Allдирективу в <Directory /usr/share/phpmyadmin>разделе файла конфигурации, например так:/etc/apache2/conf-available/phpmyadmin.conf

<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All
    . . .

Когда вы добавите эту строку, сохраните и закройте файл.

Для реализации внесенных изменений перезапустите Apache:

sudo systemctl restart apache2

Теперь, когда вы включили .htaccessиспользование для своего приложения, вам нужно создать его, чтобы реально реализовать некоторую безопасность.

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

sudo nano /usr/share/phpmyadmin/.htaccess

В этом файле введите следующую информацию:/usr/share/phpmyadmin/.htaccess

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user

Вот что означает каждая из этих строк:

  • AuthType Basic: Эта строка указывает тип аутентификации, который вы используете. Этот тип будет реализовывать аутентификацию по паролю с использованием файла паролей.
  • AuthName: Это устанавливает сообщение для диалогового окна аутентификации. Вы должны сохранить этот универсальный шаблон, чтобы неавторизованные пользователи не получали никакой информации о том, что защищается.
  • AuthUserFile: Это устанавливает местоположение файла пароля, который будет использоваться для аутентификации. Это должно быть за пределами каталогов, которые обслуживаются. Мы создадим этот файл в ближайшее время.
  • Require valid-user: Это указывает, что только аутентифицированным пользователям должен быть предоставлен доступ к этому ресурсу. Это то, что на самом деле мешает неавторизованным пользователям войти.

Когда вы закончите, сохраните и закройте файл.

Местоположение, которое вы выбрали для файла паролей, было /etc/phpmyadmin/.htpasswd. Теперь вы можете создать этот файл и передать его первоначальному пользователю с помощью htpasswdутилиты:

sudo htpasswd -c /etc/phpmyadmin/.htpasswd username

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

Если вы хотите , чтобы ввести дополнительный пользователь, вам необходимо сделать это без с -cфлагом, как это:

sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser

Теперь, когда вы заходите в подкаталог phpMyAdmin, вам будет предложено ввести имя и пароль дополнительной учетной записи, которые вы только что настроили:

https://domain_name_or_IP/phpmyadmin
phpMyAdmin apache пароль

После входа в аутентификацию Apache вы попадете на обычную страницу аутентификации phpMyAdmin, чтобы ввести свои учетные данные MySQL. Эта настройка добавляет дополнительный уровень безопасности, который желателен, так как phpMyAdmin страдал от уязвимостей в прошлом.

Сброс пароля

Официальный и простой способ сбросить пароль root на сервере ubuntu…

Если вы на 16.04, 14.04, 12.04:

sudo dpkg-reconfigure mysql-server-5.5

Если вы на 10.04:

sudo dpkg-reconfigure mysql-server-5.1

Если вы не знаете, какая версия mysql-сервера установлена, вы можете попробовать:

dpkg --get-selections | grep mysql-server

Обновленные примечания для mysql-server-5.7

Обратите внимание: если вы используете mysql-server-5.7, вы не можете использовать более простой метод dpkg-reconfigure, показанный выше.

Кроме того, вы можете использовать следующее:

sudo mysql_secure_installation

Это задаст вам ряд вопросов по обеспечению вашей установки (настоятельно рекомендуется), в том числе, если вы хотите предоставить новый пароль root.

Ошибка сложного пароля

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

Вот что я делаю, чтобы удалить плагин проверки пароля:

  1. Войдите на сервер MySQL под учетной записью root mysql -h localhost -u root -p
  2. Запустите следующую команду sql: uninstall plugin validate_password;


Рубрики: mySqlServer