「学习笔记」无法远程访问 MySQL 碰到的坑

「学习笔记」无法远程访问 MySQL 碰到的坑

资源介绍参数
资源类别: 代码笔记
如遇问题: 联系客服/留言反馈
释放双眼,带上耳机,听听看~!

「学习笔记」无法远程访问 MySQL 碰到的坑

平台:ubutun
mysql版本:5.7 (重要)

最近写Java的Demo项目碰巧需要开虚拟机测试。麻溜的装了个 Mysql ,然后准备开开心心的用Navicat连库开撸,没想到,居然无法远程访问?WTF…之前用centos可是很愉快的啊。然后居然连续碰到了很多坑。
写一篇笔记,记录下踩坑的过程,我的情况不一定适用于所有人,请注意文章最开头的系统和Mysql版本。

首先,本地登录root完全没问题。

mysql -uroot -p

然后在Windows用Navicat登录Mysql的时候居然失败了,"Can't connect to MySQL server on 'localhost' (10061)"?还不给详细的报错信息。

第一个想到的是尝试在数据表中打开访问的权限,以下一顿操作。

操作一:修改表访问权限

参考链接:https://www.cnblogs.com/cnblogsfans/archive/2009/09/21/1570942.html

mysql默认root用户没有密码,输入mysql –u root 进入mysql

1、初始化root密码

mysql>use mysql

进入mysql数据库

mysql>update user set password=PASSWORD(‘123456’) where User='root';

2、允许mysql远程访问,可以使用以下三种方式:

3、改表。

mysql -u root –p
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

b、授权。

例如,你想root使用123456从任何主机连接到mysql服务器。

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

如果你想允许用户jack从ip为10.10.50.127的主机连接到mysql服务器,并使用654321作为密码

mysql>GRANT ALL PRIVILEGES ON *.* TO 'jack'@’10.10.50.127’ IDENTIFIED BY '654321' WITH GRANT OPTION;
mysql>FLUSH RIVILEGES

c、在安装mysql的机器上运行:

//进入MySQL服务器
d:mysqlbin>mysql -h localhost -u root
//赋予任何主机访问数据的权限
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
//使修改生效
mysql>FLUSH PRIVILEGES
//退出MySQL服务器
mysql>EXIT

但是一圈下来,没卵用,继续找解决方案。这时候突发奇想:

mysql -h 192.168.19.132 -uroot -p #失败 报了:ERROR 2003 (HY000): Can't connect to MySQL server (111)

mysql -h localhost -uroot -p #可以

至此可以确定,是什么东西挡住了远程访问,但不是表权限。

随后看到了一篇stackoverflow的文章:

https://stackoverflow.com/questions/11758339/error-2003-hy000-cant-connect-to-mysql-server-111

我看到了一条命令:

netstat -nat |grep :3306

显示了:

 tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN 

OK,这才发现这mysql只监听了127.0.0.1

操作二:开始解决ip监听问题

mysql配置文件检查

检查my.cnf的配置,bind-address=addr可以配置绑定ip地址。
不配置或者IP配置为0.0.0.0,表示监听所有客户端连接。

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

「学习笔记」无法远程访问 MySQL 碰到的坑

「学习笔记」无法远程访问 MySQL 碰到的坑

注释掉 bind-address = 127.0.0.1

重启(每个平台命令都不一样):

/etc/init.d/mysql restart

点我查看?各个平台的mysql重启命令


至此,终于解决!一共两个操作解决:

1.表权限
2.端口

参考到的所有文章

声明:本文为原创作品,版权归作者所有。未经许可,不得转载或用于任何商业用途。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
2 条回复 A文章作者 M管理员
  1. yangbbs

    mysql其实来说 还是很容易的

    • 喵容站长

      一个前端默默踩坑中,不容易啊。[wb_二哈][wb_二哈][wb_二哈]