通过网络连接MySQL服务器

因为一段时接没有用MySQL,有点遗忘,遇到些小问题,在这里总结下。

目标:使宿主机(OS X)下的Workbench访问VirtualBox VM(Ubuntu 14.04)中部署的MySQL 5.6服务器。

1. 虚拟机网络设置

首先确定Virtualbox中VM的网络设置,设置为Bridged Adaptor(桥接适配器)。这样虚拟机可以独立于宿主机存在同一网段中,获得自己的ip地址,且宿主机可以和虚拟机双向通信,同时宿主机和虚拟机都可以访问外网。

对于家庭网络环境,可以不为虚拟机设置静态ip,因为虚拟机很可能一直会获得相同的ip。机器加入网络时,会尝试发送一个带有上次ip地址的DHCP请求,因为是家庭网络,网段内机器数量有限,上一次登录使用的ip地址被其他机器占用的可能性不大。如果ip发生改变,也可以修改Workbench的连接设置。

如果需要设置静态ip地址:

  • ip地址:确保虚拟机的ip地址和宿主机的ip地址在同一网段内

  • 网关地址:路由器的内网ip地址

  • DNS:查询当地ISP的DNS地址,或者直接填入路由器的内网ip地址,一般路由都有DNS代理功能

最后检查宿主机和虚拟机是否能相互ping通,是否都能访问外网。

2. 设置MySQL服务器

需要做两件事儿。第一,MySQL默认和localhost绑定,不监听任何来自网络的请求。以Ubuntu为例(其他发行版的MySQL配置文件位置可能不一致):

$ sudo vi /etc/mysql/my.cnf

注释掉这行:

bind-address    = 127.0.0.1

第二件事,要为一个用户设置远程访问的权限。首先以MySQL的root用户从客户端登录MySQL,如果要为root用户设置远程访问权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

如果想要建立一个新的远程登录用户’new_user’:

CREATE USER 'new_user'@'%' IDENTIFIED BY 'password_to_be_set';
GRANT ALL PRIVILEGES ON *.* TO 'new_user'@'%';
FLUSH PRIVILEGES;

这里通配符’%’表示任何主机。[WITH GRANT OPTION]表示权限传递。‘*.*’表示privilege level。关于MySQL用户管理和SQL语法的细节,参见文档:

重启MySQL服务。

3. 防火墙

防火墙可能设置了一些规则屏蔽了MySQL监听端口的正常通信。因为Ubuntu 14.04的防火墙默认是关闭状态,这里不需要做任何事情。

最后确保连接设置得与MySQL服务器的ip与端口一致,应该就可以正常连接到服务器了。

    原文作者:bedew
    原文地址: https://segmentfault.com/a/1190000004310251
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