Linux

[Tips] MySQL8をUbuntuにインストールした後に外部から接続できない場合の解決法

Tips

MySQL8をUbuntuにインストールした際に外部から接続できません。

Azureの仮想マシンで確認しています。

そこで取るべき対処方法を確認します。

外部からサクセスできない要因は3つあります。

要因1

MySQLが外部から受け付けない設定になっている。

これは設定変更が必要になります。

/etc/mysql/mysql.conf.d/mysqld.cnf を編集します。

#bind-address = 127.0.0.1
bind-address = 0.0.0.0

これは受け付けるIPアドレスです。指定することもできます。

要因2

MySQLに接続します。

mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+

すべてのユーザーがlocalhostからのみ受け付ける設定になっています。

外部から接続できるユーザーを追加するか既存のユーザーを外部から接続できるようにします。

新規ユーザー

新規にuser1を作成して対応します。

CREATE USER 'user1'@'%' IDENTIFIED BY 'P@ssw0rd';
GRANT ALL ON *.* TO 'user1'@'%';

MySQL8からは構文が微妙にことらるため昔の1ライナーのコマンドが通りません。

mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| user1 | % |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+

user1が外部接続可能な%で増えていることが分かります。

既存のユーザー

設定変更して外部から接続できるようにするには下記の設定を行います。

RENAME USER 'root'@'localhost' TO 'root'@'%';

rootの変更はセキュリティ的にも非常に危険ですのでお勧めはしません。

mysql> select user, host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
+------------------+-----------+

rootの設定を変更する場合にはパスワード設定を行う必要があります。下記を参考にパスワード設定を行います。

Ubuntu20.04でMySQL8のmysql_secure_installationでパスワードが設定されない。 - 技術的な何か。
Ubuntu20.04でMySQL8のmysql_secure_installationでパスワードが設定されない。 - 技術的な何か。

はじめに 久しぶりにMySQLをAzure VMのUbuntu20.04にインストールする機会がありました。 そこで、気になったことがありました。 インストール後にmysql_secure_insta

level69.net

これらの作業でrootが外部からアクセスできるようになります。

 

これで外部からのアクセスが可能になります。

 

-Linux
-