Создать пользователя в mysql
Многие предпочитают работать с 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@%;
Только полноправные пользователи могут оставлять комментарии. Аутентифицируйтесь пожалуйста, используя сервисы.