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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Anlior/article/details/79961939

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

一、检查用户授权
1.进入ubuntu mysql命令界面,查看root用户授权

show grants for 'root'@'%'; 

2.如果没有授权记录,新增用户

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

3.授权

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

给予 username 用户 所有数据库的所有表格(.) 远程或者本地登录(@’%’) 的所有权限(ALL)

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

show grants for 'root'@'%'; 

这个时候就有记录了。但是还是连接不上,接下来就检查端口

二、开启Mysql 3306端口远程访问

1.查看linux 版本

sudo lsb_release -a

显示如下:

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端口远程访问

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页