未能联接到MySQL数据库省流版:
服务器没有开MySQL的端口。
之所以还要写一篇文章,是由于开端口只须要一分钟,而按照各类现象与线索推论出没有开端口则须要三个小时。
问题背景
在服务器上安装了Linux虚拟机,之后在虚拟机上安装MySQL。
之前仍然都是用xshell操纵MySQL,明天想使用Navicat联接。
my数据库
MySQL的数据库如下:
共两个数据库,一个myDB1,一个university数据库(其余为MySQL自带的数据库)
此时我MySQL上面的用户如图:
可以看见上面有三个用户,root,peng和user_for_db1。其中user_for_db1是之前构建的,按照名子可知,为user_for_db1赋于了myDB1数据库的所有权限,同时为peng用户赋于所有数据库的所有访问权限。
问题
在Navicat中,构建了两个联接,如图:
联接1:
可以看见联接成功,但是因为设置了访问权限easyphp连接数据库,所以只有myDB1一个数据库。这个联接是许久之前构建的,当时忘掉如何联接的了(果然还是要养成记录的好习惯)。
并且当用另一个用户联接的时侯,却提醒联接出错,如图:
另外也不是SSH联接的错误,由于都不行,这儿只是没放截图。
讨教大鳄
在向大鳄讨教过程中,并没有直接问为何连不上,由于好多背景会造成共同的问题,上来直接问常常讲不清背景。我先是注意到在XShell中,联接的端口是22,合同是SSH,而Navicat中的端口是3306,因而就先问了一下这两个端口的不同。
大鳄回答如下:
22这个端口,是用SSH连接服务器的默认端口;
3306这个端口,是MySQL的默认端口。
当时还并没有非常清楚,大鳄又来了一句:
3306可以改的
开启MySQL时候换个端口就行
听了这句话以后,我也排除了端口冲突的问题,由于这两个联接并没有同时打开。
然后向大鳄讲了一下背景,也就是上文的内容,大鳄听完后,也是不太清楚。。。。
峰回路转
虽然一开始就觉得这个问题有点奇怪,所以并没有很沮丧,不过看着大鳄跟我说的那句:3306可以改的,我深陷了思索。
MySQL如何晓得你把端口改了呢?
忽然又想到最初设置服务器的时侯,在安全组上面设置过一些端口
于是问了一下大鳄要不要在服务器上添加准许这个新端口
果不其然,须要在服务器上设置。
之后,就想着在服务器上添加一个新端口,尝试用新端口联接。
之后惊讶地发觉,我没有给MySQL开端口!!
发觉这点后,我并没有立即开放端口,而是开始思考easyphp连接数据库,我之前如何登陆的呢?
看着被容许的几个端口,尤其是22哪个端口,事情渐渐明朗了上去
我开了22的端口,而xshell也是用22联接的,也就是说,我用xshell联接,相当于是远程桌面。
我是先通过22端口,联接到远程桌面,也就相当于登陆到服务器这个计算机,之后在步入到mysql,这时的MySQL就相当于是远程计算机的本地应用了,所以不须要3306这个端口。
而且我一开始如何联接成功的呢?
就是这个
说实话想了很久也没想清楚,目前的推测是,在上图的安全组中(图7),有三个外网IP,有可能服务器觉得我这个联接属于外网联接,所以可以通过(只是猜测,具体缘由不清楚)。
扫尾
开放端口后,确实联接成功了,而且发觉没有任何数据库信息,于是通过网上查阅资料,晓得是须要如下操作,简单记录一下:
右键——编辑联接——数据库——选择对应的数据库(可能须要勾选使用自定义数据库列表)
总结添加一个端口只须要一分钟,但晓得为何添加,却须要三个小时。
暂无评论内容