mysql создать пользователя и назначить права пользователю

В mysql пользователь создается командой:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

где:

username — имя пользователя

host — хост, с которого этот пользователь будет подключаться, % — любой хост или можно указать IP адрес.

password — пароль.

Обычно пользователя создаем чтобы он работал с какой то базой данных, для этого надо дать возможность пользователю доступ к этой базе данных. Делается это следующей командой:

GRANT type_of_permission ON database.table TO 'name'@'host';

Переводится как назначить права (тип прав) но базу данных такую то, таблицу такую то для пользователя с именем и хостом. Т.е. понятно что пользователь у нас идентифицируется не по какому то там ID’шнику, а по имени и хосту.

Где type_of_permission — это набор команд, которые может запускать пользователь в этой базе данных для этой таблицы. Набор команд можно посмотреть на рисунке ниже

database.table — тут выбираем конкретную базу данных и можно указать вместо table звездочку, тогда у пользователя права будут на все таблицы в этой базе данных.

Например если выбрать все галочки, то команда будет такая:

GRANT EXECUTE, SELECT, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, LOCK TABLES  ON lorawan.* TO 'user'@'%' WITH GRANT OPTION;

Но можно сделать это проще написав:

GRANT ALL PRIVILEGES ON lorawan.* TO 'user'@'%';

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

GRANT ALL PRIVILEGES ON * . * TO 'user'@'%';

В этом случае у пользователя будут права делать все что хочет в любой базе данных с любой таблицей.

После того как дали доступ пользователю нужно перезагрузить привилегии командой:

FLUSH PRIVILEGES;

Если требуется отозвать права у пользователя:

REVOKE type_of_permission ON database.table FROM 'user'@'%';
 

Посмотреть, какие права есть у пользователя можно командой:

SHOW GRANTS FOR 'user'@'%';

Вообще удалить пользователя можно командой:

DROP USER 'username'@'localhost';

Оставьте комментарий