运行脚本转储所有数据库时出现 mysql 错误

运行脚本转储所有数据库时出现 mysql 错误

我在 centos 上有一个运行良好的 mysql 服务器,我最近得到了一个脚本,用于将所有单个数据库转储到一个文件夹中,当我运行该脚本进行转储时,每次运行该脚本时都会收到此错误

mysqldump: Couldn't execute 'UNLOCK TABLES': MySQL server has gone away (2006)
Db_1
mysqldump: Got error: 2002: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111) when trying to connect
DB2

我甚至/var/lib/mysql/mysql.sock在服务器上,出了什么问题,每次遇到同样的问题时,我甚至尝试使用不同的脚本来执行我的任务,

但是我可以使用登录,mysql -u root -p 我可以转储mysqldump -u root -p db_1 > db_1.sql 而不产生任何问题,但只有当我运行脚本时才会产生问题

脚本行如下,

databases=`$MYSQL --user=$MYSQL_ROOT_USER --password=$MYSQL_ROOT_PASSWORD -e "SHOW DATABASES;" | tr -d "| " | grep -v Database`
for db in $databases; do
echo $db
$MYSQLDUMP --force --opt --user=$MYSQL_ROOT_USER --password=$MYSQL_ROOT_PASSWORD --databases $db > "$OUTPUTDIR/$db.sql"
done

请提出解决方案。

答案1

看到您的错误,由于某种原因,它试图使用不正确的 unix 套接字。

尝试向 mysql 命令添加参数-S /var/lib/mysql/mysql.sock

相关内容