我在 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
。