web-dev-qa-db-ja.com

MariaDBはリモート接続を拒否します

私はたくさんのチュートリアルと質問を経験しましたが、それでも動作しません。

私は行ったことがある:

MariaDBをUbuntu 16.04にインストールしました。次に、2人のユーザーを設定します。そのうちの1人は一般向けで、ここに投稿できます。

ユーザーは次のように追加されます。

CREATE USER 'anon'@'%' IDENTIFIED BY '';

ローカル接続は機能しますか?

はい、サーバーのsshを介してユーザーとして接続できます。

mysql -u anon

ユーザーが正しく追加されたことを確認しましたか?

私はそう思う:

MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';
+------+------+
| User | Host |
+------+------+
| anon | %    |
| user | %    |
+------+------+
2 rows in set (0.01 sec)

ファイアウォールのブロックを解除しましたか?

ファイアウォールのブロックを解除する必要があるかもしれません:

[user]@popfreq:/etc/mysql$ firewall-cmd --add-port=3306/tcp 
The program 'firewall-cmd' is currently not installed. You can install it by typing:
Sudo apt install firewalld

ファイアウォールがインストールされていません。

my.cnfファイルで正しい設定を確認しましたか?

my.cnf[user]@popfreq:/etc/mysql)の設定が正しくないと、接続が拒否される可能性があります。これらはskip-networkingbind-addressです。私のファイルは次のようになります:

# The MariaDB configuration file
#
# The MariaDB/MySQL tools read configuration files in the following order:
# 1. "/etc/mysql/mariadb.cnf" (this file) to set global defaults,
# 2. "/etc/mysql/conf.d/*.cnf" to set global options.
# 3. "/etc/mysql/mariadb.conf.d/*.cnf" to set MariaDB-only options.
# 4. "~/.my.cnf" to set user-specific options.
#
# If the same option is defined multiple times, the last one will apply.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.

#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]

# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/

問題のある行はまったくありません。

他の設定ファイルを確認しましたか?

はい。彼らはまた問題のある行を持っていませんでした。

Telnetは機能しますか?

番号。

mint@mint-VirtualBox ~ $ telnet 128.199.203.208 3306
Trying 128.199.203.208...
telnet: Unable to connect to remote Host: Connection refused

これが何を意味するのか、どのように修正するのかわからない。

サーバーはどのインターフェースを使用していますか?

ローカルのみのようです:

[user]@popfreq:/etc/mysql/mariadb.conf.d$ Sudo netstat -ntlup | grep mysql
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16884/mysqld    

忘れずに再起動しましたか?はい。私はすべての試行の間にこれを使用して再起動しました:

Sudo service mysql restart
4
Deleet

私の場合のエラーの解決策は、[mysqld]構成ファイルにmy.cnfセクションがまったくないことでした。これを追加すると問題が解決しました:

[mysqld]
bind-address = ::

デフォルトで追加されなかった理由がわかりません。 ::よりも0.0.0.0を使用する理由は、::がIPv6でも機能するためです( mySQLマニュアルに記載 、ただしmariaDBマニュアルではない)。

これはtelnetも修正しました:

mint@mint-VirtualBox ~ $ telnet 128.199.203.208 3306
Trying 128.199.203.208...
Connected to 128.199.203.208.

そして、ネットワーク出力は今です:

[user]@popfreq:/etc/mysql$ Sudo netstat -ntlup | grep mysql
tcp6       0      0 :::3306                 :::*                    LISTEN      17609/mysqld   

これが他の誰かを助けることを願っています。

5
Deleet

同じ問題が(Debian Stretchで)発生し、ここで言及したすべての解決策を試しても成功しなかった後、私は最終的に this を見つけました。

/etc/mysql/mariadb.conf.d/50-server.cnfを編集し、bind-addressをコメント化して、sql-modeステートメントを追加します。

[...]
# 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

sql-mode="NO_ENGINE_SUBSTITUTION"

[...]

そして-それは働いた。

2
jhort