Navicat远程连接管理MYSQL数据库

最近需要连远程的mysql,其实我比较喜欢装phpadmin用的,但是公司服务器上没装这个,所以只能选择客户端,之前用过navicat for mysql,感觉还不错,如果你也是osx,可以去这里下载:navicat for mac (含注册机)

navicat使用并不复杂,在输入host,帐号密码后,一直连接失败,如是就拿我阿里云上装的mysql测试了下,同样连接失败~,我记得之前在server上装mysql时好像没打开远程管理,所以按照这个思路去解决。

增加用户远程访问权限

方法一:修改user表host

本地登入mysql,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改为”%”,命令行输入mysql -u root -proot进入mysql命令行交互模式

1
2
3
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

方法二、直接授权(推荐)

命令行输入mysql -u root -proot进入mysql命令行交互模式:

1
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION;

方法一和二操作完后切记执行以下命令刷新权限

FLUSH PRIVILEGES

遇到了“Can’t connect to MySQL server on ‘42.96.x.x’ (61)”的错误

完成了前面的操作,去重新连接结果报上面的错误,查找了资料这样解决的,首先netstat -an | grep 3306查看3306端口,结果如下
如果结果显示类似:

1
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

从结果可以看出3306端口只是在IP 127.0.0.1上监听,所以拒绝了其他IP的访问。
修改my.cnf,命令sudo vi /etc/mysql/my.cnf,找到

1
bind-address  = 127.0.0.1

这句,注释掉这行,完成后:wq保存,然后sudo service mysql restart重启mysql服务。
重启好后再次运行netstat -an | grep 3306应该会看到显示

1
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

到这里再用navicat去连接试试,搞定~