Mariadb
MariaDB 拒絕遠端連接
我經歷了很多教程和問題,但我仍然無法讓它工作。
我去過:
我在 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-networking
和bind-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
希望這對其他人有幫助。