Создать пользователя в mysql

  • Михаил
  • 12 мин. на прочтение
  • 130
  • 20 Jan 2017
  • 20 Jan 2017

Многие предпочитают работать с MySQL через различные клиенты, такие как phpmyadmin, Table Plus или другие подобные программы. Через них работать с сервером Mysql нагляднее и проще.

Но через консоль некоторые действия сделать быстрее. Давайте добавим нового пользователя в Mysql и дадим ему права.
 

Все что написано ниже подходит как для Mysql так и для его ответвлений PerconaDB и MariaDB.

Подключаемся к серверу через SSH. Если сервер Mysql установлен в Winodws, то открываем консоль cmd.exe.

Подключаемся к сервису mysql:

sudo mysql -u root -p

Если вы подключаетесь к современной версии Mysql, то в большинстве случаев пароль вводить не потребуется, так как у линуксовой учетной записи root, есть полный доступ.

Добавить пользователя

CREATE USER username@localhost IDENTIFIED BY 'password';

Где:

  • username - имя нового пользователя;
  • localhost - это точка входа. При таком значении подключаться можно будет только с сервера. Можно указать IP-адрес, если Вы будете подключаться только с локальной сети - 192.168.0.* Для того, чтобы снять все ограничения, задаем - *;
  • password - это пароль.

Старайтесь использовать только английские буквы, цифры или спецсимволы.

Далее имя пользователя будет писаться не просто username, а username@localhost. Это в приведенном выше примере так.

Новый пользователь пока не обладает никакими правами и не может подключиться к БД, прочитать или внести какие-то изменения.

Показать всех пользователей

SELECT user,host,plugin FROM mysql.user;

 

Удалить пользователя

DROP USER username@localhost;

Дать права доступа

Права доступа можно указать как для отдельной базы данных, так и для всех баз размещенных на сервере.

Вот список самых важных привилегий, которыми можно наделить пользователя:

  • ALL PRIVILEGES – все права, кроме изменения права доступа другим пользователям или себе (кака дать все права ниже);
  • SELECT – получать строки из таблиц;
  • INSERT – вставлять строки в таблицы;
  • UPDATE – обновлять данные в строках таблиц;
  • DELETE – удалять строки в таблицах;
  • CREATE – создавать таблицы и базы данных;
  • ALTER – изменять структуру таблиц (добавлять или удалять столбцы);
  • INDEX – создавать индексы в таблицах (необходимо для разработчика или для оптимизации скорости работы);
  • DROP – удалять таблицы;
  • EVENT – обработка событий;
  • TRIGGER – создание триггеров;
  • USAGE PRIVILEGES – отменить все привилегии.
GRANT CREATE, SELECT, UPDATE ON *.* TO username@localhost;

Где:

  • CREATE, SELECT, UPDATE - это права доступа. Нужные права перечисляем через запятую;
  • *.* - это [имя базы данных].[имя таблицы]. В нашем случае права даются на все базы данных и таблицы. Можно указать конкретные названия;

Если нужно разрешить все действия с данными без присвоения прав пользователям, то ставим только — ALL PRIVILEGES, если абсолютно все права то в конце команды добавляем … WITH GRANT OPTION. Пример:

GRANT ALL PRIVILEGES ON *.* TO username@localhost WITH GRANT OPTION;

Чтобы права доступа вступили в силу нужно их применить:

FLUSH PRIVILEGES;

Показать привилегии пользователя

SHOW GRANTS FOR username@localhost;

Убрать одну привилегию

К примеру, уберем возможность у пользователя редактировать данные в строке – UPDATE. Для этого нужно выполнить команду:

REVOKE UPDATE ON *.* FROM username@localhost;
FLUSH PRIVILEGES;

Сменить пароль

ALTER USER username@localhost IDENTIFIED BY 'new_password';

Сменить имя или host пользователю

Если необходимо разрешить пользователю подключаться из любых мест, а не только с самого сервера, необходимо поменять host на % вместо localhost.

Или нужно просто сменить имя.

RENAME USER username@localhost TO username@%;