在本地用 Navicat 链接远程数据库报错:Can't connect to MySQL server on 。。。

在腾讯云新买了一台服务器,环境都安装好了,在本地用 Navicat 链接数据库,就是链接不上,一直报错Can’t connect to MySQL server on 。。。搞了三四个小时,终于搞定,分享一下过程。html

1、检查用户受权
1.进入ubuntu mysql命令界面,查看root用户受权前端

show grants for 'root'@'%';

2.若是没有受权记录,新增用户mysql

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
username:你将建立的用户名,如root
host:指定该用户在哪一个主机上能够登录,若是是本地用户可用localhost,若是想让该用户能够从任意远程主机登录,可使用通配符%
password:该用户的登录密码,密码能够为空,若是为空则该用户能够不须要密码登录服务器

3.受权linux

GRANT ALL ON *.* TO 'username'@'%';

给予 username 用户 全部数据库的全部表格(.) 远程或者本地登陆(@’%’) 的全部权限(ALL)nginx

4.使用第一步再次查看受权web

show grants for 'root'@'%';

这个时候就有记录了。可是仍是链接不上,接下来就检查端口sql

2、开启Mysql 3306端口远程访问数据库

1.查看linux 版本ubuntu

sudo lsb_release -a

显示以下:vim

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

2.查看3306端口是否正常

netstat -an | grep 3306
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN

目前端口绑定的地址是本地,只能本地访问。(关键问题所在,因此我受权了仍是连不上)

3.修改配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

加#注释掉下行
bind-address = 127.0.0.1

4.重启mysql

/etc/init.d/mysql restart
[ ok ] Restarting mysql (via systemctl): mysql.service.

5.再次查看端口信息

netstat -an | grep 3306
tcp6       0      0 :::3306                 :::*                    LISTEN

这下能够远程访问了,问题解决。

要感谢这位兄弟,PatrickDing,也是猿粪,版本号都跟个人同样,原文连接:Ubuntu 16.04下开启Mysql 3306端口远程访问