对MySQL连接的误解及数据库恢复、隔离需求的技术咨询
关于MySQL连接与数据库恢复的问题解答
问题1:是否误解了MySQL连接的作用?
你确实误解了MySQL连接的本质。连接不是数据库的容器,它只是MySQL Workbench这类客户端工具和MySQL服务器之间的通信通道。数据库是存储在MySQL服务器端的,和连接无关——只要你的连接使用的账号拥有对应权限,就能看到并操作服务器上的所有该账号有权限的数据库。不管你创建多少个连接,只要指向同一服务器、用同一账号登录,看到的数据库列表都是一样的。
问题2:误删的md_water_services数据库能否恢复?
能不能恢复取决于你有没有提前做备份或者开启特定功能:
- 如果开启了MySQL的二进制日志(binlog),可以通过
mysqlbinlog工具解析日志文件,找回删除数据库前的数据,重新构建数据库。 - 如果之前用Workbench或者其他工具导出过该数据库的备份文件,直接导入备份就能恢复。
- 如果服务器有文件级的备份(比如MySQL data目录下的
md_water_services文件夹备份),可以在MySQL服务停止后,把备份的文件夹放回data目录,重启服务即可恢复。 - 要是以上条件都不满足,那误删的数据库基本无法恢复。
问题3:如何让新建连接看不到其他连接的数据库?
要通过MySQL的权限控制实现,给不同的连接分配不同的专用账号,只授予对应数据库的权限:
- 登录MySQL服务器的管理员账号(比如root),创建两个专用账号:
-- 给maji_ndogo连接创建专用账号,仅拥有md_water_services权限 GRANT ALL ON md_water_services.* TO 'maji_user'@'localhost' IDENTIFIED BY 'your_password'; -- 给crash_course连接创建专用账号,仅拥有land和feedback权限 GRANT ALL ON land.*, feedback.* TO 'crash_user'@'localhost' IDENTIFIED BY 'your_password'; - 刷新权限使设置生效:
FLUSH PRIVILEGES; - 在Workbench中创建连接时,分别使用
maji_user和crash_user登录,这样每个连接就只能看到自己有权限的数据库,看不到其他数据库。
内容的提问来源于stack exchange,提问作者kareemah ajina
相关产品推荐
相关产品推荐

