远程登陆mysql踩坑

远程登陆服务器出现问题

登陆代码: mysql -u username -p -h 服务器ip -P 端口号 -D 数据库
出现了没法登陆的bug,can't connnect to MySql server on 
复制代码

网络检查

ping 服务器ip地址,能够确保不是服务器网络问题。若是是服务器问题就要找服务器网络问题的方法。

telnet 主机ip 22 port

  • 若是没法链接,多是你的主机没有安装ssh-server(通常系统只默认安装ssh-client);mysql

  • 也多是防火墙把22端口禁用,不必定是网络问题(这一步仅和上一步作对比;linux

  • 若是可以链接,说明网络没有问题,而是你的主机配置问题,而后按如下步骤继续排查) sql

    我这里22端口和3306端口均不能访问,可是ip地址是能够ping通的。我本身设置的27252端口为ssh端口改为22端口为登陆端口了

检查主机端口

1) netstat -ntpl | grep 3306 
tcp 0 0 127.0.0.1:3306 127.0.0.1:* LISTEN -
2) netstat -ntpl | grep 22 
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
复制代码

注意:3306端口ip显示为127.0.0.1表示这个地址只能被本机访问数据库

mysql配置文件检查

检查my.cnf的配置,bind-address=addr能够配置绑定ip地址。 
不配置或者IP配置为0.0.0.0,表示监听全部客户端链接。
复制代码

注意(我踩了这个坑):mysql 5.7的目录改为了/etc/mysql/mysql.conf.d/mysqld.cnf 而非以前的 /etc/mysql/mycnfubuntu

mysql用户访问权限

进入mysql数据库vim

$mysql -u root -p
    >use mysql;
    >select host,user from user;
复制代码

MySQL建用户的时候会指定一个host,默认是127.0.0.1/localhost只能本机访问; 其它机器用这个用户账号访问会提示没有权限,host改成%,表示容许全部机器访问。centos

防火墙检测

— ubuntu下使用ufw工具 sudo ufw status 查看防火墙状态,在ubuntu下iptables通常被ufw接管,而selinux是默认不安装的,若是你曾经安装过,就须要禁用seliux并重启系统了。 sudo ufw enable/disable 启用和禁用防火墙 sudo ufw allow 3306 容许访问3306端口bash

— 如下是centos等系统的作法:服务器

  • 1)iptables –list查看;
  • 2)开启防火墙3306端口 vim /etc/sysconfig/iptables -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(容许3306端口经过防火墙) /etc/init.d/iptables restart(重启防火墙使配置生效)
  • 3)或者直接关闭防火墙; 参考:http://blog.csdn.net/fjssharpsword/article/details/50973283

参考资料:

blog.csdn.net/AIkiller/ar… blog.csdn.net/ynnmnm/arti… stackoverflow.com/questions/16161889/cant-connect-to-remote-mysql-server-with-error-61 网络

相关文章
相关标签/搜索