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

Неофициальный логотип  MySQL

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

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


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

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

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

sudo mysql -u root -p
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 493761
Server version: 10.5.12-MariaDB-0+deb11u1-log Debian 11
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>

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

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

CREATE USER username@localhost IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.004 sec)

Где:

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

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

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

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

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

SELECT user,host,plugin FROM mysql.user;
+-------------+-----------+-----------------------+
| User        | Host      | plugin                |
+-------------+-----------+-----------------------+
| mariadb.sys | localhost | mysql_native_password |
| root        | localhost | mysql_native_password |
| mysql       | localhost | mysql_native_password |
| site2life   | localhost | mysql_native_password |
| user        | localhost | mysql_native_password |
| username    | localhost | mysql_native_password |
+-------------+-----------+-----------------------+
6 rows in set (0.001 sec)

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

Удалить пользователя можно командой:

DROP USER username@localhost;
Query OK, 0 rows affected (0.007 sec)

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

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

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

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

Где:

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

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

GRANT ALL PRIVILEGES ON *.* TO username@localhost WITH GRANT OPTION;
Query OK, 0 rows affected (0.007 sec)

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

FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.007 sec)

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

SHOW GRANTS FOR username@localhost;
+--------------------------------------------------------------------------------------------+
| Grants for username@localhost
+--------------------------------------------------------------------------------------------+
| GRANT SELECT, UPDATE, CREATE ON *.* TO `username`@`localhost` IDENTIFIED BY PASSWORD '*247'|
+--------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

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

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

REVOKE UPDATE ON *.* FROM username@localhost;
Query OK, 0 rows affected (0.002 sec)
FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.007 sec)

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

ALTER USER username@localhost IDENTIFIED BY 'new_password';
Query OK, 0 rows affected (0.007 sec)

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

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

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

RENAME USER username@localhost TO username@%;
Query OK, 0 rows affected (0.007 sec)

Теги:

Комментарии




В качестве аватарки используется сервис - gravatar.com



IT-событие
Основание Adobe
Основание Adobe