暂时禁用mysql远程访问

时间:2011-04-18 18:37:22

标签: mysql linux

我需要在Linux服务器上进行夜间mysql维护时禁用远程访问,以便在此期间无人可以查询数据库。我不能做SERVICE MYSQL STOP因为那时我不能做我需要做的事情(截断并重建几个表)。有没有办法在短时间内关闭外部访问? 提前致谢。

4 个答案:

答案 0 :(得分:9)

这是一个很好的方式,不会触及操作系统中的任何内容:

步骤1)将所有用户导出到SQL文件,如下所示:

  

mysql -h localhost -u root   -p rootpassword --skip-column-names -A -e“SELECT CONCAT('''''''''''''''''''''''''''''''''''''''''FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM FROM   mysql.user WHERE user<>''“| mysql   -hlocalhost -uroot -prootpassword --skip-column-names -A | sed's / $ /; / g'> /root/MySQLGrants.sql

步骤2)禁用除root @ localhost

以外的所有用户
DELETE FROM mysql.user WHERE CONCAT(user,host) <> 'rootlocalhost';
FLUSH PRIVILEGES;

步骤3)执行维护

步骤4)重新加载拨款

mysql -h localhost -u root -p rootpassword < /root/MySQLGrants.sql

试一试!!!!

PS

服务mysql restart --skip-networking

仍然是最简单,最快捷的方式,并且在维护之前注销所有连接

只需在维护后运行service mysql restart

答案 1 :(得分:0)

禁用远程应用使用的登录凭据吗?

防火墙端口,以便远程应用程序无法访问它?

答案 2 :(得分:0)

还有一些方法可以在维护期间临时禁用对MySQL数据库的访问。 编辑/etc/mysql/my.conf'

将bind-address更改为: bind-address = 127.0.0.1

重启MySQL: service mysql restart --skip-networking

在将bind-address更改为原始值并重新启动MySQL之前,没有人会从远程访问MySQL服务器。

答案 3 :(得分:0)

Since 5.7.5这是一种正式的方式&#34;处理这个问题:

  

MySQL服务器现在支持这些“离线模式”   特性:

     

没有SUPER权限的已连接客户端用户是   在下一个请求中断开连接,并出现相应的错误。   断开连接包括终止正在运行的语句和释放   锁。此类客户端也无法启动新连接和接收   适当的错误。

     

具有SUPER权限的已连接客户端用户不是   断开连接,并可以启动新连接来管理服务器。

     

允许复制从属线程继续将数据应用于   服务器

     

只有拥有SUPER权限的用户才能控制离线模式。至   将服务器置于脱机模式,更改新的offline_mode的值   系统变量从OFF到ON。要恢复正常操作,请更改   offline_mode从ON到OFF。在脱机模式下,被拒绝的客户端   访问收到ER_SERVER_OFFLINE_MODE错误。