【发布时间】:2010-10-27 12:54:34
【问题描述】:
我有多个 mysql 数据库,我想对特定数据库执行一些管理任务。如何确保在执行任务时没有其他人可以连接到该数据库?
【问题讨论】:
标签: mysql
我有多个 mysql 数据库,我想对特定数据库执行一些管理任务。如何确保在执行任务时没有其他人可以连接到该数据库?
【问题讨论】:
标签: mysql
显然,您可以为此使用 FLUSH 命令:
> 带读锁的刷新表;
然后
> 解锁表格;
再次解锁数据库。不确定是否需要在表上设置某些设置以允许读锁。您可以通过在数据库锁定后尝试手动插入来测试这一点,如果您收到有关表被锁定的错误消息,您就知道它有效。
【讨论】:
在我看来,您有几个选择:
关闭mysqld,要与数据库建立连接的守护进程。这样做的缺点是阻止访问该计算机上的所有 mysql 数据库。
移动文件或更改对它的访问权限,以便只有您的用户可以使用它。 (我不知道这是否可行。)数据库文件位于/var/lib/mysql 之类的地方。只是不要忘记,当您完成将它们改回 mysqld 将能够使用的东西时!
祝你好运!
【讨论】:
如果您有能力在维护期间停止服务器,请停止守护程序并将其重新配置为不监听网络连接。只允许通过本地 UNIX 套接字进行连接。
然后在同一台机器上本地登录,无论是物理登录还是通过 SSH。只要没有其他人可以访问机器,这将确保您一个人。完成后,恢复原始配置文件并重新启动守护进程。
另一种方法是暂时禁用特定数据库的所有用户帐户,但“root”(或您用来进行维护的任何用户帐户)除外。但是,这样做的缺点是实际上会弄乱帐户数据,这比仅仅阻止网络连接风险更大。
【讨论】: