![mysql無法設定遠端訪問](https://rvso.com/image/1520082/mysql%E7%84%A1%E6%B3%95%E8%A8%AD%E5%AE%9A%E9%81%A0%E7%AB%AF%E8%A8%AA%E5%95%8F.png)
嘗試設定 mysql 以便從任何主機存取。
> 顯示 'root'@'%' 的補助金;
使用 GRANT 選項將 *.* 上的所有權限授予 'root'@'%'
我的cnf
[root@p419386 etc]# cat my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
/etc/my.cnf.d 中的檔案: client.cnf enable_encryption.preset mysql-clients.cnf server.cnf tokudb.cnf None 包含skip-networking
在伺服器.cnf
bind-address=0.0.0.0
我使用 CentOS 7,uname -a
給出
Linux p419386 2.6.32-042stab120.16 #1 SMP Tue Dec 13 20:58:28 MSK 2016 x86_64 x86_64 x86_64 GNU/Linux
MySQL 伺服器是10.1.21-MariaDB MariaDB Server
仍然無法從遠端主機連線:(
問題絕對不在網路或防火牆中。
以上設定是否正確?怎麼了?
畢竟問題找到了在 iptables 規則中。所以MySQL配置沒問題!
答案1
如果我們查看您擁有的配置(只要您明確發布它並告訴我們其中的內容),它看起來應該可以工作。至少官方 MariaDB 知識庫會表明這一點。
因此,您可能會遺失這些設定檔中的某些內容,或面臨不同的問題。雖然您確實說過該問題不能與網路或防火牆相關,但您的最新錯誤ERROR 2003 (HY000): Can't connect to MySQL server on '<host>' (113)
表明它仍然可能是一個問題。
您可以嘗試使用 mysql 指令連線到伺服器上的本機 IP (127.0.0.1)。查看我連結的問題,您將使用:
mysql -h 127.0.0.1 -u root -p
如果您能夠使用該命令建立連接,您就會知道您的 MariaDB 已啟動並正在運行並接受基於 IP 的連接。
現在可能發生的情況是,它沒有綁定到外部 IP 位址(也許嘗試僅設定您的外部 IP bind-host
),或者您的防火牆(用戶端或伺服器)或其他網路元件可能會幹擾並阻止連線。
若要檢查伺服器綁定的內容,您可以執行(以 root 身分或使用 sudo):
netstat -l -n -p
這應該會得到如下所示的一行:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
...
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1234/mysqld
...
如您所看到的,在本例中,MySQL 伺服器執行時間指向連接埠 3306 上的本機主機位址。