项目场景:
在前文中使用docker容器搭建了一个MySQL的主从模式,最近在开发项目时使用的云服务器创建的数据库,针对这个数据库并没有做好权限控制,在交付给客户后容易暴露其他的数据库。故针对这个情况,新增了一个登录用户,并指定这个用户数据库权限。
实现步骤
先更改用户远程登录的密码
--localhost登录
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('changePassword');
--远程登录
SET PASSWORD FOR 'root'@"%" = PASSWORD('changePassword');
--执行完之后记得刷新用户权限才会生效
flush privileges;
再设置一个用户账号指定具体数据数据库权限
--设置账号xiaoyuanbang,登录密码yourPassword,对数据库xiaoyuanbang具备所有权限
grant all privileges on xiaoyuanbang.* to xiaoyuanbang@"%" identified by "yourPassword" ;
--执行完之后记得刷新用户权限才会生效
flush privileges;
设置完之后可以用户具体的权限设置
show grants for xiaoyuanbang@localhost ;
如果不想用了,也可以撤销掉这个用户的权限
revoke all on *.* from xiaoyuanbang@localhost ;
至此,针对某个登录用户访问指定数据库的功能已设置完毕。如果想更细致的对数据库用户的权限进行控制,如下。
--查询
grant select on xiaoyuanbang.* to xiaoyuanbang@"%";
--插入
grant insert on xiaoyuanbang.* to xiaoyuanbang@"%";
--更新
grant update on xiaoyuanbang.* to xiaoyuanbang@"%";
--删除
grant delete on xiaoyuanbang.* to xiaoyuanbang@"%";
除此之后,还可以对用户权限控制到数据库的创建表、索引、视图、存储过程、函数等功能,当有具体需要时再去查阅。参考链接:https://www.cnblogs.com/GotoJava/p/14768364.html