使用 MySQL 几年后,我遇到了一些令我困惑的安全问题。
我创建了一个新的数据库和一个新用户,然后仅向该用户授予对新数据库的 CRUD 权限。
但是当我通过某些 MySQL 客户端或通过 CLI mysql 登录时,我可以读取和更改所有数据库中的数据。
我仔细检查了自己并确认我应该只能访问单个数据库 - 但我仍然可以访问每个数据库。
MySQL 是否有任何设置会导致它忽略安全性,而我却不小心将其打开了?
谢谢。
答案1
是的;如果您使用 MySQL 启动--skip-grant-tables
它,则每个人都可以自由轻松地访问所有内容。但是,您更有可能弄乱您的身份验证和权限(这真的很容易做到);发布(最好在新问题中)导致问题的查询/GRANT 语句集(在临时服务器上测试它们是否确实导致您认为的问题),然后有人可以解释出了什么问题。
答案2
我想你没这么做吧grant create,update,read,delete on *.* to 'user'@'localhost';
?
还要检查以确保您没有使用~/.my.cnf
文件中的隐式用户/密码,并且正在启动 mysql CLI mysql -u user -p
(我的意思是,您可能以 root@localhost 或类似身份“登录”...)
show grants;
应该显示您拥有的所有权限,以及您是哪个“用户”。
答案3
重新启动后它就消失了 - 奇怪的东西,将继续监控。
感谢所有回答的人。