如果我运行这个命令:
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 在这种情况下是源地址