ubuntu 18.04 ufw 如何允许本地 3306 连接到 mysql?

ubuntu 18.04 ufw 如何允许本地 3306 连接到 mysql?

如果我运行这个命令:

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

使用正确的密码(是的,我的密码正确),它说访问被拒绝

我运行了同样的事情,只是先禁用了 ufw sudo ufw disable

然后执行上述命令,它就可以正常工作了。但是:现在 ufw 被禁用了 :S

我真正想要做的是使用 ssh 通过 mysql workbench 连接,但不完全禁用 ufw,并且不允许任何 ssh 访问我的 mysql 安装?

这些是目前适用于 mysql-workbench 的设置,但前提是禁用 ufw。一旦我启用 ufw,它就会停止工作。而且我也不想使用 ufw 向所有人开放 3306 端口。我想关闭除 ssh 之外的所有内容,让我通过 ssh 连接到 mysql 的 3306 端口。

在此处输入图片描述

答案1

要仅允许通过端口 3306 上的环回适配器进行连接,您可以运行以下命令:

sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp

答案2

前几天我发现了这个问题并修复了它...所以你很幸运!这不是防火墙问题,而是身份验证插件问题。

默认配置不允许“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 工作台并完成一些工作。

答案3

iptables -A 输入 -p tcp -s 127.0.0.1 --dport 3306 -j 接受

-s 在这种情况下是源地址

相关内容