ERROR 2013 (HY000): Lost connection to MySQL server的解决方法

时间:2025-01-15 13:31:50

1、进入mysql,创建一个新用户root,密码为root

   格式:grant 权限 on 数据库名.表名 to 用户@登录主机 identified by "用户密码";            grant select,update,insert,delete on *.* to root@192.168.1.12 identified by "root";

   原先数据表结构

mysql> use mysql; Database changed mysql> select host,user,password from user; +-----------+------+-------------------------------------------+ | host      | user | password                                  | +-----------+------+-------------------------------------------+ | localhost | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +-----------+------+-------------------------------------------+

   执行上述语句后结果

mysql> use mysql; Database changed mysql> select host,user,password from user; +--------------+------+-------------------------------------------+ | host         | user | password                                  | +--------------+------+-------------------------------------------+ | localhost    | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | 192.168.1.12 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +--------------+------+-------------------------------------------+ 2 rows in set (0.00 sec)

 

   可以看到在user表中已有刚才创建的root用户。host字段表示登录的主机,其值可以用IP,也可用主机名,

   (1)有时想用本地IP登录,那么可以将以上的Host值改为自己的Ip即可。

2、实现远程连接(授权法)

   将host字段的值改为%就表示在任何客户端机器上能以root用户登录到mysql服务器,建议在开发时设为%。       update user set host = ’%’ where user = ’root’;

   将权限改为ALL PRIVILEGES

mysql> use mysql; Database changed mysql> grant all privileges  on *.* to root@'%' identified by "root"; Query OK, 0 rows affected (0.00 sec)

mysql> select host,user,password from user; +--------------+------+-------------------------------------------+ | host         | user | password                                  | +--------------+------+-------------------------------------------+ | localhost    | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | 192.168.1.12 | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | | %            | root | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | +--------------+------+-------------------------------------------+ 3 rows in set (0.00 sec)

这样机器就可以以用户名root密码root远程访问该机器上的MySql.

3、实现远程连接(改表法)

use mysql;

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

这样在远端就可以通过root用户访问Mysql.


通过上面的方法,在mysql的user表中建立了一个用户后,刷新权限,就可以通过远程连接mysql了(通过用户的客户端的机器连接到服务器上面的mysql服务器),不过依然出现了下面的错误:
当通过 TCP/IP 连接 MySQL 远程主机时,出现 ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104 。如果是在linux shell命令行中直接打 mysql 命令,能够顺利连上 MySQL,执行查询语句也比较正常,但如果执行 STOP SLAVE; 命令时就随机出现 ERROR 2013 (HY000): Lost connection to MySQL server during query 问题。而如果把操作命令写到脚本文件再去执行该脚本文件的话,则必然出现 Lost connection to MySQL server at 'reading initial communication packet', system error: 111