不想浪费大家时间,我这文章记录了我在vagrant上架的mysql远程连接不上的问题,不过我在整理时发现这个下面这个链接,如果我一开始能找到这个我就不会绕那么多弯了。不想看我是怎么一步步调错过程的请直接看下面地址,我也将内容复制到了地址下面了。自己调试过程有点长,当记录吧,有兴趣的可以看下,也许对你有帮助
vim /etc/my.cnf

注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1
保存退出。
mysql -uroot -p123456

为需要远程登录的用户赋予权限:

复制代码代码如下:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "123456";
mysql> flush privileges;
 
远程登录命令:

mysql -h 223.4.92.130 -uroot -p(-h后跟的是要登录主机的ip地址)
 
 
 

 
 我的实现操作调试过程上面看懂了解决问题了可以下面的不用看。
 
 
我的实际情况说明
用第三方的软件去登陆服务器上的数据库mysq,第三软件为navicat
 
 
环境:mac os 10.11.5   vagrant centos7  box是德国的(语言找过来了应该影响不大) lnmp 一键安装版本
 
原因:要将数据库的结构同步到另一个数据库   实现方法用navicat 这个软件进行(数据结构同步自行搜索)
 
问题:安装并破解navicat 后一直登陆不了mysql 提示不能远程连接 (mac下的破解过过程自己搜索)
 
错误提示:
 
 
首先我的目标ip地址是192.168.10.10(本地的测试服务器)使用vagrant 架设,安装了centos7.
 
navicat 的连接信息
 
 
 
这样填写提示连接不上,192.168.10.10不能连接?
我再试了下ssh连接
 
 
得到的提示是192.168.10.10这个mysql没有远程连接权限。(ps:我的是mac环境用过Sequel Pro.app 的ssh 连接是没有问题的当时3306端口我都没有开启呢)
 
是不是centos7的端口没有开呢?
sudo firewall-cmd --query-port=3306/tcp  //永久开放3306端口
sudo firewall-cmd —reload  //重启防火墙
 
重新用navicat 的ssh 连接方法尝试,结果是跟上面提示一样,连接失败192.168.10.10不允许远程连接
直接用navicat 常规连接试下(常规指直接用mysql的ip 账号密码登录)提示改变了
 
端口开启后提示是有改变的。看来还得继续解决
 
前面有提示到192.168.10.10没有远程连接权限是不是mysql的账号不允许远程连接呢?百度 google了下mysql 远程连接.
常规的几种方法(自行查找下吧)
1.修改mysql 内的mysql数据库 user表下, root 账号下host为localhost 改为%
 
网上多数都教用命令行去修改(ps:直接phpmyadmin修不就好了吗?为什么非要用命令行修改,后来才知道,不过还是被坑了一把后面说)
#mysql -uroot -p
填写密码
use mysql
update user set host = '%' where user = 'root';
ERROR 1062 (23000): Duplicate entry '%-root' for key ‘PRIMARY’   //这是报错吗?
select host, user from user; //查看下数据表
 
报错但,这个修改算是成功了。
 
再一次尝试用navicat 做常规连接 结果是
再来一次ssh 结果是
 
第二种方法:
授权法
GRANT ALL PRIVILEGES ON *.* TO ‘用户名'@'%' IDENTIFIED BY '用户密码' WITH GRANT OPTION;    //增加一个账号,任何ip都可以连接这到个mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@‘192.168.10.10' IDENTIFIED BY 'mypassword' WITH GRANT OPTION; //设置root用户可以通过192.168.10.10这个ip登陆 ip地址自己填写
好吧我就填写了ip地址的方法。还是失败。
 
第三种方法:
修改my.cnf 将远程打开  //mysql 5.0版前后有区别,一般网上找到的修改是5.0后的修改方法。
注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1
//5.0版本前是找不到bind-address的 那就注释掉 #skip-networking  //我本地本来就是注释了的。
 
因为常规连接时报的是192.168.10.1这个vagrant 的桥接网关吧(ps:我是这样理解的有错大家指出来),没有远程连接mysql的权限?
用telnet 192.168.10.10 3306 得到的也是192.168.10.1没有mysql 远程连接权限的报错
 
为什么是192.168.10.1   是因为vagrant的环境有问题吗?一直都是这样想
后来又是各种试吧,但一直不行。最后看到百度经验里的一篇文章,文章上的mysql是在windowns上的,也是修改ip地址允许的方法。死马当活马医吧,照做一次,当时root 的host改成了%了 ,我就以为是192.168.10.1这个真的没有权限远程吗?所以再加了一个192.168.10.1这个ip上去  ,不同的地方是下面这个命令
flush privileges;   //重新加载权限,让修改的权限生效
//重新加载权限。。。。对好多文章都没有加入重新加载权限这一条,我重启linux后mysql 也没有给我重新加载权限(当时没有去试重新启动mysql,有兴趣的可以自行试下)
妹的搞了一大圈就是因为修改了权限没有重新加载,我们这种不太懂mysql内操作的怎么办。
 
