無法連接到在 Fedora 25 上執行的虛擬 mySQL 伺服器
嘗試在 mySQL 工作台上連接到我的虛擬 MySQL 伺服器 (VirtualBox Fedora 25)。
我正在使用 root 使用者,是的,我知道這不是最安全的,但對於我的測試來說它很好。
網上有很多關於這方面的資訊,但我讀到的所有東西都對我不起作用。
在安裝 mySQL 期間,我允許遠端連接到 root 使用者。
因此,我已使用以下命令授予 root 使用者所有權限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'my_password';
我也臉紅
PRIVILEGES
了我在我的
# vi /etc/my.cnf bind-address=0.0.0.0
我也開了一個埠
shell> iptables -A INPUT -m conntrack --ctstate NEW -m tcp -p tcp --dport 3306 -j ACCEPT shell> iptables-save
我正在將我在 ifconfig 下看到的 inet ip 地址輸入到 mysql 工作台中。
我做錯什麼了嗎?還是我錯過了一步?
我收到錯誤消息“長時間暫停後無法連接到 mysql 數據庫 (10060)。
虛擬伺服器上的 IP 地址與我的連接設備路由器管理頁面上列為“未知”的地址相同。
這些命令有效!
firewall-cmd --permanent --add-service=mysql firewall-cmd --reload
“無法連接到 mysql 數據庫 (10060)”表示這不是身份驗證問題。
試試
nc -v mysqlserver_ip_address 3306
。它應該說’Ncat: Connected to …’ 如果是這樣,那意味著你有一個 TCP 連接,所以問題出在 mysql 或工作台上。如果它說其他內容,則網路內容已損壞或伺服器未在該埠上偵聽。我懷疑你有一個防火牆丟棄你的數據包。長時間的停頓通常表示丟包,而不是連接被拒絕。如果您連接到非防火牆但未開放的埠,伺服器將很快向您發送拒絕。絕大多數情況下,如果連接超時,那是因為某些東西將數據包丟在地上,而不是禮貌地拒絕它們(在處理埠掃描您的盒子的人時,禮貌是非常愚蠢的)。這是防火牆經常做的事情。所以,這很可能是防火牆的事情。
你說你跑了
iptables -A ....
,這會將你的新行放在規則的末尾,這意味著它可能不會被使用,因為在你添加該規則之前可能有一個預設的 -j DROP 規則。此外, iptables-save 應該只是將配置列印到標準輸出,而不是實際將防火牆配置保存在正確的位置。試試看
iptables -L
排序有沒有錯。如果是,您可以使用-I
. 不過,更簡單的方法是執行iptables-save > some_temp_file
,然後編輯 some_temp_file,然後執行iptables-restore < some_temp_file
.如果您確實讓防火牆按照您想要的方式工作,請執行
iptables-save > /etc/wherever_it_goes
. 在 fedora/redhat/centos 上是iptables save > /etc/sysconfig/iptables
.