如何独占锁定mysql数据库?

时间:2009-05-20 05:02:33

标签: mysql

我有多个mysql数据库,我想在特定数据库上执行一些管理任务。在正在进行的任务中,如何确保没有其他人可以连接到该数据库?

3 个答案:

答案 0 :(得分:11)

显然,您可以使用FLUSH命令:

> FLUSH TABLES WITH READ LOCK;

然后

> UNLOCK TABLES;

再次解锁数据库。不确定是否需要在表上设置某些设置以允许读锁定。您可以通过在数据库被锁定后尝试手动插入来测试这一点,如果您收到有关被锁定表的错误消息,您就知道它有效。

More information on FLUSH command

答案 1 :(得分:0)

如果您可以在维护时停止服务器,请停止守护程序并将其重新配置为不侦听网络连接。仅允许通过本地UNIX套接字进行连接。

然后在物理上或通过SSH在同一台计算机上本地登录。只要没有其他人可以访问机器,这将确保您独自一人。完成后,恢复原始配置文件并重新启动守护程序。

另一种方法是临时禁用所有用户帐户,但是“root”(或用于维护的任何内容)用于特定数据库。然而,这有一个缺点,即实际上弄乱了帐户数据,这比仅仅防止网络连接风险更大。

答案 2 :(得分:0)

我有几个选择,正如我所看到的那样:

  • 关闭mysqld,即要建立到数据库的连接的守护程序。这有阻止访问所有该计算机上的mysql数据库的缺点。

  • 移动文件或更改文件的访问权限,以便只有您的用户可以使用它。 (我不知道这是否有效。)数据库文件位于/var/lib/mysql之类的位置。只是不要忘记当你完成将它们改回mysqld能够使用的东西时!

祝你好运!