我尝试创建转储作为复制主数据,并使用以下命令创建转储,但sql文件仅包含参数,没有数据和结构。命令是:
mysqldump --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A > bckp.sql.gz
sql文件的内容是:
-- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (x86_64)
--
-- Host: xxx.xxx.xxx.xxx Database: XXX
-- ------------------------------------------------------
-- Server version 5.1.72-0ubuntu0.10.04.1-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2013-12-26 8:56:27
为什么会出现这个问题?
最佳答案
如果mysqldump
尝试使用的用户凭据仅具有USAGE
权限,就会发生这种情况,该权限本质上允许您连接到服务器并执行以下操作如果您没有被授予任何更细粒度的权限,则什么也没有。
shell> mysql -e 'SHOW GRANTS;'
如果您没有将用户名和密码传递给 mysqldump,那么上面的命令将告诉您您正在以谁身份进行身份验证,以及该用户拥有什么权限...或者,如果您将用户名和密码传递给 mysqldump ,然后将它们添加到上面的命令并检查输出。当然,修复方法可能是将适当的用户名和密码作为参数传递给 mysqldump(如果您还没有这样做的话)。
默认安装包含一个有权访问“test”数据库的匿名用户,如果您没有删除该用户,则可能会访问该帐户;您可能想要删除该用户(如果存在),您可以手动或使用 mysql_secure_installation
来执行此操作。想必您一定已经删除了测试数据库,或者如果我在这里的诊断准确的话,它将包含在转储文件中。
关于sql - Mysql 复制转储无需停机?空的sql文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20784865/