最近公司的mysql竟然遭到了黑客的光顾,索要bitcoin! 虽然很少,但是足以暴露出黑手们是贼不走空的,多么小的网站都不放过.因此,迫不得已,只好开始慢慢调整mysql的安全使用方法,又踩了不少坑,本文记录一下. 1、workbench 错误的正确理解,如图返回的错误 笔者一直认为是配置有问题,各种检查,各种授权,其实是密码错误。因此,当你做了很多操作之后,仍然出现这个错误,请仔细检查你的密码。 2、授权的坑 明明Grant 各种权限,查询权限表各项,都是No。别急这个No 不是授权不成功,这个No的意思是指所有的数据库,因此只要授予的权限不是针对所有数据库,这个地方就是N. 3、授权之后除了要 flush privileges 之外,还要重新连接数据库。否则就不会生效,这个要注意。免得连不上,就头疼,以为操作不对。 4、USAGE 权限等于是没有权限。 5、Select 权限是肯定包含视图查询的。但是,如果你进行过数据库的恢复,而原来的view 的定义者不是新用户,就会有access denied 的错误。怎么改呢?在workbench里面修改definer,是不行的,会有错误。感觉这是mysql或者workben的bug。笔者的修改方法是,将数据导出,然后修改导出的文件,将definer 修改为新用户的名字。 6、trigger 和 routine 都有自己的权限,一个 execute 权限是不够的。创建和运行trigger要给trigger的权限。 7、回收权限时,要和查出来的授权方式一模一样,否则没用,也不报错。 如图
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for center_v1@%
|
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'center_v1'@'%'
|
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW ON `DB`.* TO 'center_v1'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW ON `*IOT*`.* TO 'center_v1'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, TRIGGER ON `RAIL_IOT_CENTER`.* TO 'center_v1'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, TRIGGER ON `IOT_CENTER_V1`.* TO 'center_v1'@'%' |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE ON `IOT_FRONT_V1`.* TO 'center_v1'@'%' |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
方法:将上面的复制下来,把grant 替换成 revoke, 把 to 替换成 from,执行即可。 执行后,再查询权限,就会减少了。
maraSun 2021-11-26 BJFWDQ
|