
デフォルトの MySQL インストールを備えた Ubuntu 20.04.3 LTS で、apt パッケージ管理バージョンの MySQL サーバーを使用します。
netstat
MySQL サーバーがパブリック IPv6 インターフェイスにバインドされていることを示します。
tcp6 0 0 :::33060 :::* LISTEN 2485/mysqld
tcp6 0 0 :::3306 :::* LISTEN 2485/mysqld
ただし、次/etc/mysql/mysql.conf.d/mysqld.cnf
のように表示されます (簡潔にするためコメント行は削除されています)。
[mysqld]
user = mysql
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
MySQL などの承認されていないポートへの外部アクセスを拒否する iptables とアップストリーム ファイアウォール ルールを設定していますが、構成ファイルに従って MySQL 自体がシステム上の正しいインターフェイスにバインドされることを希望します。
今年 20.04.3 にアップグレードされた別のシステムでは、構成ファイルは実質的に同一であり、次のnetstat
ように表示されます。
tcp 0 0 127.0.0.1:33060 0.0.0.0:* LISTEN 1349/mysqld
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1349/mysqld
答え1
権限を/etc/mysql.cnf
0644 に変更することで解決しました。MySQL サーバーは、そのファイルがワールド書き込み可能/実行可能としてマークされていることを好まないようです。0777 としてマークされていましたが、私は絶対にそうしませんでした。apt パッケージからその方法でシステムにインストールされましたmysql-server
。
これはおそらく、現在(2021 年 12 月現在)Ubuntu Server 20.04.3 LTS システムが多数存在し、apt 経由で MySQL をインストールし、誤ってポート 3306 を世界に公開していることを意味します。デフォルトではルート パスワードがないため、MySQL がリモート システムからすぐに侵害される可能性があることも意味します。