Navicat连接远程服务器上的mysql

发布于:2025-08-05 ⋅ 阅读:(11) ⋅ 点赞:(0)

 写在前面:以后坚持遇到问题解决了之后就记录,周五解决的这个问题,周日才想起来记录发现已经忘记是如何解决的,重蹈覆辙!!

最近在本地的navicat上想要连接服务器上的mysql,最终一直报错如下:

终端连接报错如下:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'  


Navicat连接报错如下:

      找了好久的解决办法,最终是因为在远程服务器上的mysql没有开启权限,所以无法在其它机器上访问(这里需要在局域网下的机器),当然你要确定的你的mysql服务启动了


1.客户端下登录数据库

   输入如下:

mysql -uroot -p --socket=/var/run/mysqld/mysqld.sock

这里我如果输入的是这个

mysql -uroot -p 

报错如下:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

问题原因:配置文件中的 socket 路径与 /tmp/mysql.sock 不一致,那么客户端会尝试连接错误的路径。因为服务器上的Mysql是老师的,所以暂时我就没有修改对应的配置文件了,采用如下进行临时登录:

mysql -uroot -p --socket=/var/run/mysqld/mysqld.sock

要是想彻底修改的话我感觉可以在服务器那台机器上更新 MySQL 客户端配置文件(通常是 /etc/mysql/mysql.conf.d/mysqld.cnf/etc/my.cnf),在 [client] 部分添加或修改 socket 参数:

[client]
socket=/var/run/mysqld/mysqld.sock

然后重新登录:

mysql -u root -p

登录成功显示如下:

2.查看root远程访问的权限

   输入如下:

use mysql;    ## 选择mysql数据库
select user,host from user;    ## 查看用户访问端口

输出如下:

注意:root用户默认的是localhost(这里我是修改过了),说明只允许从本地登录mysql服务。而我们要从远程以root用户连接数据库,就必须修改root的host的值,改为%,允许任何ip访问。

3.修改root中的host允许任何ip访问

输入如下:

update user set host = '%' where user = 'root';

再使用之前的命令:

select user,host from user;    ## 查看用户访问端口

可以看见root的host值被修改为%,即为成功!

刷新配置:

FLUSH PRIVILEGES;

4.修改远程访问的密码

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

输入完之后,看到Query OK,说明执行成功!

注意:此命令可以授权任何在mysql数据库user表中的用户以远程登录的方式访问数据库,本例中以’root’作为举例,若想授权其他用户,只需修改’root’的值为指定用户即可,123456’为’root’用户对应的登录密码(这里是我设置的密码),可以修改为你想要授权用户的登录密码。

最后启用本地的navicat连接即可,如下连接成功:


网站公告

今日签到

点亮在社区的每一天
去签到