目前的一个项目是在虚拟机中的linux下运行程序采集数据,之后将数据存入到宿主机的数据库中,做数据呈现,所以研究了以下虚拟机与宿主机之间数据库的相互访问。
前期提虚拟机中的linux系统与主机可以ping通(可以参照之前的文章),并且在两端都正确安装了MySQL。
Linux下MySQL安装:
http://blog.csdn.net/calmreason/article/details/33727085
Window下MySQL安装:
http://blog.csdn.net/calmreason/article/details/23966241
环境:主机为win8 64为,linux为CentOS 64位,主机中的数据库为MySQL2005,虚拟机中的数据库为...,主机ip为172.16.107.162,linux系统ip为172.16.107.161
1. 在mysql数据库中添加用户,命令为
mysql>grant all privileges on *.* to ‘usename’@’localhost\ip’ identified by “password”;
其格式为:grant 权限on数据库名.表名 ‘用户’@’登录主机’ identified by “用户密码”;
a. 其中登录主机是指从那台机器来访问数据库,例如我通过ip为172.16.107.161的linux来访问我ip为172.16.107.162时,这里登录主机为172.16.107.161。
b. 如果希望该用户可以通任何机器来远程登录数据库时,则将登录主机设为%即可。
2. 在window下运行cmd,输入
mysql -h 172.16.107.161 -u wyb -p XXXXXXX;
这里-h是数据库所在主机的ip,,我们这里是希望在通过window来访问linux系统中的数据库,所以这里的ip是linux系统的ip,可以正常运行(如果不能正常运行,可能是linux防火墙的问题,可以通过命令:/etc/init.d/iptable stop来关闭linux的防火墙)。
3. 在linux终端运行:
mysql -h 172.16.107.162 -u wyb -p XXXXXXXX;
这是会报错:ERROR 2003 (HY000): Can’t connect to MySQL server on ‘172.16.107.162’ (110)
通过网上查询得可能是window防火墙的问题,通过以下博客解决:
http://blog.csdn.net/litaoshoujiao/article/details/8530541
数据库server所使用的监听端口默认为3306,通过设置window防火墙允许3306端口,步骤如下:
控制面板->系统安全->防火墙->高级设置->入站规则->新建入站规则
入站规则设置如下:
第一步:选择端口;
第二步:选择TCP,选择特定端口,输入端口号为3306(如果有多个端口需要用逗号隔开,例如3306,3307);
第三步:选择允许连接;
第四步:选择应用规范(这里我全部选择);
第五步:输入规则名称(MySQ_Server)。
再次在linux终端运行:
mysql -h 172.16.107.162 -u wyb -p XXXXXXXX;
成功!