有时候我们需要远程操作数据库,但是MySQL-Server 出于安全方面考虑默认只允许本机(localhost, 127.0.0.1)来连接访问。
所以,我们必须先
修改root可以远程访问的权限
1.通过cmd连接进入数据库
命令输入:mysql -u root -p
输入密码登录数据库
命令输入:use mysql;
2.通过查询用户表,查看已有用户访问权限
命令:select User,authentication_string,Host from user;
这里我们看出host默认都是localhost访问权限
3.重点:修改用户远程访问权限
(1)修改为允许所有root用户远程访问
命令输入:GRANT ALL PRIVILEGES ON * . * TO ‘root’@’%’ IDENTIFIED BY ‘123456’ ;
这里的123456为你给新增权限用户设置的密码,%代表所有主机,也可以具体到你的主机ip地址(将’%‘改为’你的主机IP’)
(2)刷新数据库
命令输入:flush privileges;
这句表示从mysql数据库的grant表中重新加载权限数据
因为MySQL把权限都放在了cache中,所以在做完更改后需要重新加载。
执行完这两步,再次查询用户表命令:select User,authentication_string,Host from user
我们可以发现多了一个root用户,该用户所有的主机都可以访问,此时再次用sqlyog访问连接成功!
查询mysql中所有用户权限
输入命令: select host,user from user;
关闭root用户远程访问权限
输入命令:delete from user where user=“root” and host="%" ;
禁止root用户在远程机器上访问mysql
输入命令:flush privileges;
修改权限之后,刷新MySQL相关表生效,发现root没有了远程访问的权限
现在通过远程连接发现无法访问
修改远程操作权限(部分权限)
设置root用户操作权限
>> grant all privileges on . to root@localhost identified by “123456” WITH GRANT OPTION ; //设置用户root,拥有所有的操作权限,也就是管理员 ;
>> grant select on . to root@localhost identified by “123456” WITH GRANT OPTION ; //设置用户root,只拥有【查询】操作权限 ;
>> grant select,insert on . to root@localhost identified by “123456” ; //设置用户root,只拥有【查询\插入】操作权限 ;
>> grant select,insert,update,delete on . to root@localhost identified by “123456” ; //设置用户root,只拥有【查询\插入\更新\删除】操作权限 ;
>> REVOKE select,insert ON what FROM root //取消用户root的【查询\插入】操作权限 ;
总结目前到这里。