Основные операции с mysql
Подключение к mysql
Подключиться в mysql под пользователем root к хосту localhost используя интерактивный ввод пароля:
mysql -u root -p mysql -u root -p dbname
Подключение к удалённому хосту lolomg.ru
mysql -u root -h lolomg.ru -p
Для автоматического входа по паролю сразу (слитно) после ключа -p нужно указать пароль:
mysql -u root -h localhost -pPASSWORD
Управление базами данных
Просмотр списка баз данных:
SHOW DATABASES;
Создание БД:
CREATE DATABASE dbname;также можно использовать утилиту mysqladmin:
mysqladmin -u root -p create dbname
Удалить БД:
DROP DATABASE dbname;или:
mysqladmin -u root -p drop dbname
Установить кодировку
ALTER DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Переключиться на БД:
USE dbname;
Список таблиц в текущей БД:
SHOW TABLES;
Управление привилегиями
Создать пользователя user1 с полными root правами в MySQL и доступом с любого хоста:
GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY 'password1' WITH GRANT OPTION;
Создать пользователя user с полными правами на БД dbname:
GRANT ALL ON dbname.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Дать пользователю права INSERT на базу dbname
GRANT INSERT ON dbname.* TO 'user'@'localhost';
Удаления прав пользователя на БД:
REVOKE ALL ON userdb.* FROM 'user'@'localhost';
Удаление всех прав пользователя (полное удаление):
USE mysql; DELETE FROM USER WHERE USER='user';
Посмотреть список прав для текущего пользователя
SHOW GRANTS;
Посмотреть список прав для пользователя
SHOW GRANTS FOR 'user'@'localhost';
Посмотреть список пользователей
SELECT USER, host FROM mysql.user;
Перезагрузка привилегий:
FLUSH PRIVILEGES;
Еще один способ задать пароль - воспользоваться командой mysqladmin:
mysqladmin -u root password PaS$wOrD
Дамп баз данных
Создание
Для создание дампа БД:
mysqldump --opt -u root -p dbname > dbname.sql
Для всех баз данных можно использоваться ключ --all-databases
По умолчанию хранимые функции и процедуры не бэкапятся, необхожимо добавить ключь -R, (--routines)
Бекап определенной таблицы:
mysqldump --opt -u root -p dbname --tables mytable > dbname.mytable.sql
эквивалентно:
mysqldump --opt -u root -p dbname mytable > dbname.mytable.sql
Сжатие дампа с помощью bzip2:
bzip2 dbname.sql
После сжатия создасться файл dbname.sql.bz2, а dbname.sql удалиться.
Сжатие «на лету»:
mysqldump --opt -u root -p dbname | bzip2 > dbname.sql.bz2
Сжатие «на лету» приводит к бóльшему времени блокировки БД, но позволяет сразу экономить место.
Восстановление
Восстановление БД из файла дампа:
mysql -u root -p dbname < dbname.sql
для сжатого дампа:
bzcat dbname.sql.bz2 | mysql -u root -p dbname
Перенос БД между серверами
Можно выполнить прямой перенос базы данных между серверами командой:
mysqldump --opt -u root -p dbname | mysql --host=remote-host -u user -p -C dbname
Ключ -С указывает режим компрессии данных.
Обсуждение