Главная > Всячина > MYSQL: database dump and CREATE USER (quick reference)

MYSQL: database dump and CREATE USER (quick reference)

Опишу 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: Всячина Tags: ,
  1. Dimas
    23 декабря 2011 в 04:17 | #1

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

  2. 27 декабря 2011 в 16:42 | #2

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

Подписаться на комментарии по RSS