#mysql #linux
#mysql #linux
Вопрос:
Я пытаюсь сделать резервные копии таблиц в базе данных с терминала Linux. Для этого я использую следующий скрипт
GIT_MYSQL=/data/database/location to store
for T in `mysql -u [user] -h [Hostname] -p [database] -N -B -e 'show tables from database_name'`;
do
echo "Backing up $T"
mysqldump --skip-comments --compact -u [user] -p [password] [database] $T > $GIT_MYSQL/$T.sql
done;
Я получаю следующую ошибку:
mysqldump: Получена ошибка: 2002: Не удается подключиться к локальному серверу MySQL через сокет ‘/ var / lib / mysql / mysql.sock’ (2) при попытке подключиться
Мой mysql.sock отсутствует в папке
Ответ №1:
Вам нужна -h [Hostname]
опция mysqldump
, иначе он попытается выгрузить данные из локальной базы данных, а не с удаленного сервера, с которого вы получили список таблиц.
И чтобы ввести пароль в командной строке, а не запрашивать его, вам нужно использовать --password=[password]
или -p[password]
; перед паролем не должно быть пробела.
mysqldump --skip-comments --compact -u [user] -h [Hostname] -p'[password]' [database] $T > $GIT_MYSQL/$T.sql
Комментарии:
1. Спасибо, это сработало. Кроме того, есть ли способ аналогичным образом создавать резервные копии хранимых процедур и функций?
2. Смотрите dev.mysql.com/doc/refman/8.0/en/mysqldump-stored-programs.html
3. Как я могу их получить, это отдельные файлы. Есть ли команда типа «Показать таблицы из базы данных», чтобы показать имена процедур и функций stores, чтобы я мог перебирать их.
4. Мне это нужно для процедур и функций. Таблица готова.
5. Что бы вы сделали со списком имен процедур? Опция выгрузки процедур не позволяет указывать имя процедуры, она выгружает их все.