昨天博主遇到一个很棘手的问题,就是如何使用Windows 去连接Ubuntu 下MySQL数据库,最后在网上查阅了相关的资料,浏览了很多前辈们的博客,终于解决这个问题了。
我的电脑配置情况是Windows10 ,Navicat Premium 12,Ubuntu 16.04 和MySQL5.7。
除了Ubuntu 16.04系统是必须的。其他的配置区别就不那么重要了。
在这个连接过程中,必须要保证几点:
- 1.Ubuntu的防火墙要关闭
- 2.MySQL开放root用户的访问权限
- 3.两台主机电脑必须互相能Ping通
我当初的问题就出在第三步了。在局域网下,必要要保证在同一个网段下,而且还要在同一个交换机下,如果不在一个交换机下,虽然可以ping通,但是Navicat是连不上的,会给你报错10061错误)
具体步骤如下:
1.配置Ubuntu的防火墙
打开3306端口:sudo ufw allow 3306
查看防火墙的状态:sudo ufw status
开启防火墙:sudo ufw enable
关闭防火墙:sudo ufw disable
设置默认的防火墙防御:sudo ufw default deny
2.修改数据库的权限配置
2.1 首先要连接数据库
mysql -u root -p
使用你的数据库
use mysql
2.2.查看root的权限
因为我已经设置过了,所以这里是host是%,局域网内的任何ip都可以访问。
select user,host from user;
其中%代表开放连接(就是谁都能连),localhost代表本机IP连接权限,也可以对某个IP进行授权。
2.3.对root用户授权,这里提供两种方法。
方法一、本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” ,将"localhost"改为"%"
use mysql;
update user set host = '%' where user = 'root';
方法二:直接授权(推荐)
grant all privileges on *.* to root@'%' identified by '你的密码' with grant option;
2.4刷新一下权限
flush privileges;
2.5.修改配置:
mysql连接配置文件存放在下面那个文件夹
/etc/mysql/mysql.conf.d
进入里面用vi打开文件
sudo vi mysqld.cnf
找到bind-address =‘一个IP’,在下面输入bind-address = 0.0.0.0然后保存退出。
2.6退出MySQL服务器,这样就可以在其它任何的主机上以root身份登录
EXIT
2.7.查看自己的mysql服务器是否运行
sudo netstat -lntp
这个表示你的mysql服务器在运行,授权和配置也搞好了,如果没显示重启mysql看看效果。
2.8查看你主机的IP输入:
ifconfig
3.通过Navicat 连接Ubuntu 下的MYSQL数据库。
在windows中的Navicat上输入基本上就搞定了。连接名自己取,端口3306,root不变,把localhost换成你主机的IP,输入密码。