Navicat 远程连接 Mysql 2003 错误

Navicat 远程连接 Mysql 2003 错误

navicat-for-mysql

这是换着花样的折腾自己。

刚开始时在 Windows 上装个 PHPnow 玩 WordPress 等 PHP 程序就很满足了,后来呢,搞虚拟主机装 Linux 系统,把折腾转到虚拟主机上,现在依然是虚拟主机装 Linux 系统,然后在 Windows 里“远程”访问虚拟主机来折腾 WordPress,偶尔还想着搞个老机器独立装 Linux 系统连局域网,真正实现远程,也不知道这样折腾的意义何在,可能是为了满足自己假装有 VPS 的样子吧。

以前一直用 PhpMyAdmin 管理 Mysql 数据库,后来折腾虚拟主机后发现远程用 Navicat 管理数据库更方便,而且导入导出不会像 PhpMyAdmin 偶尔会出错,还有一个和 Navicat 类似的程序,图标是只小海豚的 SQLyog 也不错。

使用 Navicat 的时候遇到过几次连接不上远程数据库的问题,每次解决完都没有把方法记下来,导致重装虚拟机后又得到处找方法,所以,想到博客长草,刚好除草一下。

  1. 确定远程装了 Mysql 这是废话
  2. mysql -u root -p回车,输入密码回车,登录
  3. 授权远程用户登录
    • 对所有 root 用户授权:
      GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root用户密码' WITH GRANT OPTION;
    • 对指定 IP 的 root 用户授权:
      GRANT ALL PRIVILEGES ON *.* TO [email protected]'指定的IP地址' IDENTIFIED BY 'root用户密码' WITH GRANT OPTION;
    • 也可以授权指定的表,这就不搞的那么麻烦了,反正本地自己用。
  4. 重载授权表:FLUSH PRIVILEGES;
  5. exit 退出 Mysql

到这里基本都没问题,不过设置好后 Navicat 连接数据库还是会提示 2003 错误:2003——can't connect to mysql server on localhost(10061) 原因是有一步我老是忘记,老是忘记,老是忘记(容易忘记的事情说 3 遍)。

打开 /etc/mysql/mysql.cnf 在文件最底部添加:
bind-address= 0.0.0.0
或者是打开 /etc/mysql/mysql.conf.d/mysqld.cnf 找到文件里的:
bind-address= 127.0.0.1 把它改成 bind-address= 0.0.0.0
因为第一个有优先级,所以我是直接在 /etc/mysql/mysql.cnf 文件里添加。

这样 Navicat 就可以无碍的“远程”访问数据库了,效果就是文章开头的那个图,改起来很直观方便。

2016.9.6更新

最后一步不知道什么鬼,以前添加那句没问题,这次又突然不行,加了后重启 mysql 服务报错,只能通过 /etc/mysql/mysql.conf.d/mysqld.cnf 里,在 bind-address= 127.0.0.1 这一句前加 # 将它注释掉,就可以了。