Если я запустил эту команду:
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 и выполнить некоторую работу.