mysql工作,mysqldump没有

时间:2013-07-12 23:15:38

标签: mysql ubuntu-12.04 mysqldump

我的ubuntu 12.04服务器上有mysql 5.5。这个命令:

mysql -u root -p

效果很好,但这给了我错误:

mysqldump -u root -p mydb_name > a.sql
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) when trying to connect

在my.cnf文件中,套接字设置为:

socket = /home/mysql/mysql.sock

所以我不知道/var/run/mysqld/mysqld.sock来自哪里。感谢。

5 个答案:

答案 0 :(得分:2)

注意:serverfault.com可能是一个更好的地方提出这个问题,因为它与服务器配置有关而不是编程。

首先,尝试将--socket=/home/mysql/mysql.sock添加到mysqldump命令。

如果这样可行,您可以使此命令行选项更具持久性,并且每次都可以通过将其添加到选项文件来避免输入。

运行mysqldump --help将显示(从输出的第15行开始)mysqldump将尝试读取选项的选项文件和组。例如,如果它报告:

...

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf 
The following groups are read: mysqldump client

...

您可以添加:

[mysqldump]
socket = /home/mysql/mysql.sock

到/etc/mysql/my.cnf或〜/ .my.cnf或列出的任何其他文件,然后每次运行mysqldump时都不需要--socket = ...选项。

注意:如果mysqldump没有以与mysql命令相同的方式识别现有my.cnf文件中[client]组的套接字选项,这可能意味着您的mysqldump版本可能无法读取同一组&无论出于何种原因,mysql命令正在读取的选项文件组合。

如果--socket选项不起作用,则可能是其他一些配置问题。

  1. 请务必在my.cnf文件的每个适用小节中设置socket = /home/mysql/mysql.sock

    [client]
    socket = /home/mysql/mysql.sock
    
    [mysqld_safe]
    socket = /home/mysql/mysql.sock
    
    [mysqld]
    socket = /home/mysql/mysql.sock
    
    [mysqldump]
    socket = /home/mysql/mysql.sock
    
  2. 除非绝对必要,否则请勿更改APPEGOR设置!使用命令sudo apparmor_status检查您是否正在运行apparmor,并查找“已加载apparmor模块”。在此命令产生的输出开头附近。如果是这样,请在/etc/apparmor.d/usr.sbin.mysqld文件中添加如下所示的行,大约距文件末尾6行。根据/var/run/mysql/mysqld.sock的类似现有条目,该位置应该非常明显:

    /home/mysql/mysql.sock rw,
    
  3. 你想在那时重启apparmor然后重启mysqld,或者只是重新启动以彻底重启所有内容。

    请注意,您添加到apparmor的这些类型的非标准配置选项可能会打开您的安全问题。当您运行Update Manager时,这可能也会导致冲突,如果您更新或重新安装ubuntu,将来可能需要再次手动编辑更改。

答案 1 :(得分:2)

我通过指定主机端口来解决此问题:

mysqldump -host=myserver.com.mysql --port=3306 -u root -p mydb_name > a.sql

答案 2 :(得分:1)

您收到此错误是因为您没有提到套​​接字路径

因此您必须将Mysql socket的路径添加到您的命令中以解决错误:

mysqldump hive --socket=`$PATH` > /tmp/hive_backup.sql

示例:

mysqldump --socket /bigdisk/data/mysql/mysql.sock  > /tmp/hive_backup.sql

答案 3 :(得分:0)

或者,可以使用标记'-S'定义套接字。

示例: mysqldump -S'baseir / mysql.sock'test> test.mysql

如何检索套接字: (1)有关插座的信息,请参阅my.cnf。 (2)它实际上位于MySQL基目录中:'basedir / mysql.sock'

当你不记得基目录的位置时,你可能必须查找你的基目录的my.cnf文件。

答案 4 :(得分:0)

您也可以像这样使用它:

mysqldump -h localhost -P 3307 --socket /bigdisk/data/mysql/mysql.sock -u root -p databasename > databasename-backup20170902.sql

我使用端口3307,因为我使用" mysqld_multi"

它对我来说很好。