一、确认MySQL服务能在专用网络和公用网络上同时能通过防火墙进行通信

重要的事情说三遍:一定要看防火墙,防火墙,防火墙!!这一步如果没有通过,MySQL的3306端口直接无法被访问。 

Ps.以下以Win10系统为例,不同版本系统核心步骤相同。 

通过控制面板->Windows防火墙->允许应用或功能通过Windows防火墙 

远程登录mysql 远程登录mysql服务器_mysql


找到MySQL服务,同时勾选专用和公用网络即可!! 

远程登录mysql 远程登录mysql服务器_数据库_02

二、设置远程异地可登录账号

方法一:命令行改表&&授权 

1.在通过命令行进入MySQL之前应先查看其环境变量是否配置。 

如果没有配置则按如下步骤在Path里添加MySQL中的bin文件路径。 

远程登录mysql 远程登录mysql服务器_远程登录mysql_03


远程登录mysql 远程登录mysql服务器_远程登录mysql_04


2.通过命令行(cmd)进入MySQL数据库

C:\Users\Administrator>mysql -uroot -p123456
  • 1

-u后面是用户名(user),-p后面是密码(password) 
法一:修改user表 
以下为更好的说明,我们修改一下提示符(第一行命令可以不做)

mysql> prompt \u@\h \d>  //其中\u是用户名,\h是服务器名称,\d是当前数据库
root@localhost (none)>use mysql; //出现localhost可见当前是本地服务器,现在进入MySQL中的mysql数据库
root@localhost mysql>update user set host = '%' where user = 'root'; 
//在mysql数据库中修改user表里的root用户的host属性为“%”,表示包括本地以外所有IP都可以访问。
root@localhost mysql>flush privileges;  //刷新权限配置
  • 1
  • 2
  • 3
  • 4
  • 5

修改之后如欲收回权限或禁止远程访问则使用如下命令:

root@localhost mysql>update user set host = 'localhost' where user = 'root';
root@localhost mysql>flush privileges;
  • 1
  • 2

此时其他主机已无法访问此数据库。

法二:授权 
在法一基础上修改最后一条命令为,也可通过此授权语句修改登录密码。

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

命令中*.*左边星号代表数据库名,右边星号代表表名。两边都是星号表示所有数据库和所有表。 

命令中'root'@'%'左边表示用户名,右边表示服务器名称。 

此命令表示给root用户在通过密码为123456下允许在任何主机对此数据库中所有数据库和表进行操作的权限。 

如此即可从任何一台连网&&有MySQL数据库的主机上远程登录(输入用户名为root,密码为123456,IP为你设置可远程访问账号主机的IP地址)当前数据库。命令行中输入ipconfig命令即可查看本机IP,如图所示。 

远程登录mysql 远程登录mysql服务器_远程登录mysql_05

方法二:Navicat界面配置(前提是有这个软件) 

Navicat的安装请参考我之前的博文《MySQL数据库、Navicat for MySQL、Workbench的安装》 

进入Navicat点击用户,双击root账户,可在里面修改可访问IP(此处设为“%”)以及密码,修改完毕后保存即可。 

远程登录mysql 远程登录mysql服务器_mysql_06


上图修改host本质其实是下图修改mysql数据库(安装mysql时自带数据库之一)中的user表里用户为root的host。之前命令行操作本质也是一样,都是在进入mysql数据库中修改user表,方式不同,本质相同。 

远程登录mysql 远程登录mysql服务器_远程登录mysql_07

补充:flush privileges



最简单:


update mysql.user set Host='%' where HOST='localhost' and User='root';

flush privileges;