mysql/mariadb контейнера в другой.dump родительской базы в докере mysql/mariadb, командой mysqldump:Вводим в терминал сервера:
docker exec -it имяКонтейнераРодительскойСубд mysqldump -u root --password=парольОтРут имяБД > /путь/имяБэкапа.sql
пользователя, пароль, и базу данных.Вводим в терминал сервера:
docker exec -it mariadb mysql -u root --password=парольОтРут \
-e "CREATE USER 'user' IDENTIFIED by 'password';" \
-e "CREATE DATABASE IF NOT EXISTS database;" \
-e "GRANT ALL PRIVILEGES ON database.* TO 'user' IDENTIFIED BY 'password';"
dump в новую базу, с командой mysql:Вводим в терминал сервера:
cat /путь/имяБэкапа.sql | docker exec -i mariadb mysql -u root --password=парольОтРут имяБД
пользователя, пароль, базу и даем права.
- логин:
user- пароль:
password- база данных:
database
docker exec -it mariadb mysql -u root --password=парольОтРут \
-e "CREATE USER 'user' IDENTIFIED by 'password';" \
-e "CREATE DATABASE IF NOT EXISTS database;" \
-e "GRANT ALL PRIVILEGES ON database.* TO 'user' IDENTIFIED BY 'password';"
mysql -u root -p
root.CREATE USER 'user' IDENTIFIED by 'password';
CREATE DATABASE IF NOT EXISTS database;
GRANT ALL PRIVILEGES ON database.* TO 'user' IDENTIFIED BY 'password';
quit
Cлучается так, что запрос - это всего лишь косвенная причина неправильного поведения, а истинная причина в настройках.
Один из вариантов - маленькийmax_allowed_packetдля передаваемых данных.
MySQL сервера max_allowed_packet определяет максимально возможный объём данных, которые MySQL сервер может получать или отдавать. Размер max_allowed_packet задан в байтах.docker exec -it mariadb mysql -u root --password=парольОтРут
SET GLOBAL max_allowed_packet=268435456;
Post Arguments:--max-allowed-packet=256MB
Смотрим значение внутри контейнера:show variables like '%max_allowed_packet%';
Заходим в терминал контейнера, через терминал сервера.
docker exec -it mariadb mysql -u root --password=парольОтРут
show databases;
SELECT DISTINCT User FROM mysql.user;
SELECT User, Host, Password FROM mysql.user;
mysqldump:docker exec -it mariadb mysqldump -u root --password=парольОтРут имяБД > /путь/имяБэкапа.sql
docker exec -it mariadb mysqldump -u root --password=парольОтРут имяБД | gzip > /путь/имяБэкапа.sql.gz
mysql.Предварительно нужно создать пустую базу, пользователя, дать права.
В примере база данныхyourls.
yourls, пользователя yourls с паролем password:docker exec -it mariadb mysql -u root --password=парольОтРут \
-e "CREATE USER 'yourls' IDENTIFIED by 'password';" \
-e "CREATE DATABASE IF NOT EXISTS yourls;" \
-e "GRANT ALL PRIVILEGES ON yourls.* TO 'yourls' IDENTIFIED BY 'password';"
yourls:cat /путь/имяБэкапа.sql | docker exec -i mariadb mysql -u root --password=парольОтРут yourls
mysql.Предварительно нужно создать пустую базу, пользователя, дать права.
В примере база данныхyourls.
yourls, пользователя yourls с паролем password:docker exec -it mariadb mysql -u root --password=парольОтРут \
-e "CREATE USER 'yourls' IDENTIFIED by 'password';" \
-e "CREATE DATABASE IF NOT EXISTS yourls;" \
-e "GRANT ALL PRIVILEGES ON yourls.* TO 'yourls' IDENTIFIED BY 'password';"
yourls:gunzip < /путь/имяБэкапа.sql.gz | docker exec -i mariadb mysql -u root --password=парольОтРут yourls