Добавить пользователя Mysql с другого хоста, не меняя пароля


Чтобы добавить пользователя MySQL, предоставив ему доступ с другого хоста, без изменения пароля, выполните следующие шаги:


1. Откройте MySQL командную строку

Подключитесь к вашему MySQL серверу с правами администратора:


mysql -u root -p



Вас попросят ввести пароль root.

фото: Добавить пользователя Mysql с другого хоста, не меняя пароля



2. Убедитесь, что пользователь уже существует

Можно проверить существование пользователя с помощью команды:


SELECT user, host FROM mysql.user WHERE user = 'имя_пользователя';



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



### 3. Добавьте или измените доступ для пользователя

Если пользователь уже существует, но доступ для нового хоста (например, `192.168.1.100`) отсутствует, добавьте новую запись с помощью:


CREATE USER 'имя_пользователя'@'192.168.1.100' IDENTIFIED BY 'тот_же_пароль';




ИЛИ, чтобы не менять пароль, используйте команду GRANT:


GRANT ALL PRIVILEGES ON *.* TO 'имя_пользователя'@'192.168.1.100';




Если объединить всё в одну команду:


GRANT ALL PRIVILEGES ON база_данных.* TO 'имя_пользователя'@'192.168.1.100' IDENTIFIED BY PASSWORD 'хэш_пароля';




(*Примечание*: Хэш пароля в MySQL можно получить из таблицы `mysql.user` — колонка `authentication_string`.)




4. Примените изменения

После добавления записи выполните:


FLUSH PRIVILEGES;



5. Проверьте соединение

Теперь пользователь должен иметь право подключаться к серверу MySQL с указанного внешнего хоста (`192.168.1.100`). Вы можете протестировать это, попробовав подключиться к серверу:


mysql -u имя_пользователя -p -h адрес_сервера



Убедитесь, что порт 3306 открыт

Если установка доступа для пользователя завершена, но он все равно не может подключиться, убедитесь, что на сервере открыт порт 3306 (или порт, который использует ваш MySQL). Для этого отредактируйте файл:


sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf


И убедитесь, что директива `bind-address` либо закомментирована, либо установлена на допустимый IP-адрес (например, 0.0.0.0 для всех подключений):


bind-address = 0.0.0.0


После этого перезапустите MySQL-сервер:


sudo systemctl restart mysql



Примечание

Не отключайте безопасность сервера, давая доступ с IP `%` (для всех IP). Убедитесь, что доступ происходит только с доверенных IP-адресов.



Пример

Допустим, вы хотите дать пользователю `myuser` доступ к базе `mydb` с IP `203.0.113.5` без изменения пароля. Следующие шаги нужны:


1. Узнайте текущий пароль:


SELECT authentication_string FROM mysql.user WHERE user='myuser' AND host='localhost';




2. Включите доступ:


GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'203.0.113.5' IDENTIFIED BY PASSWORD 'скопированный_хэш_пароля';



3. Примените изменения:


FLUSH PRIVILEGES;




И теперь пользователь может подключаться удаленно.


Потенциальные вопросы:


1. Как именно узнать хэш пароля пользователя, если он уже существует?

Хэш пароля можно посмотреть с помощью команды:

   SELECT user, authentication_string FROM mysql.user WHERE user = 'имя_пользователя';


2. Могу ли я разрешить подключение всем IP, но только временно?

Да, можно временно разрешить доступ из всех хостов, используя `%` вместо IP, например:

   GRANT ALL PRIVILEGES ON база_данных.* TO 'имя_пользователя'@'%' IDENTIFIED BY PASSWORD 'хэш_пароля';



Однако этом крайне рискованно с точки зрения безопасности, рекомендуется использовать конкретные IP.






Комментариев пока нет.


Leave a Reply

Your email address will not be published. Required fields are marked *

Пользовательское соглашение

Опубликовать