Mariadb

MariaDB 拒絕遠端連接

  • March 28, 2018

我經歷了很多教程和問題,但我仍然無法讓它工作。

我去過:

我在 Ubuntu 16.04 上安裝了 MariaDB。然後設置兩個使用者,其中一個是供公眾使用的,所以我可以在這裡發布。

使用者添加為:

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/

它根本沒有令人討厭的線條。

你檢查其他配置文件了嗎?

是的。他們也沒有違規的線路。

遠端登錄有用嗎?

不。

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

在我的情況下,錯誤的解決方案是配置文件中根本沒有[mysqld]部分。my.cnf添加這個解決了這個問題:

[mysqld]
bind-address = ::

不知道為什麼預設情況下沒有添加它。請注意,使用::over的原因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   

希望這對其他人有幫助。

引用自:https://serverfault.com/questions/808977