我需要在Linux服务器上进行夜间mysql维护时禁用远程访问,以便在此期间没有人可以查询数据库.我不能做SERVICE MYSQL STOP因为那时我不能做我需要做的事情(截断并重建几个表).有没有办法在短时间内关闭外部访问?
提前致谢.
这是一个很好的方式,没有触及操作系统中的任何内容
步骤1)将所有用户导出到SQL文件,如下所示:
mysql -h localhost -u root -p rootpassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR''',user,''''''',host,''''' )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;
Run Code Online (Sandbox Code Playgroud)
步骤3)执行维护
步骤4)重新加载赠款
mysql -h localhost -u root -p rootpassword < /root/MySQLGrants.sql
Run Code Online (Sandbox Code Playgroud)
试一试!!!!
PS
service mysql restart --skip-networking
仍然是最简单,最快捷的方式,还可以在维护之前注销所有连接
只需在维护后运行service mysql restart