Как создать Нового пользователя и предоставить права в MySQL
MySQL - это программное обеспечение для управления базами данных с открытым исходным кодом, которое помогает пользователям хранить, организовывать и впоследствии извлекать данные. Он имеет множество вариантов предоставления конкретным пользователям нюансных разрешений в таблицах и базах данных — эта статья даст краткий обзор некоторых из многих вариантов.
Как создать нового пользователя
Давайте начнем с создания нового пользователя в оболочке MySQL:CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Примечание: При добавлении пользователей в оболочку MySQL в этом руководстве мы будем указывать хост пользователя как localhost, а не IP - адрес сервера. localhost-это имя хоста, которое означает “этот компьютер”, и MySQL специально обрабатывает это конкретное имя хоста: когда пользователь с этим хостом входит в MySQL, он пытается подключиться к локальному серверу с помощью файла сокета Unix. Таким образом, localhost обычно используется, когда вы планируете подключиться путем SSHing на свой сервер или когда вы запускаете локальный клиент MySQL для подключения к локальному серверу MySQL.На данный момент newuser не имеет никаких прав на какие-либо действия с базами данных. На самом деле, даже если newuser попытается войти в систему (с паролем), он не сможет авторизоваться в оболочке MySQL.
Поэтому первое, что нужно сделать, - это предоставить пользователю доступ к необходимой ему информации.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Звездочка в этой команде относятся к базе данных и таблице (соответственно), к которым они могут получить доступ — эта конкретная команда позволяет пользователю читать, редактировать и выполнять все задачи во всех базах данных и таблицах.Обратите внимание, что в этом примере мы предоставляем newuser полный доступ ко всему, что находится в нашей базе данных. Хотя это полезно для объяснения некоторых концепций MySQL, это может быть непрактично для большинства случаев использования и может поставить безопасность вашей базы данных под высокий риск.
После того как вы завершите работу с правами, которые хотите настроить для новых пользователей, обязательно перезагрузите все привилегии.
FLUSH PRIVILEGES;
Теперь ваши изменения вступят в силу.Как предоставить различные права пользователям
Вот краткий список других распространенных возможных прав, которыми могут пользоваться пользователи.- ALL PRIVILEGES - как мы видели ранее, это позволит пользователю MySQL получить полный доступ к назначенной базе данных (или, если база данных не выбрана, глобальный доступ по всей системе)
- CREATE - позволяет им создавать новые таблицы или базы данных
- DROP - позволяет им удалять таблицы или базы данных
- DELETE - позволяет им удалять строки из таблиц.
- INSERT - позволяет им вставлять строки в таблицы
- SELECT - позволяет им использовать команду SELECT для чтения баз данных.
- UPDATE - разрешить им обновлять строки таблицы
- GRANT OPTION - позволяет им предоставлять или удалять привилегии других пользователей.
GRANT type_of_permission ON database_name.table_name TO 'username'@'localhost';
Если вы хотите предоставить им доступ к любой базе данных или к любой таблице, обязательно поставьте звездочку (*) вместо имени базы данных или имени таблицы.Каждый раз, когда вы обновляете или изменяете разрешение, обязательно используйте команду Flush Privileges.
Если вам нужно отозвать разрешение, структура почти идентична его предоставлению:
REVOKE type_of_permission ON database_name.table_name FROM 'username'@'localhost';
Обратите внимание, что при отмене разрешений синтаксис требует, чтобы вы использовали FROM, а не TO, как мы использовали при предоставлении разрешений.Вы можете просмотреть текущие разрешения пользователя, выполнив следующие действия:
SHOW GRANTS FOR 'username'@'localhost';
Точно так же, как вы можете удалить базы данных с помощью DROP, вы можете использовать DROP для полного удаления пользователя:DROP USER 'username'@'localhost';
Чтобы протестировать нового пользователя, выйдите из системы, набрав:quit
и снова войдите в систему с помощью этой команды в терминале:mysql -u [username] -p