Управление сервером MySQL

Шпаргалка по серверным командам для MySQL

Управление пользователями

Список пользователей
#mysql> SELECT User,Host FROM mysql.user;
Список прав у пользователя root@localhost
#mysql> SHOW GRANTS FOR root@localhost;
Добавление нового пользователя
#mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
Добавление привилегий для всех таблиц БД dbname пользователю 'user'@'localhost'
#mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX ON dbname.* TO 'user'@'localhost';
Добавление всех привилегий для всех таблиц БД dbname пользователю 'user'@'localhost'
#mysql> GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
Удаление прав для пользователя 'user'@'localhost' для БД dbname:
#mysql> REVOKE ALL ON dbname.* FROM 'user'@'localhost';
Перезагрузка привилегий
#mysql> FLUSH PRIVILEGES;
Новый пароль для root
#mysqladmin -uroot password 'secret'

Управление базой данных
Добавление новой базы данных
#mysql> CREATE DATABASE dbname COLLATE utf8_general_ci;
Добавление новой базы данных из консоли
#mysqladmin -u root -p create dbname
Удаление базы данных из консоли
#mysqladmin -u root -p drop dbname

Cтатистика
Показать все базы данных
#mysql> SHOW DATABASES;
Показать все таблицы в выбранной базе данных
#mysql> SHOW TABLES;
Статистика работы сервера
#mysql> SHOW GLOBAL STATUS;

Оптимизация
Поверка базы данных dbname
#mysqlcheck -p dbname
Исправление и оптимизация всех БД
#mysqlcheck -Aor -p
аргументы:
-p – использовать пароль
-A – проверять все базы данных
-r – ремонтировать БД
-o – оптимизировать БД

Дамп базы данных
Дамп для выбранных баз данных
#mysqldump -u root -p -B dbname1 dbname2 > dump.sql
Резервная копия для всех баз
#mysqldump -u root -p -A > dump.sql
Дамп только структуры баз, без включения в дамп данных
#mysqldump -u root -p --no-data dbname > database.sql
Опции
--add-drop-table - добавляет DROP TABLE перед CREATE TABLE
--add-locks - добавляет LOCK TABLES перед и UNLOCK TABLE после выполнения каждого дампа таблицы
--no-create-db, -n - не добавлять REATE DATABASE
--no-data, -d - дамп только структуры таблиц
--no-create-info, -t - не создавать CREATE TABLE
--skip-comments - не выводить комментарии.
--compact - использовать компактный формат
--create-options - добавляет дополнительную информацию CREATE TABLE: тип, значение AUTO_INCREMENT и др. ( Если какая то опции не нужна - можно вырезать с помощью sed.)
--extended-insert, -e - применение INSERT с многострочным синтаксисом
--tables - дамп только таблицы из списка, следующего за этим параметром, разделитель - пробел
Восстановление базы из дампа
#mysql -uroot -p dbname1 < dump.sql
Определение кодировки файла
file --mime-encoding dump.sql
Конвертирование latin1 -> utf8
mysqldump --add-drop-table -uroot -p dbname | replace CHARSET=latin1 CHARSET=utf8 | iconv -f latin1 -t utf8 | mysql -uroot -p dbname

Восстановление root-пароля БД
#service mysqld stop
#mysqld_safe --skip-grant-tables &
#mysql

#mysql> UPDATE mysql.user SET Password=PASSWORD("secret") WHERE User='root';
#mysql> FLUSH PRIVILEGES;
#mysql> q

#service mysqld restart