2011-04-18 88 views
3

我需要在Linux服务器上进行夜间mysql维护期间使远程访问变得混乱,以便在此期间没有人能够查询数据库。我不能做SERVICE MYSQL STOP,因为那时我无法做我需要做的事情(截断和重建一对表)。有没有办法短时间关闭外部访问?
在此先感谢。暂时禁用mysql远程访问

+0

你的意思是否定本地主机以外的连接? – elitalon 2011-04-18 18:45:49

+0

是的,这是正确的 – 2011-04-18 19:11:07

回答

9

这里是没有操作系统不能碰到任何一个伟大的方式:

步骤1)导出所有用户的SQL文件是这样的:

的mysql -h本地主机ü根 -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的/ $ /;/G'> /root/MySQLGrants.sql

步骤2)除了禁用根@本地所有用户

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的--skip-网络

仍然是最简单和最快的方式加上维修

只运行MySQL的服务重新启动您的维护前后注销所有连接

+0

实际上,这听起来不错...我需要做的维护是从本地脚本...为什么这是一个坏主意? – 2011-04-18 19:12:11

+0

我以为我最初说的话是个不好的主意,因为我认为mysql需要不断上升。 – RolandoMySQLDBA 2011-04-18 19:19:10

+0

哦......好了,如果服务mysqld restart - skip-networking做了一个优雅的重启(也就是说,等待主动查询完成),那么它将是完美的。我确实需要mysql来维护而不是用户。 – 2011-04-18 20:10:30

0

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

防火墙的MySQL端口,所以它不能被远程应用程序访问?

+0

好主意......但我希望稍微顺畅些。关闭端口可能会损坏查询。撤销和重新建立特权比我想要的要多一点工作。我希望有一些晦涩的mysql命令可以做到这一点。 – 2011-04-18 18:51:03

+0

@xivix关闭端口如何损坏查询? – 2011-04-18 19:04:14

+0

我最终可能会在选择或更新中关闭一个端口,从而不会向请求者或结果提供反馈。这只是不干净。 – 2011-04-18 19:06:12

0

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

更改绑定,地址: 绑定地址127.0.0.1 =

重启MySQL: 服务重新启动mysql的--skip-网络

没人将从远程访问MySQL服务器,直到您将bind-address更改为原始值并再次重新启动MySQL。