我需要在Linux服务器上进行夜间mysql维护期间禁用远程访问,以便在此期间没有人可以查询数据库。 我不能执行SERVICE MYSQL STOP,因为那样我就无法完成我需要做的事情(截断并重建几个表)。 有没有办法在短时间内关闭外部访问?
提前致谢。
第二步,禁用除了root@localhost以外的所有用户。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
DELETE FROM mysql.user WHERE CONCAT(user,host) <> 'rootlocalhost';
FLUSH PRIVILEGES;
第三步) 进行维护工作
第四步) 重新加载授权
mysql -h localhost -u root -p rootpassword < /root/MySQLGrants.sql
试一下这个方法!!!
附注:
在维护之前,运行service mysql restart --skip-networking仍然是最简单和最快的方法,并且在维护之前断开所有连接。
只需在维护后运行service mysql restart即可。
禁用远程应用程序使用的登录凭据?
防火墙MySQL端口,以便远程应用程序无法访问?
在维护期间,有一些其他方法可以暂时禁用对MySQL数据库的访问。
编辑/etc/mysql/my.conf'
将bind-address更改为: bind-address = 127.0.0.1
重新启动MySQL: service mysql restart --skip-networking
除非您将bind-address更改为原始值并再次重启MySQL,否则没有人可以从远程访问MySQL服务器。