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