MySQL: Сделать дамп базы данных и восстановить базу данных из дампа в консоли

Для того, чтобы сделать дамп базы данных в текстовый файл существует стандартная утилита из поставки MySQL — mysqldump. Приведу пример ее использования:

$ mysqldump --databases --add-drop-table --force -c --password=<пароль> --user=<имя пользователя> <имя базы данных> > ~/sql-dumps/<имя базы данных>.sql

Можно этот процесс немного автоматизировать и добавить к имени файла время выгрузки дампа, особенно если вы делаете несколько дампов в один день, я работаю в GNU/Linux и использую вот такой скрипт на языке shell, для пользователей Windows он конечно не подойдет:

#!/bin/bash
  month=`date +%m`
  mday=`date +%d`
  year=`date +%y`
  hour=`date +%h`
  minute=`date +%m`
  second=`date +%s`
  filedate="$year""_$month""_$mday""_$second""_$minute""_$hour"
  mysqldump --databases --add-drop-table --force -c --password=userpassword --user=username mybase > ~/sql-dumps/$filedate"-mybase.sql"

Чтобы восстановить базу данных из дампа, можно выполнить в консоли, следующую команду:

$ mysql -u <имя пользователя>  -p<пароль> < ~/sql-dumps/<имя базы данных>.sql

Будьте осторожны! Все ваши текущие таблицы будут заменены на таблицы из дампа без предупреждения!

MySQL: Создаем новую базу данных и даем на нее права пользователю

Иногда из консоли работать с MySQL быстрее и достаточнее, чем используя phpMyAdmin или другие графические интерфейсы пользователя, особенно если вам нужно выполнить лишь одну или несколько команд.

Запускаем консоль и вводим следующую команду для доступа к MySQL:

$ mysql -h localhost -p<пароль> -u<имя пользователя>

Для создания новой базы данных, обычно используют следующую команду:

mysql> CREATE DATABASE IF NOT EXISTS `<имя базы данных>`;

Чтобы дать все права на базу данных cуществующему пользователю:

mysql> GRANT ALL PRIVILEGES ON `<база данных>`.* TO `<имя пользователя>`@`%` WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Чтобы дать все права на базу данных пользователю, который еще не существует в MySQL:

mysql> GRANT ALL PRIVILEGES ON `<база данных>`.* TO `<имя создаваемого пользователя>`@`%` IDENTIFIED BY `<пароль создаваемого пользователя>` WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

Чтобы забрать у пользователя право доступа к базе данных с любых ip-адресов и дать только локальный доступ:

mysql> REVOKE USAGE ON `<база данных>`.* FROM `<имя пользователя>`@`%`;
mysql> FLUSH PRIVILEGES;
mysql> GRANT USAGE ON `<база данных>`.* TO `<имя пользователя>`@`localhost`;
mysql> FLUSH PRIVILEGES;