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开头的配置文件,和现在这个版本的配置文件/路径完全不一样。
哎,这些配置真头疼,变过来变过去的。