centos8,先后裝了mysql-server又卸載了,裝了mariadb-server又卸載了。
最后又裝了mariadb-server,看了下版本,10.3.28
但是始終只能本機登錄,無法遠程登錄。
常用的那些方法都懂,都檢查了,木有問題。
但是,就是無法遠程登錄。
(本段落發個牢騷)有個現象挺煩人的:不少人,碰到問題時,就知道想辦法把問題給弄沒了,而不是真正的找到原因,
從根上解決問題。比如,這個不能遠程的問題,不少人看到是selinux阻止了mysql的端口,就直接把selinux給關掉了。問題
是沒了,但就沒想到為什么要有selinux,就不考慮到安全問題嘛。而在一個外文論壇上,看到了個回復,才是比較正確的方式:
用semanage 命令添加一個規則,允許mysql的端口。
我碰到的問題,開始和反復安裝,卸載不干凈有關系。最后一次安裝后,/etc下沒有my.cnf文件,只有my.cnf.d這個目錄
修改了目錄里的mariadb-server.cnf,先加了個bind-address=0.0.0.0,但是貌似沒起作用。
執行netstat -pan | grep 3306 顯示只監聽了本機地址。
經過n次嘗試后,還是在/etc下建了個my.cnf文件,里面只加了兩行:
[mysqld]
bind-address=0.0.0.0
然后重啟了mariadb服務,顯示監聽的地址沒問題了,但是還是無法遠程訪問。
因為之前用過ufw這個工具,比較簡單,就裝上了ufw:
ufw allow 3306 #執行這個命令添加例外
ufw status #查看結果,顯示已經允許3306端口了
但是。。。。。。。。。。還是無法遠程連接,客戶端報錯到時很明顯,直接無法連接,而不是需要密碼(密碼不對)
但是通過ufw取消之前添加的80端口,和啟用80端口,試了幾次,都起作用啊,為啥呢。。。
無意中又試了下firewall-cmd ,
firwall-cmd --list-all #結果顯示,允許的端口有80,但是沒有3306,這就奇怪了。。。。。
:::前段時間安裝80端口的相關應用時,還沒安裝ufw,都是通過firewall-cmd命令或iptalbes命令添加的例外
於是,通過firewall-cmd --add-port=3306/tcp --permanent 執行了下
再看firewall-cmd --list-all的結果,有3306了。再用遠程客戶端連接,一下就成功了。。。。
現在的問題是:ufw控制的結果為啥和firewall-cmd 控制的結果不一致呢。。。
解決問題期間,還碰到了個問題,更改mysql監聽端口為其它端口(3306以外的),啟動mysql時就直接報錯(permission denied)
后查明原因,通過semanage添加端口允許后,就可以了。
記得之前再ubuntu-server上安裝mariadb,配置文件是50開頭的配置文件,和現在這個版本的配置文件/路徑完全不一樣。
哎,這些配置真頭疼,變過來變過去的。