- Главная Список форумов Модули и инструменты
- Поиск
-
- Текущее время: 19 апр 2025, 04:41
- Часовой пояс: UTC+03:00
Информация: Конференция переехала на GitHub. Старый форум доступен только для чтения.
@echo off rem записываем все базы в файл mysql -u root -p -e "SHOW DATABASES;" > tempos1.tmp rem удаляем из файла системные базы findstr /V /R /I "^Database$ ^information_schema$ ^performance_schema$ ^mysql$ ^sys$" tempos1.tmp > tempos2.tmp rem экспортируем все оставшиеся базы for /F "tokens=*" %%A in (tempos2.tmp) do mysqldump -v -u root -p --databases %%A > %%A.sql rem удаляем временные файлы del /q tempos1.tmp del /q tempos2.tmpесли пишу пароль прям в файл то получаю ошибку
Сделал указанные Вами настройки и действительно теперь когда просто ввожуSagePointer писал(а): ↑06 мар 2021, 15:58 Рекомендованный разработчиками MySQL способ - через mysql_config_editor задать данные:
mysql_config_editor set --login-path=ххххх --host=localhost --user=root --password
(где вместо ххххх придумать имя для сохранённого профиля)
После этого в командах mysql и mysqldump использовать первым параметром не -u root -p, а --login-path=ххххх
https://dev.mysql.com/doc/refman/8.0/en ... ditor.html
@echo off rem записываем все базы в файл mysql --login-path=client -e "SHOW DATABASES;" > tempos1.tmp rem удаляем из файла системные базы findstr /V /R /I "^Database$ ^information_schema$ ^performance_schema$ ^mysql$ ^sys$" tempos1.tmp > tempos2.tmp rem экспортируем все оставшиеся базы for /F "tokens=*" %%A in (tempos2.tmp) do mysqldump -v --login-path=client --databases %%A > %%A.sql rem удаляем временные файлы del /q tempos1.tmp del /q tempos2.tmpНЕ РАБОТАЕТ теперь вот что пишет
@echo off rem Указание пути к исполняемому файлу 'mysql' set PATH=%PATH%;C:\ospanel\modules\database\MariaDB-10.x\bin set usr=root set pwd=root rem Получение списка баз данных mysql --user=%usr% --password=%pwd% --execute="SHOW DATABASES WHERE NOT `Database` IN ('mysql', 'information_schema', 'performance_schema', 'sys');" --skip-column-names > %~dp0databases.tmp rem Создание резервных копий всех баз данных for /f "tokens=*" %%D in ('type databases.tmp') do ( echo Backuping DB '%%D' mysqldump --user=%usr% --password=%pwd% %%D > %~dp0%%D.sql ) rem Удаление временных файлов del %~dp0databases.tmp pause
Параметр login-path должен идти до других параметров, потому поменяйте местами:
Спасибо теперь все работает автоматомSagePointer писал(а): ↑06 мар 2021, 18:55Параметр login-path должен идти до других параметров, потому поменяйте местами:
for /F "tokens=*" %%A in (tempos2.tmp) do mysqldump --login-path=client -v --databases %%A > %%A.sql
@echo off rem записываем все базы в файл mysql --login-path=client -e "SHOW DATABASES;" > tempos1.tmp rem удаляем из файла системные базы findstr /V /R /I "^Database$ ^information_schema$ ^performance_schema$ ^mysql$ ^sys$" tempos1.tmp > tempos2.tmp rem экспортируем все оставшиеся базы for /F "tokens=*" %%A in (tempos2.tmp) do mysqldump --login-path=client -v --databases %%A > %%A.sql rem удаляем временные файлы del /q tempos1.tmp del /q tempos2.tmpОстался последний вопрос как потом запаковать каждый файл в zip или gz архив ?
Я у себя на сервере делал это при помощи 7zip, вот из моего bash-скрипта кусок:
databases=`$MYSQL --login-path=$MYSQL_LOGIN_PATH -e "SHOW DATABASES;" | grep -Ev "^(Database|information_schema|performance_schema|sys)$"` for db in $databases; do $MYSQLDUMP --login-path=$MYSQL_LOGIN_PATH --default-character-set=utf8mb4 --force --opt --events --routines --triggers --hex-blob --databases $db | $SEVENZIP a $ARCHIVE_NAME "-si$db.sql" -t7z -mx7 doneПод винду наверняка можно похожим образом сделать, в синтаксисе bat-файлов не очень разбираюсь.