mysql Пользователями и Права на работу с базами и хостами. Создание и выдача прав

Forums:

Основные команды

  • Посмотреть список всех пользователей:
    SELECT User, Host FROM mysql.user;
  • Посмотреть какие права выданы для данного пользователя при подключении с данного хоста:
     SHOW GRANTS FOR имяпользователя@имяхоста;

    например:
    SHOW GRANTS FOR root@localhost;

Создание пользователей и выдача им прав на базу

Вот общий вид команд, которые следует выполнять для создания пользователей после подключения к СУБД в командной строке:

(далее приводится 4-ре команды для создания 3-х пользователей, для 1ого пользователя отделельно указываются правила для подлючения с локального хоста и с остальных адресов)

 
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@'localhost'
	IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
	IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
	
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@'localhost';


mysql> GRANT USAGE ON *.* TO dummy@'localhost';

ПРИМЕЧАНИЕ: вместо *.* ("все базы все таблицы") можно указывать конкретную базу ,например:

mybase.*

(т.е. все таблицы базы mybase)
, тогда права будут дана только на неё.

Эти команды GRANT создают трех новых пользователей:

  1. monty
    Полноценный суперпользователь - он может подсоединяться к серверу откуда угодно, но должен использовать для этого пароль some_pass. Обратите внимание на то, что мы должны применить операторы GRANT как для monty@localhost, так и для monty@"%". Если не добавить запись с localhost, запись анонимного пользователя для localhost, которая создается при помощи mysql_install_db, будет иметь преимущество при подсоединении с локального компьютера, так как в ней указано более определенное значение для поля Host, и она расположена раньше в таблице user.
  2. admin
    Пользователь, который может подсоединяться с localhost без пароля; ему назначены административные привилегии RELOAD и PROCESS. Эти привилегии позволяют пользователю запускать команды mysqladmin reload, mysqladmin refresh и mysqladmin flush-*, а также mysqladmin processlist. Ему не назначено никаких привилегий, относящихся к базам данных (их можно назначить позже, дополнительно применив оператор GRANT).
  3. dummy
    Пользователь, который может подсоединяться к серверу без пароля, но только с локального компьютера. Все глобальные привилегии установлены в значение 'N'-тип привилегии USAGE, который позволяет создавать пользователей без привилегий. Предполагается, что относящиеся к базам данных привилегии будут назначены позже.

Подробности: http://www.mysql.ru/docs/man/Adding_user...

Примеры

Дадим все права + право подключения с локалхост:

GRANT ALL PRIVILEGES ON *.* TO myuser@'localhost'
         IDENTIFIED BY '12345' WITH GRANT OPTION;

Все права + подключение из диапазона ip (в примере ниже локальный диапазон):

GRANT ALL PRIVILEGES ON *.* TO myuser@'192.168.%.%'
         IDENTIFIED BY '12345' WITH GRANT OPTION;

Последний пример позволяет исправить такую ошибку.

Источники