当前位置:首页 > 虚拟机 > 正文

虚拟机连接不上mysql


一、远程连接Mysql失败的解决方法今天在Ubuntu虚拟机上玩了一晚上mysql,然后尝试用Java连接。花了很长时间,失败了,但是在我同事配置的Debian上连接成功,这意味着有问题了。我的配置错误。纠结了半天,通过了解异常信息,我终于有了一个大概的猜测。
远程连接是输入MySQL所在主机的IP地址和端口来确定主机的逻辑地址,然后通过用户和密码指定要登录的用户。例如:Stringurl="jdbc:mysql://192.168.183.134:3306/mysql";即先在网络层连接IP地址为192.168.183.134的主机,然后连接该主机的指定端口3306(传输层),然后在传输层建立连接后,使用该账号登录在应用层获取密码并访问mysql数据库:Connectionconn=DriverManager(url,user,password);怀疑是端口设置有问题,然后在/etc/mysql/中。我在cnf中添加了port=3306,但是结果还是无法连接,并且对该端口的访问被拒绝。然后使用命令$netstat-apn找到一条关于3306端口的信息:tcp00127.0.0.1:33060.0.0.0:*听一下,这里提供的IP地址是127.0.0.1Socket编程,一般需要接收任何主机发送消息时,IP会被设置为0.0.0.0,而127.0.0.1(环回地址)意味着只能本地访问?然后当我打开同事的Debian查看mysql占用的端口时,果然是这样的:tcp000.0.0.0:210.0.0.0:*听着,经过一番搜索,得出的结论是mysql只对本地可用默认情况下访问,并且需要其他设置才能启用远程访问。从安全角度来看,这也是有道理的。设置方法仍然是修改配置文件/etc/mysql/[client]default-character-set=utf8[mysqld]default-storage-engine=INNODBcharacter-set-server=utf8collat​​ion-server=utf8_general_ciport=3306bind-address.=0.0.0.0utf8与本地插入汉字数据时,在mysql模式下输入大小写检查大小写时发现插入不兼容汉字和VARCHAR:Servercharacterset:latin1Dbcharacterset:latin1Clientcharacterset:terset:从“Linux”中选择utf8。有兴趣的话可以看一下,经过这次修改,前两组字符现在全部都是utf8了,并且支持中文。其他修改如我所说,将IP绑定到0.0.0.0,即接受任何地址的主机的连接,并将端口绑定到3306。但是仍然无法到达,但是这次错误信息发生了变化,显示user没有连接权限,也就是说该用户查找信息后只能本地连接,如下:
1.新建用户远程连接mysql数据库mysqlgrantallon*.*toteam@'%'identifiedby'java123'withgrantoption;QueryOK,0rowsaffected,1warning(0.00sec)mysqlflushprivileges;QueryOK,0rowsaffected(0.00)sec)
2.支持root用户权限远程连接mysql数据库mysqlrantallon*.*to'root'@'%'identifiedby'cplusplus'withgrantoption;QueryOK,0rowsaffected,1warning(0.01sec)mysqlflushprivileges;QueryOK,0rowsaffected(0.00sec)参考:如何配置允许远程通信的单元


二、如何连接虚拟机的mysql如何在虚拟机上连接mysql
首先需要在虚拟机中安装数据库mysql,并设置mysql的用户密码和权限
其次需要开放3306端口,并开启防火墙限制
执行上面两步1,就可以在虚拟机上连接mysql了
希望对你有帮助,请采纳,谢谢