databacker / mysql-backup

image to enable automated backups of mysql databases in containers
643 stars 180 forks source link

ERROR 1046 (3D000) at line 22: No database selected #118

Open samuira opened 5 years ago

samuira commented 5 years ago

I am trying to restore using docker-compose file. docker-compose:- restore: image: databack/mysql-backup restart: always volumes:

It gives ERROR 1046 (3D000) at line 22: No database selected. Also, I have tried with this code - DB_NAMES=db. but I got the same error.

deitch commented 5 years ago

Looks like you enabled debug. Can you paste the lines here or link to a gist? Please be careful to scrub any sensitive data.

JVT038 commented 1 year ago

I have the same issue trying to restore my vaultwarden database. This is my log:

+ file_env DB_SERVER
+ local var=DB_SERVER
+ local fileVar=DB_SERVER_FILE
+ local def=
+ '[' internalip ']'
+ '[' '' ']'
+ local val=
+ '[' internalip ']'
+ val=internalip
+ export DB_SERVER=internalip
+ DB_SERVER=internalip
+ unset DB_SERVER_FILE
+ file_env DB_PORT
+ local var=DB_PORT
+ local fileVar=DB_PORT_FILE
+ local def=
+ '[' 3306 ']'
+ '[' '' ']'
+ local val=
+ '[' 3306 ']'
+ val=3306
+ export DB_PORT=3306
+ DB_PORT=3306
+ unset DB_PORT_FILE
+ file_env DB_USER
+ local var=DB_USER
+ local fileVar=DB_USER_FILE
+ local def=
+ '[' root ']'
+ '[' '' ']'
+ local val=
+ '[' root ']'
+ val=root
+ export DB_USER=root
+ DB_USER=root
+ unset DB_USER_FILE
+ file_env DB_PASS
+ local var=DB_PASS
+ local fileVar=DB_PASS_FILE
+ local def=
+ '[' 'mypassword' ']'
+ '[' '' ']'
+ local val=
+ '[' 'mypassword' ']'
+ val='mypassword'
+ export 'DB_PASS=mypassword'
+ DB_PASS='mypassword'
+ unset DB_PASS_FILE
+ file_env DB_NAMES
+ local var=DB_NAMES
+ local fileVar=DB_NAMES_FILE
+ local def=
+ '[' vaultwarden ']'
+ '[' '' ']'
+ local val=
+ '[' vaultwarden ']'
+ val=vaultwarden
+ export DB_NAMES=vaultwarden
+ DB_NAMES=vaultwarden
+ unset DB_NAMES_FILE
+ file_env DB_NAMES_EXCLUDE
+ local var=DB_NAMES_EXCLUDE
+ local fileVar=DB_NAMES_EXCLUDE_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export DB_NAMES_EXCLUDE=
+ DB_NAMES_EXCLUDE=
+ unset DB_NAMES_EXCLUDE_FILE
+ file_env DB_DUMP_FREQ 1440
+ local var=DB_DUMP_FREQ
+ local fileVar=DB_DUMP_FREQ_FILE
+ local def=1440
+ '[' '' ']'
+ local val=1440
+ '[' '' ']'
+ '[' '' ']'
+ export DB_DUMP_FREQ=1440
+ DB_DUMP_FREQ=1440
+ unset DB_DUMP_FREQ_FILE
+ file_env DB_DUMP_BEGIN +0
+ local var=DB_DUMP_BEGIN
+ local fileVar=DB_DUMP_BEGIN_FILE
+ local def=+0
+ '[' '' ']'
+ local val=+0
+ '[' '' ']'
+ '[' '' ']'
+ export DB_DUMP_BEGIN=+0
+ DB_DUMP_BEGIN=+0
+ unset DB_DUMP_BEGIN_FILE
+ file_env DB_DUMP_DEBUG
+ local var=DB_DUMP_DEBUG
+ local fileVar=DB_DUMP_DEBUG_FILE
+ local def=
+ '[' true ']'
+ '[' '' ']'
+ local val=
+ '[' true ']'
+ val=true
+ export DB_DUMP_DEBUG=true
+ DB_DUMP_DEBUG=true
+ unset DB_DUMP_DEBUG_FILE
+ file_env DB_DUMP_TARGET /backup
+ local var=DB_DUMP_TARGET
+ local fileVar=DB_DUMP_TARGET_FILE
+ local def=/backup
+ '[' '' ']'
+ local val=/backup
+ '[' '' ']'
+ '[' '' ']'
+ export DB_DUMP_TARGET=/backup
+ DB_DUMP_TARGET=/backup
+ unset DB_DUMP_TARGET_FILE
+ file_env DB_DUMP_BY_SCHEMA
+ local var=DB_DUMP_BY_SCHEMA
+ local fileVar=DB_DUMP_BY_SCHEMA_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export DB_DUMP_BY_SCHEMA=
+ DB_DUMP_BY_SCHEMA=
+ unset DB_DUMP_BY_SCHEMA_FILE
+ file_env DB_DUMP_KEEP_PERMISSIONS true
+ local var=DB_DUMP_KEEP_PERMISSIONS
+ local fileVar=DB_DUMP_KEEP_PERMISSIONS_FILE
+ local def=true
+ '[' '' ']'
+ local val=true
+ '[' '' ']'
+ '[' '' ']'
+ export DB_DUMP_KEEP_PERMISSIONS=true
+ DB_DUMP_KEEP_PERMISSIONS=true
+ unset DB_DUMP_KEEP_PERMISSIONS_FILE
+ file_env DB_RESTORE_TARGET
+ local var=DB_RESTORE_TARGET
+ local fileVar=DB_RESTORE_TARGET_FILE
+ local def=
+ '[' /backup/db_backup_2023-01-23T23:30:01Z.tgz ']'
+ '[' '' ']'
+ local val=
+ '[' /backup/db_backup_2023-01-23T23:30:01Z.tgz ']'
+ val=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ export DB_RESTORE_TARGET=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ DB_RESTORE_TARGET=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ unset DB_RESTORE_TARGET_FILE
+ file_env AWS_ENDPOINT_URL
+ local var=AWS_ENDPOINT_URL
+ local fileVar=AWS_ENDPOINT_URL_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_ENDPOINT_URL=
+ AWS_ENDPOINT_URL=
+ unset AWS_ENDPOINT_URL_FILE
+ file_env AWS_ENDPOINT_OPT
+ local var=AWS_ENDPOINT_OPT
+ local fileVar=AWS_ENDPOINT_OPT_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_ENDPOINT_OPT=
+ AWS_ENDPOINT_OPT=
+ unset AWS_ENDPOINT_OPT_FILE
+ file_env AWS_CLI_OPTS
+ local var=AWS_CLI_OPTS
+ local fileVar=AWS_CLI_OPTS_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_CLI_OPTS=
+ AWS_CLI_OPTS=
+ unset AWS_CLI_OPTS_FILE
+ file_env AWS_CLI_S3_CP_OPTS
+ local var=AWS_CLI_S3_CP_OPTS
+ local fileVar=AWS_CLI_S3_CP_OPTS_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_CLI_S3_CP_OPTS=
+ AWS_CLI_S3_CP_OPTS=
+ unset AWS_CLI_S3_CP_OPTS_FILE
+ file_env AWS_ACCESS_KEY_ID
+ local var=AWS_ACCESS_KEY_ID
+ local fileVar=AWS_ACCESS_KEY_ID_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_ACCESS_KEY_ID=
+ AWS_ACCESS_KEY_ID=
+ unset AWS_ACCESS_KEY_ID_FILE
+ file_env AWS_SECRET_ACCESS_KEY
+ local var=AWS_SECRET_ACCESS_KEY
+ local fileVar=AWS_SECRET_ACCESS_KEY_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_SECRET_ACCESS_KEY=
+ AWS_SECRET_ACCESS_KEY=
+ unset AWS_SECRET_ACCESS_KEY_FILE
+ file_env AWS_DEFAULT_REGION
+ local var=AWS_DEFAULT_REGION
+ local fileVar=AWS_DEFAULT_REGION_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export AWS_DEFAULT_REGION=
+ AWS_DEFAULT_REGION=
+ unset AWS_DEFAULT_REGION_FILE
+ file_env SMB_USER
+ local var=SMB_USER
+ local fileVar=SMB_USER_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export SMB_USER=
+ SMB_USER=
+ unset SMB_USER_FILE
+ file_env SMB_PASS
+ local var=SMB_PASS
+ local fileVar=SMB_PASS_FILE
+ local def=
+ '[' '' ']'
+ local val=
+ '[' '' ']'
+ '[' '' ']'
+ export SMB_PASS=
+ SMB_PASS=
+ unset SMB_PASS_FILE
+ file_env TMP_PATH /tmp
+ local var=TMP_PATH
+ local fileVar=TMP_PATH_FILE
+ local def=/tmp
+ '[' '' ']'
+ local val=/tmp
+ '[' '' ']'
+ '[' '' ']'
+ export TMP_PATH=/tmp
+ TMP_PATH=/tmp
+ unset TMP_PATH_FILE
+ file_env COMPRESSION gzip
+ local var=COMPRESSION
+ local fileVar=COMPRESSION_FILE
+ local def=gzip
+ '[' '' ']'
+ local val=gzip
+ '[' '' ']'
+ '[' '' ']'
+ export COMPRESSION=gzip
+ COMPRESSION=gzip
+ unset COMPRESSION_FILE
+ [[ -n true ]]
+ set -x
+ MYSQLDUMP_OPTS=
+ '[' -n root ']'
+ DBUSER=-uroot
+ '[' -n 'mypassword' ']'
+ DBPASS='-pmypassword'
+ '[' -z internalip ']'
+ '[' -z 3306 ']'
+ COMPRESS=
+ UNCOMPRESS=
+ case $COMPRESSION in
+ COMPRESS=gzip
+ UNCOMPRESS=gunzip
+ EXTENSION=tgz
+ TMPDIR=/tmp/backups
+ TMPRESTORE=/tmp/restorefile
+ declare -A uri
+ [[ -n /backup/db_backup_2023-01-23T23:30:01Z.tgz ]]
+ '[' -d /scripts.d/pre-restore/ ']'
+ uri_parser /backup/db_backup_2023-01-23T23:30:01Z.tgz
+ uri=()
+ full=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ full=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ full=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ [[ / == \/ ]]
+ full=file://localhost/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ [[ file://l == \f\i\l\e\:\/\/\/ ]]
+ pattern='^(([a-z0-9]{2,5})://)?((([^:\/]+)(:([^@\/]*))?@)?([^:\/?]+)(:([0-9]+))?)(\/[^?]*)?(\?[^#]*)?(#.*)?$'
+ [[ file://localhost/backup/db_backup_2023-01-23T23:30:01Z.tgz =~ ^(([a-z0-9]{2,5})://)?((([^:\/]+)(:([^@\/]*))?@)?([^:\/?]+)(:([0-9]+))?)(\/[^?]*)?(\?[^#]*)?(#.*)?$ ]]
+ full=file://localhost/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ uri[uri]=file://localhost/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ uri[schema]=file
+ uri[address]=localhost
+ uri[user]=
+ uri[password]=
+ uri[host]=localhost
+ uri[port]=
+ uri[path]=/backup/db_backup_2023-01-23T23:30:01Z.tgz
+ uri[query]=
+ uri[fragment]=
+ [[ file == \s\m\b ]]
+ [[ -n '' ]]
+ return 0
+ [[ file == \f\i\l\e ]]
+ cp /backup/db_backup_2023-01-23T23:30:01Z.tgz /tmp/restorefile
+ [[ -f /tmp/restorefile ]]
+ '[' '' = true ']'
+ DBDATABASE=
+ workdir=/tmp/restore.1
+ rm -rf /tmp/restore.1
+ mkdir -p /tmp/restore.1
+ gunzip
+ tar -C /tmp/restore.1 -xvf -
./
./backup_2023-01-23T23:30:01Z.sql
+ cat /tmp/restore.1/backup_2023-01-23T23:30:01Z.sql
+ mysql -h internalip -P 3306 -uroot '-pmypassword'
ERROR 1046 (3D000) at line 22: No database selected
+ rm -rf /tmp/restore.1
+ /bin/rm -f /tmp/restorefile
+ '[' -d /scripts.d/post-restore/ ']'

My docker run command:

docker run \
    -e DB_SERVER=internalip \
    -e DB_PORT=3306 \
    -e DB_USER=root \
    -e DB_PASS=$VAULTWARDEN_PASS \
    -e DB_NAMES=vaultwarden \
    -e DB_DUMP_DEBUG=true \
    -e SINGLE_DATABASES=true \
    -e DB_RESTORE_TARGET=/backup/db_backup_2023-01-23T23:30:01Z.tgz \
    -v vaultwarden/backup:/backup \
    databack/mysql-backup
deitch commented 1 year ago

Was this dumped from all databases? Or a single one? Can you post some of the contents of the backup file without any sensitive data?

JVT038 commented 1 year ago

It was dumped from a single database. And I don't think I can post any contents of the backup file, as it is primarily sensitive data. (Literally, my password manager) I ultimately recovered my database by manually opening the backup files, extracting the tar files and manually importing the database with the SQL CLI.

deitch commented 1 year ago

What exactly did you do to import manually?

JVT038 commented 1 year ago

The .sql file that was in the tgz file.

deitch commented 1 year ago

Did you run it through cat dump.sql | mysql ...? Did you select a database to use before restoring? And what version of mysql is the backend for vaultwarden here?

If you dump all databases, the restore file can just be passed to mysql; if it is just one database, you might get information that doesn't indicate the database to use in the .sql dump file, so you would need to USE <database> before restoring.

That is why I was asking what is in the .sql file.