然后呢,打算自己总结下问题写这个文章吧,想将问题重现一次来做测试,将root 允许192.168.10.1这个删除了尝试,navicat还是可以连接,再删除了任何ip都能访问那一条设置还是能用navicat常规连接,当时就快疯了,为什么?最后再将root host %改回localhost   flush privileges; (ps:一定要重置下配置好的权限) 问题终于重现了。
 
最后吐槽一下百度 firewall-cmd 关闭端口的方法,出来的结果不是开端口呢就是直接将firewall这个防火墙关了,去google 用相同的关键字一查第一条就是我要找的结果
sudo firewall-cmd --permanent --remove-port=3306/tcp  //关闭centos7 3306这个端口
当然不要忘记要重启防火墙生效哦
sudo firewall-cmd --reload
 
 
 
 
 
 

mysql 不能远程连接的更多相关文章

  1. [转]配置mysql允许远程连接的方法

    配置mysql允许远程连接的方法 vim /etc/my.cnf注释这一行:bind-address=127.0.0.1 ==> #bind-address=127.0.0.1保存退出.mysq ...

  2. MySQL数据库远程连接

    12.00 MySQL数据库远程连接 参考: http://www.jb51.net/article/24508.htm http://www.linuxdiyf.com/viewarticle.ph ...

  3. MySql实现远程连接

    MySql实现远程连接 1.进入mysql,创建一个新用户root,密码为root: 格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密 ...

  4. 开启本地MySql数据库远程连接

    解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要确定防火墙没有阻止 33 ...

  5. mysql允许远程连接授权方法

    mysql数据库和apache不在同一台服务器时,需要远程连接mysql,这就要对mysql进行远程连接授权,为了安全只允许某些ip可以连接: 假如你想root用户从ip 192.168.2.12连接 ...

  6. Mysql开启远程连接方法

    分类: 数据库开发技术 解决MySQL不允许从远程访问的方法 开启 MySQL 的远程登陆帐号有两大步: 1.确定服务器上的防火墙没有阻止 3306 端口. MySQL 默认的端口是 3306 ,需要 ...

  7. Linux下mysql的远程连接(转)

    转载:http://www.cnblogs.com/fnlingnzb-learner/p/5830661.html 如果Mysql是按上篇的方法进行安装和设置的话,那进行远程连接就会稍微简单一点.我 ...

  8. MySQL数据库远程连接很慢的解决方案

    在开发机器上链接mysql数据库很慢,但是在数据库服务器上直接链接数据库很快.猜测应该是远程链接解析的问题,在查询MySQL相关文档和网络搜索后,发现了一个配置似乎可以解决这样的问题,就是在MySQL ...

  9. linux搭建的LNMP环境下的mysql授权远程连接

    用phpstudy搭建的lnmp环境下mysql授权远程连接 简单高效 这是因为mysql 里的优先级不是所有人(提前检查防火墙是关闭状态)1.使用phpstudy安装的mysql没有放置到可以直接调 ...

随机推荐

  1. JS 文本输入框放大镜效果

    JS 文本输入框放大镜效果 今天下午研究了下 "文本输入框放大镜效果" 当然KISSY官网也有这种组件 请看kissy demo 其实这种效果 对于很多童鞋来说 应该并不陌生!我今 ...

  2. IOS 使用Interface Builder开发界面入门与技巧

    引言: 通过Interface Builder(简称IB)来制作界面一直是iOS开发界饱受争议的方式.主要争议的话题是不太适合团队协作开发,再就是对IB的使用比较生疏,觉得IB只能完成一些很简单的功能 ...

  3. Advice on improving your programming skills

    Programming is cool. But behind the scenes it's also difficult for many people. Many people are defe ...

  4. Tick and Tick

    The three hands of the clock are rotating every second and meeting each other many times everyday. F ...

  5. javascript编程的最佳实践推荐

    推荐的javascript编程的最佳实践,摘要记录在这里: 可维护的代码保证代码的性能部署代码 1 可维护的代码1.1什么是维护的代码:可理解性——其他人可以接手代码并理解它的意图和一般途径,而无需原 ...

  6. python(4) - 装饰器2

    接下来修改一下上一篇的login,将用户名传递给验证函数. def login(func): #接收一个函数作为参数 def inner(name): print("用户验证通过....&q ...

  7. python(3)-动态参数实现字符串格式化

    s1 = "{0} ===> {1}" s = s1.format('lilei', 'boy') print(s) l = ['lilei', 'boy'] s = s1. ...

  8. VMware系统运维(二)安装Microsoft .NET 3.5

    1.安装vmware vSphere 5.5 之前先安装Microsoft .NET 3.5. 2.安装Microsoft .NET3.5,添加角色和功能. 3.勾选.NET Framework 3. ...

  9. ES各种错误解决

    _update API 执行报错 错误信息: { "error": { "root_cause": [ { "type": "re ...

  10. 给jdk写注释系列之jdk1.6容器(6)-HashSet源码解析&Map迭代器

    今天的主角是HashSet,Set是什么东东,当然也是一种java容器了.      现在再看到Hash心底里有没有会心一笑呢,这里不再赘述hash的概念原理等一大堆东西了(不懂得需要先回去看下Has ...