Home > Misc > MYSQL: database dump and CREATE USER (quick reference)

MYSQL: database dump and CREATE USER (quick reference)

December 16th, 2011 Leave a comment Go to comments

Опишу nota bene пару полезных вещей, необходимость которых у меня лично возникает относительно нечасто, и каждый раз приходится гуглить на эту тему. Одна из этих вещей – сохранение mysql базы данных в виде дампа на диске, а также ее восстановление. Вторая – создание пользователя бд mysql и назначение ему различных привилегий. Тут тоже имеются нюансы.  
И так, первая задача. Создать dump базы данных mysql можно при помощи консольной утилиты mysqldump – в Mac OS X она поставляется в комплекте с Community Server. Синтаксис использования:
экспорт всех баз на сервере:

mysqldump --user=XXXXXXXX --password=XXXXXXX -A > /PATH/TO/DUMPFILE.SQL

экспорт баз данных сервера из списка

mysqldump --user=XXXXXXXX --password=XXXXXXX --databases DB_NAME1 DB_NAME2 DB_NAME3 -–routines > /PATH/TO/DUMPFILE.SQL

очень важный параметр -–routines – без него в дамп не будут выгружены хранимые процедуры и функции. По умолчанию он установлен в FALSE
экспорт списка таблиц одной из бд

mysqldump --user=XXXXXXXX --password=XXXXXXXX --databases DB_NAME --tables TABLE_NAME > /PATH/TO/DUMPFILE.SQL

Нюанс. Почему-то в моей Mac OS не настроена переменная PATH для мускульных запчастей, поэтому приходится указывать полный путь к утилитам

/usr/local/mysql/bin/mysqldump

Можно запускать из командной строки с указанием полного пути, а можно добавить в .bash_profile в своей домашней директории строчку

export PATH=$PATH:/usr/local/mysql/bin

Восстановление mysql базы из бэкапа:

mysql --verbose --user=XXXXXXXX --password=XXXXXXXX DB_NAME < /PATH/TO/DUMPFILE.SQL

–verbose можно на самом деле не указывать. использование этого параметра приводит к тому, что весь дамп еще дублируется и в консоль.

Создание пользователя mysql. На данный момент мне нужен пользователь с ограниченными возможностями. Создание пользователей в mysql производится с помощью команды GRANT:

GRANT USAGE ON mydb_name.* TO new_db_usr@localhost IDENTIFIED BY 'pass_for_new_db_user' WITH GRANT OPTION;

При этом создается пользователь, которому доступна только база mydb_name. Никакие объекты базы не доступны данному пользователю после создания. Разрешение на их использование необходимо выдавать отдельно. К примеру, выдадим гранты на newdb_usr:

GRANT INSERT ON mydb_name.mytable TO newdb_usr;
GRANT SELECT ON mydb_name.mytable TO newdb_usr;
GRANT UPDATE ON mydb_name.mytable TO newdb_usr;

синтаксис выдачи гранта на выполнение хранимой процедуры немного отличается от ANSI SQL:

GRANT EXECUTE ON PROCEDURE mydb_name.sp_myproc TO newdb_usr@localhost
Categories: Misc Tags: ,
  1. Dimas
    December 23rd, 2011 at 04:17 | #1

    Добавлю от себя. Без этого ключа –default-character-set=utf8 я не мог влить базу в нужной мне кодировке

  2. December 27th, 2011 at 16:42 | #2

    Посмотрите скрипт создания схемы, там указывается дефолтная кодировка, скорее всего, в этом дело. Я всегда создаю схемы БД так:
    CREATE DATABASE `mydb_name` /*!40100 DEFAULT CHARACTER SET utf8 */