Создать пользователя в 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)
Теги: MySQL