Linux中无法远程连接数据库问题的解决方法
起因
今天在ubuntu16.04环境下通过mysqlworkbench访问远程数据库时,发现无法连接问题,解决思路及方法记录如下,不足之处,请多指教。
问题
通过workbench输入密码访问时报这个错:
Yourconnectionattemptfailedforuser'root'fromyourhosttoserverat118.89.153.162:3306:Accessdeniedforuser'root'@'118.89.153.162'(usingpassword:YES)
思路
- 网络问题,更换网络之后重启workbench和MySQL服务进行连接,依旧是这个错。
- 密码错误,通过ssh远程登录服务器查看远程mysql的password,发现所填密码正确。
- 远程mysql没有访问权限,一般有两种方法:改表法和授权法 :
授权法:
第一步:尝试打开/etc/mysql/my.cnf配置文件,若文件不存在或者内容为空,则打开下面的文件路径:
sudovim/etc/mysql/my.cnf //或: sudovim/etc/mysql/mysql.conf.d/mysqld.cnf
第二步:在文件中查找下面一行,如果该行前没有加#,可在该行前添加#进行注释,保存退出。
bind-address=127.0.0.1
改表法:
mysql>usemysql; mysql>GRANTALLPRIVILEGESON*.*TO'root'@'%'WITHGRANTOPTION//赋予任何主机访问以及修改所有数据的权限 //例如,你想root用户使用root从任何主机连接到mysql服务器的话。 //GRANTALLPRIVILEGESON*.*TO'root'@'%'IDENTIFIEDBY'root'WITHGRANTOPTION; //如果你想允许用户root从ip为192.168.1.124的主机连接到mysql服务器,并使用123456作为密码 //GRANTALLPRIVILEGESON*.*TO'root'@'192.168.1.124'IDENTIFIEDBY'123456'WITHGRANTOPTION; mysql>flushprivileges//权限刷新,使修改立即生效 sudo/etc/init.d/mysqlrestart//或:servicemysqlrestart重启mysql服务
两种方法我尝试了一下,错误类型变成了:
Can'tconnecttoMySQLserveron...
看到这个错误我想到了远程服务器防火墙的原因,于是我有了下面的思路:
4.远程ubuntu服务器的防火墙原因导致无法本地访问远程的3306端口
sudoufwdisable//关闭防火墙,该命令需在root权限下执行,慎用
再次通过workbench连接远程mysql,连接成功。
原因
我的本地无法连接远程是因为远程ubuntu服务器防火墙默认禁止外部访问3306端口。
做法
sudoufwenable//开启防火墙 sudoufwallow3306//允许外部访问3306端口
总结
1.一般的无法连接远程mysql问题是由上面四个愿意导致的,这里不做赘述。
2.在遇到一个问题时首先要做的不是立刻找做法解决这个问题,而应该是思考为什么会出现这个问题,产生这个问题的原因,做到对症下药。
3.自己还有很多不足,戒骄戒躁才能进步。
附赠
Ubuntu常用ufw防火墙命令
//安装方法 sudoapt-getinstallufw //启用 sudoufwenable sudoufwdefaultdeny//开启了防火墙并随系统启动同时关闭所有外部对本机的访问,本机访问外部正常。 //关闭 sudoufwdisable //查看防火墙状态 sudoufwstatus //开启/禁用相应端口或服务举例 sudoufwallow3306//允许外部访问3306端口 sudoufwdeleteallow3306禁止外部访问3306端口 sudoufwallowfrom118.89.153.162//允许此IP访问所有的本机端口 sudoufwdenysmtp//禁止外部访问smtp服务 sudoufwdeleteallowsmtp//删除上面建立的某条规则 sudoufwdenyprototcpfrom10.0.0.0/8to192.168.0.1port22//要拒绝所有的TCP流量从10.0.0.0/8到192.168.0.1地址的22端口 //推荐使用 sudoapt-getinstallufw sudoufwenable sudoufwdefaultdeny
参考文章:https://www.nhooo.com/article/138876.htm
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。