Сегодня хотел бы выложить шпаргалку по основам работы с консолью MySQL. Частенько приходится гуглить то, что забывается через пару часов, а требуется постоянно. Итак, приступим от слов к делу.
Маленькая pdf'ка с типами, командами и запросами
Создание, удаление БД
Создать БД database с кодировкой utf8 и порядком сортировки utf8_general_ci
CREATE DATABASE database CHARACTER SET utf8 COLLATE utf8_general_ci;
Удаление базы данных
DROP DATABASE IF EXISTS database;
Получаем список всех БД
SHOW DATABASES;
Переключаемся на БД database
USE database;
Список всех таблиц в выбранной базе данных
SHOW TABLES;
Пользователи, доступы
Чтобы получить список пользователей:
SELECT User,Host FROM mysql.user;
Следующая команда создаст пользователя user с паролем password:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
Следующая команда даст пользователю user перечисленные привилегии, которые будут работать для всех таблиц БД database:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON database.* TO 'user'@'localhost';
Аналогично предыдущей команде, но привилегии даются все:
GRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';
Меняем пароль для пользователя user на password:
#mysqladmin -uuser password 'password'
Резервное копирование
Команда создаст дамп БД database и запишет в dump.sql. Файл будет лежать в текущей директории.
mysqldump -uuser -p database > dump.sql
Дамп всех баз:
mysqldump -uuser -p -A > dump.sql
Дамп только структуры, без данных:
mysqldump -uuser -p --no-data database > database.sql
Накатываем дамп:
mysql -uuser -p database < dump.sql
Восстановление root-пароля
#service mysqld stop
#mysqld_safe --skip-grant-tables &
#mysql
#mysql> UPDATE mysql.user SET Password=PASSWORD('password') pre User='root';
#mysql> FLUSH PRIVILEGES;
#mysql> \q
#service mysqld restart