MySQL数据库设置远程异地可访问账号&&异地登录方法

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

重要的事情说三遍:一定要看防火墙,防火墙,防火墙!!这一步如果没有通过,MySQL的3306端口直接无法被访问。 
Ps.以下以Win10系统为例,不同版本系统核心步骤相同。 
通过控制面板->Windows防火墙->允许应用或功能通过Windows防火墙 
1
找到MySQL服务,同时勾选专用和公用网络即可!! 
2

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

方法一:命令行改表&&授权 
1.在通过命令行进入MySQL之前应先查看其环境变量是否配置。 
如果没有配置则按如下步骤在Path里添加MySQL中的bin文件路径。 
3
4
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,如图所示。 
5

方法二:Navicat界面配置(前提是有这个软件) 
Navicat的安装请参考我之前的博文《MySQL数据库、Navicat for MySQL、Workbench的安装》 
进入Navicat点击用户,双击root账户,可在里面修改可访问IP(此处设为“%”)以及密码,修改完毕后保存即可。 
Q1
上图修改host本质其实是下图修改mysql数据库(安装mysql时自带数据库之一)中的user表里用户为root的host。之前命令行操作本质也是一样,都是在进入mysql数据库中修改user表,方式不同,本质相同。 
Q2

补充flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在”不重启MySQL服务”的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。



最简单:

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

flush privileges;


猜你喜欢

转载自blog.csdn.net/weidong32768/article/details/80461996
今日推荐