今天在阿里云上搭建lnmp,搭建完了,想用本地navicat连接远程的mysql数据库,可是怎么样也连接不上,检查原因:
原因一:是不是mysql没有配置远程访问的帐号?
解决:
访问phpmyadmin。在用户里面,看看有没有一个帐号的主机值是“%”这样的帐号。“%”是指这个帐号能远程连接mysql,其他的localhost等代表该帐号只能本地访问mysql数据库。
如果没有“%”远程访问的用户,那么我们就需要新增一个这种用户了。
(如果没有phpmyadmin怎么办?直接用linux的mysql来安装)
mysql>GRANT ALL PRIVILEGES ON *.* TO admin@"%" IDENTIFIED BY 'something' WITH GRANT OPTION; mysql>flush privileges;
加上了这个远程的用户,可是发现还是连接不上...接着找原因:
原因二:是不是mysql监听的不是3306这个端口?
查看端口:netstat -[atunlp]
看看mysql是不是对应3306这个端口。。还有,记得看3306前面是不是0.0.0.0这个ip,如果不是,那么就需要修改一下my.cnf这个文件了。
因为如果是127.0.0.1这样的ip,说明只是监听本机的请求的3306端口。所以远程是访问不了的。
修改my.cnf文件:文件一般都在/etc/my.cnf
在my.cnf里面找到bind-address,修改成bind-address=0.0.0.0;
原因三:服务器防火墙阻止了远程访问3306这个端口。
这个问题,需要去修改服务器的防火墙了
/etc/sysconfig/iptables
找到这个文件,打开,看看里面的3306端口的配置:
-A INPUT -P tcp -m tcp --dport 3306 -j DROP
把DROP改成ACCEPT就可以了。
这样,远程就能连接到mysql数据库了!