注意: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 没有[client]
像 mysql 命令那样从现有 my.cnf 文件中的组中识别您的套接字选项,这可能意味着您的 mysqldump 版本可能不会读取相同的组和选项文件组合mysql 命令出于某种原因正在读取。
如果 --socket 选项不起作用,则可能是其他一些配置问题。
确保socket = /home/mysql/mysql.sock
在 my.cnf 文件的每个适用小节中进行设置:
[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
除非绝对必要,否则请勿更改 AppARMOR 设置!使用该命令检查您是否正在运行 apparmor,sudo apparmor_status
并查找“apparmor 模块已加载”。在此命令产生的输出的开头附近。如果是这样,请在您的 /etc/apparmor.d/usr.sbin.mysqld 文件中添加如下所示的行,距文件末尾约 6 行。根据 /var/run/mysql/mysqld.sock 的类似现有条目,该位置应该非常明显:
/home/mysql/mysql.sock rw,
您想在那时重新启动 apparmor 然后 mysqld,或者只是重新启动以彻底重新启动所有内容。
请注意,您添加到 apparmor 的这些类型的非标准配置选项可能会使您面临安全问题。这也可能会在您运行更新管理器时导致冲突,并且如果您将来更新或重新安装 ubuntu,您可能需要再次手动编辑更改。