web-dev-qa-db-ja.com

ubuntu 18.04 ufw mysqlへのローカル3306接続を許可するにはどうすればよいですか?

このコマンドを実行すると:

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

正しいパスワードで(はい、正しいパスワードを持っています)アクセスが拒否されました

私はまったく同じことを実行します、最初にufwを無効にするだけですSudo ufw disable

次に上記のコマンドを実行します。しかし:ufwは無効になりました:S

私が本当にやりたいことは、sshを使用してmysqlワークベンチ経由で接続することですが、ufwを完全に無効にすることなく、mysqlインストールへのsshアクセスを一切許可しませんか?

これらは、mysql-workbenchを使用して動作する現在の設定ですが、ufwが無効になっている場合のみです。 ufwを有効にするとすぐに、これは機能しなくなります。そして、ufwを使用して、3306ポートをすべての人に開放したくありません。 ssh以外のすべてを閉じて、sshを介してmysqlの3306ポートに接続したいと思います。

enter image description here

1
Toskan

ループバックアダプターを介した接続をポート3306でのみ許可するには、次のコマンドを実行します。

Sudo ufw allow from 127.0.0.1 to 127.0.0.1 port 3306 proto tcp
5
eKKiM

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

この場合の-sは送信元アドレスです

0
Sam

先日、この問題と修正を発見しました...あなたは運がいいです!これはファイアウォールの問題ではなく、認証プラグインの問題です。

デフォルトの設定では、ファイルソケットを使用していない限り、「root」はローカルのmysqlインスタンスにログインできません。ローカルマシンにログインし、mysql -u root -p(ホストを指定せずに)を実行し、次を実行して、認証プラグインを確認します。

use mysql;
select user, plugin from user;

気づいた場合、ユーザーroot @ localhostauth_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ワークベンチをクラックして開いて、いくつかの作業を完了することができます。

0
TheCompWiz