2013-10-31 182 views
5

我试图从我的Amazon RDS实例使用mysqldump检索数据库。亚马逊RDS mysqldump问题

mysqldump –h myDBname.cra3xhjrgj69.eu-west-1.rds.amazonaws.com -u root –p --port 3306 --single-transaction --databases DBname > ~/tt.sql 

但是我得到的错误:

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect 

我可以然而使用客户端连接到数据库:

mysql --host=myDBname.cra3xhjrgj69.eu-west-1.rds.amazonaws.com -u root -p 

Enter password: 

Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 85250 
Server version: 5.1.69-log MySQL Community Server (GPL) 

我查了root权限,以及:

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*abcabcabc' WITH GRANT OPTION 

这些看起来不错。

在这个问题上读了,我认为这可能是我的EC2 mysqldump和从本文的RDS MySQL服务器版本之间的版本不匹配:

Mysqldump 5.6 version needed on EC2 with MySQL 5.6

所以,我试图更新客户端5.6版本但我仍然有同样的错误。我已经尝试了各种不同的版本,现在已经回复到:

mysqldump -V 
mysqldump Ver 10.13 Distrib 5.1.72, for unknown-linux-gnu (x86_64) 

但我仍然得到相同的错误。我也尝试从另一台机器连接,但问题依然存在。

如果有人对接下来要做什么有什么建议,我会很感激。看起来像一个解决方法,如果现在有一个不会太糟糕。

非常感谢

+0

您仍然有MySQL版本72年5月1日的客户端。您可能需要从第三方存储库进行安装。某些官方存储库可能会更新到新版本。 – datasage

+0

嗨,我没有尝试从第三方存储库更新客户端,使它在版本5.6,但我得到了相同的错误消息。然后我回到了5.1.72,认为客户端与服务器相比在版本上可能遥遥领先。 – Huw

+0

你确实需要一个新版本的mysqldump,除非一个版本有缺陷,否则规则是客户端应该比服务器更新,而不是更老......但这不是破坏它的原因。你在mysqldump中使用'-h',但在mysql中使用'--host ='。切换提供选项的方式是否会改变行为?另外,请查看您的my.cnf文件以查找“[mysqldump]”部分中的任何内容。 –

回答

6

男人,我不能相信我花2个小时来完成这项工作,而它的客户端版本的问题。

DB信息:RDS MySQL version: 5.6.13当我从我的RHEL6.4服务器上运行mysqldump

,我得到了下面的错误:

mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) when trying to connect 

我检查的mysqldump兴田版本,它是:

# mysqldump --version 
mysqldump Ver 10.13 Distrib 5.1.71, for redhat-linux-gnu (x86_64) 

我试过用yum来更新它,但是它表示最近在yum回购中可用。

所以我创建了一个Ubuntu 12.04实例并在其上安装了MySQL客户端。

现在我的Ubuntu实例的版本是;

# mysqldump --version 
mysqldump Ver 10.13 Distrib 5.5.34, for debian-linux-gnu (x86_64) 

然后,我跑到我的SQL转储文件并将其wokred像一个魅力:

# mysqldump -hRDS_END_POINT -uUSERNAME -pPASWORD dbname> dbname.sql 
+1

做一个mysqldump时要记住的好东西,确保mysql的版本是一样的。 – DMin