Mysql права
###############################
Создаем базу данных test_db
mysql> CREATE DATABASE test_db;
Добавляем пользователя john для новой базы данных. Назначаем ему пароль pass и даем доступ к базе только с самого сервера (localhost)
mysql> GRANT ALL PRIVILEGES ON test_db.* TO john@localhost IDENTIFIED BY ‘pass’;
FLUSH PRIVILEGES;
###############################
Изменить Пароль Пользователя в MySQL?
Шаг 1 : Логинимся в MySQL под рутом
$ mysql -u root -p
Шаг 2 : Подключаемся к базе ‘mysql’
mysql> use mysql;
Шаг 3 : Задаем новый пароль для пользователя John
mysql> update user set password=PASSWORD(‘NEW-PASSWORD-HERE’) where User=’John’;
Шаг 4 : Обновляем привилегии
mysql> flush privileges;
##############
Удаление пользователя
mysql> DROP USER user@localhost;
Удаление прав пользователя ‘user’@’localhost’ для БД dbname:
mysql> REVOKE ALL ON dbname.* FROM ‘user’@’localhost’;
Перезагрузка привилегий
mysql> FLUSH PRIVILEGES;
###############
УДАЛЕНИЕ ПОЛЬЗОВАТЕЛЯ БАЗЫ ДАННЫХ
1)Соединяемся с локальной СУБД
$ mysql -u root -p
2) Посмотрим на имеющиеся базы данных
mysql> SHOW DATABASES;
3)Перейдем в базу «mysql»
mysql> USE mysql;
Database changed
4)Посмотрим таблицы
mysql> SHOW TABLES;
5)Посмотрим таблицу «user»
mysql> DESC user;
6)Выберем поля из таблицы «user»
mysql> SELECT host,user,password FROM user;
7)Удалим строки из таблицы «user», соответствующие имени пользователя «myuser»
mysql> DELETE FROM user WHERE user = ‘myuser’;
8Либо удалим строки, соответствующие удаленному хосту «10.0.1.25»
mysql> DELETE FROM user WHERE host = ‘10.0.1.25’;
9)Проверим изменения
mysql> SELECT host,user,password FROM user;
10)Применим изменения
mysql> FLUSH PRIVILEGES;
######################
########################
Резервное копирование Базы Данных
Используйте следующую команду для резервного копирования базы данных :
$ mysqldump —opt -u [username] -p[password] [dbname] > [backupfile.sql]
Резервное копирование нескольких Баз Данных
Используйте следующую команду для резервного копирования нескольких баз данных :
$ mysqldump —opt -u [username] -p[password] —databases [dbname_1] [dbname_2]
Резервное копирование всех Баз Данных
Используйте следующую команду для резервного копирования всех баз данных :
$ mysqldump —opt -u [username] -p[password] —all-databases > [backupfile.sql]
Пример :
$ mysqldump —opt -u root -pSeCrEt —all-databases > all_db_backup.sql
Резервное копирование Базы Данных с сжатием
Пример :$ mysqldump —opt -u root -pSeCrEt customers_db | gzip -9 > customers_db_backup.sql.gz
Для извлечения *.gz архива, используйте команду ниже :
gunzip customers_db_backup.sql.gz
###########################
Восстановление существующей Базы Данных
Восстановление новой Базы Данных
1. Создайте базу данных с соответствующим названием на целевом сервере.
Пример :
mysql> CREATE DATABASE customers_db;
2. Загрузите файл sql дампа, используя команду ‘mysql’ :
$ mysql -u [username] -p[password] [db_to_restore] < [backupfile.sql]
Пример :
$ mysql -u root -pSeCrEt customers_db < customers_db_backup.sql
Если sql дамп был предварительно сжат, Вы можете Выполнить следующее :
$ gunzip < [backupfile.sql.gz] | mysql -u [username] -p[password] [dbname]
Пример :
$ gunzip < customers_db_backup.sql.gz | mysql -u root -pSeCrEt customers_db
###############################
Сброс пароля mysql root- пользователя в ОС Linux
1) Соединяемся с сервером по протоколу ssh или входим в качестве root
2) Останавливаем MySQL:
/etc/init.d/mysql stop
3) Запускаем MySQL с особыми параметрами:
/usr/bin/mysqld_safe —skip-grant-tables —user=root &
4) Запускаем клиента MySQL:
mysql -u root
5) Выполняем запрос SQL:
UPDATE mysql.user SET Password=PASSWORD(‘newpassword’) WHERE User=’root’;
слово newpassword будет новым паролем
6) Применяем изменения:
FLUSH PRIVILEGES;
7) Выходим из клиента MySQL:
\q
8) Перезапускаем MySQL сервер:
/etc/init.d/mysql restart
На этом всё — пароль MySQL изменён.
######################
Разрешаем подключаться к MySQL удаленно
GRANT ALL PRIVILEGES ON *.* TO ‘новый_пользователь’@’удаленный_адрес’ IDENTIFIED BY ‘пароль’ WITH GRANT OPTION;
Эта строчка создает пользователя с неограниченными правами, что делать не совсем правильно.
Правильнее максимально ограничить доступ пользователя, который подключается удаленно. Поэтому команда может выглядеть так:
GRANT SELECT,INSERT,DELETE,UPDATE,CREATE,ALTER ON ‘имя_базы’.* TO ‘новый_пользователь’@’удаленный_адрес’ IDENTIFIED BY ‘пароль’ WITH GRANT OPTION;
ALL PRIVILEGES – все права на указанный объект за исключением назначения прав на этот объект;
CREATE – право на создание таблицы;
ALTER – право на изменение таблицы;
DROP – право на уничтожение таблицы;
LOCK TABLES – право на блокировку таблицы;
CREATE TEMPORARY TABLES – право на создание временных таблиц;
CREATE ROUTINE – право на создание хранимых процедур и функций;
ALTER ROUTINE – право на изменение или уничтожение хранимых процедур и функций;
CREATE VIEW – право на создание представления;
TRIGGER – право на создание и уничтожение триггеров;
INDEX – права на создание и уничтожение индексов;
EXECUTE – право на выполнения хранимых процедур и функций;
EVENT – право на создание событий;
CREATE USER – права на создание, уничтожение, переименование пользователя и снятия все прав. Назначается только на глобальном уровне;
SELECT – право на выборку;
DELETE – право на удаление;
INSERT – право на вставку;
UPDATE – право на обновление;
FILE – право на использование команд SELECT … INTO OUTFILE и LOAD DATA INFILE;
PROCESS – право на просмотр всех процессов командой SHOW PROCESSLIST;
SHOW DATABASES – право на просмотр списка схем;
SHOW VIEW – право на просмотр списка представлений;
SHUTDOWN – право на закрытие;