Сброс пароля

# Запуск сервера без проверки пароля
$ mysqld --skip-grant-tables

# Вариант 1
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('новый    пароль')\g

# Вариант 2
mysql> use mysql;
mysql> update user set password=PASSWORD("новый пароль") where user='root' and host='localhost';
mysql> flush privileges;

# Выдрать одну базу данных
$ cat dump.sql | sed -n -e '/^CREATE DATABASE.*`<base_name>`/,/^CREATE DATABASE/ p' | sed -e '$d' > <base_name>.sql

# Посмотреть движок таблиц
mysql> SELECT table_schema, table_name
    FROM INFORMATION_SCHEMA.TABLES
    WHERE engine = 'innodb'; # myisam

SHOW [ GLOBAL ] VARIABLES Вывести список системных переменных Mysql сервера. Переменные могут быть глобальные ( GLOBAL ) и сессионные ( SESSION ). Если не указано, какого именно типа, переменные нужно вывести, будут выведены сессионные переменные.

SHOW [ GLOBAL ] VARIABLES LIKE ‘%часть_имени_переменной%’ Более удобный вариант команды. Знак процента, является шаблоном и соответствует любым символам.

SET [ GLOBAL ] имя_переменной=значение | имя_переменной=DEFAULT Оператор SET, устанавливает значение переменной. Имейте в виду, не все переменные можно изменить через консольный клиент, многие инициализируются при запуске Mysql сервера, с помощью соответствующих опций командной строки или через установку в файле конфигурации my.cnf. При попытке изменить значение такой переменной, будет выведено сообщение об ошибке. Что-бы переменная приняла значение по умолчанию, можно в качестве значения использовать ключевое слово DEFAULT. Как и в случае с командой SHOW, если не указан тип переменной, значение будет установлено для сессионной ( локальной ) переменной.

SHOW [ GLOBAL ] STATUS [ LIKE ‘%имя_переменной%’ ] Выведет статусные переменные ( счетчики ) с их значениями. Поведение с ключевым словом GLOBAL и без него, аналогично команде SHOW VARIABLES.

SHOW DATABASES Вывести список существующих баз данных

USE имя_базы_данных Перейти в базу данных имя_базы_данных, сделав ее текущей

SHOW TABLES [ FROM имя_базы_данных ] Если не указана конструкция FROM, выведет список таблиц в текущей базе данных.

CHECK TABLE имя_таблицы [ FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED ] Проверка таблицы на предмет ошибок в различных режимах.

OPTIMIZE TABLE имя_таблицы Оптимизация таблиц.

REPAIR TABLE имя_таблицы Попробовать отремонтировать таблицу. Этот оператор тоже имеет несколько опций, но в обычном случае достаточно простого REPAIR TABLE. Если для ремонта таблиц, вдруг надумаете использовать дополнительные опции, советую сначала ознакомиться с документацией по их применению и возможным последствиям.)

SELECT user, host FROM mysql.user Это обычный SQL запрос к таблице user системной базы данных mysql, в результате которого будет выведен список всех существующих пользователей и хостов.

CREATE USER ‘user’@‘localhost’ IDENTIFIED BY ‘password’ Создать пользователя mysql с именем user для хоста localhost, то есть только для локального подключения, с паролем password. В Mysql можно ограничить пользователя, разрешив ему подключаться только с определенного хоста, это может быть как IP адрес, так и доменное имя. Если при создании, указывается только имя пользователя, то есть такой вариант команды - CREATE USER boom , в качестве хоста назначается шаблон %, означающий, что данный пользователь может соединяться с Mysql сервером откуда угодно. Кроме того, для данного пользователя будет задан пустой пароль. Если есть такая возможность, в целях безопасности, лучше ограничивать пользователей по IP адресам.

RENAME USER ‘user’@‘host’ TO ‘user2’@‘host’ Переименовать пользователя. Не работает в старых версиях Mysql ( не помню точно с какой версии появилась ). Если в имени назначения опустить имя host, будет присвоен шаблон %, то есть любой.

DROP USER имя_пользователя Удалить пользователя.

SET PASSWORD FOR ‘user’@‘host’ = PASSWORD(‘password’) Назначить или изменить пароль пользователя. То-же самое можно сделать с помощью SQL оператора UPDATE , изменив поле Password в системной таблице User, для определенного пользователя.

GRANT ALL ON data_base.* TO ‘user’@‘host’ [ IDENTIFIED BY ‘secret’ ] Назначает права пользователю. В Mysql достаточно гибкая система привилегий, имеющая несколько уровней, глобальный, уровень базы данных,уровень таблицы и уровень столбца. Для меня, приведенный выше вариант, является самым распространенным. Мы назначаем все права ( кроме GRANT OPTION - право управлять правами других пользователей ), на все таблицы базы данных data_base ( обратите внимание, если в имени базы данных присутствует знак подчеркивания, его нужно экранировать обратным слешем ), для пользователя user с хостом host. При указании конструкции IDENTIFIED BY ‘secret’, пользователю будет назначен пароль ‘secret’, если у пользователя уже был установлен пароль, он будет заменен на ‘secret’.

REVOKE ALL ON . FROM ‘user’@‘host’ Противоположность предыдущей команды, отнимает права пользователя.