Назад | Перейти на главную страницу

ubuntu 18.04 ufw как разрешить локальные подключения 3306 к mysql?

Если я запустил эту команду:

mysql -u root -p -h 127.0.0.1 -P 3306

с правильным паролем (да, у меня правильный пароль) он говорит, что доступ запрещен

Я запускаю то же самое, просто сначала отключите ufw sudo ufw disable

затем приведенная выше команда, и она работает. Но: теперь ufw отключен: S

Что я действительно хочу сделать, так это подключиться через рабочую среду mysql с использованием ssh, но без полного отключения ufw и без разрешения доступа ssh к моей установке mysql?

это текущие настройки, которые у меня работают с mysql-workbench, но только если ufw отключен. Как только я включаю ufw, это перестает работать. И я не хочу просто открывать всем порты 3306, используя ufw. Я хочу закрыть все, кроме ssh, и позволить мне подключиться через ssh к порту 3306 mysql.

Чтобы разрешить подключение через адаптер обратной петли только через порт 3306, вы можете запустить следующее:

sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

iptables -A INPUT -p tcp -s 127.0.0.1 --dport 3306 -j ACCEPT

-s в данном случае адрес источника

Я обнаружил эту проблему и исправление буквально на днях ... так что вам повезло! Это НЕ проблема брандмауэра, а проблема плагина аутентификации.

Конфигурация по умолчанию не позволяет пользователю root войти в локальный экземпляр mysql, если он не использует файловые сокеты. Проверьте плагин аутентификации, войдя на локальный компьютер и выполнив mysql -u root -p (без указания хоста) и выполнив следующие действия:

use mysql;
select user, plugin from user;

Если вы заметили, пользователь root@localhost использует auth_socket плагин вместо mysql_native_password плагин. Просто изменив его, чтобы использовать mysql_native_password плагин, и его перезапуск решит вашу проблему:

use mysql;
update user set plugin='mysql_native_password' where user='root';
exit;
sudo service mysql restart

На этом этапе вы можете взломать верстак mysql и выполнить некоторую работу.