Mysql создать пользователя и дать права на базу: Страница не найдена | Losst
Содержание
Привилегии пользователя MySQL ▷ Права и управление. Как дать права на базу данных MySQL
Базы данных (в т.ч. система MySQL) представляет собой сущность для хранения информации в виде таблиц. Дабы чужие БД не были доступны абсолютному каждому пользователю на сервере, существует система пользователей для этих баз данных. Сам доступ к какой-либо БД может быть назначен администратором (либо уполномоченным пользователем) другому пользователю, причем он может быть полным или в некоторой степени ограниченным. Более конкретно эта степень доступа выражается в привилегиях («правах» или «разрешениях»).
Содержание
Права для пользователей MySQL
Существует некоторое количество привилегий в системе БД MySQL которые указаны ниже с описанием. Последние привилегии являются привилегиями администраторского уровня, что явно указано лишь для справки. Полная информация о правах/ привилегиях доступна в документации разработчика MySQL:
CREATE — позволяет создавать новые базы данных и таблицы
DROP — позволяет удалять базы данных или таблицы
INSERT — позволяет добавлять строки к таблице.
UPDATE — позволяет изменять содержание строк таблиц. Не путать с ALTER, которая позволяет изменять саму структуру таблиц (количество строк/столбцов, типы столбцов).
DELETE — противоположна INSERT — позволяет удалять строки из таблицы.
ALTER — позволяет изменять структуру таблиц. Требует CREATE и INSERT привилегии.
SELECT — позволяет читать (выводит строки) таблицы, используя выборки по столбцам и/или по некоторым арифметическим и логическим критериям.
GRANT OPTION — позволяет назначить конкретные права определенному пользователю (также и отобрать). Возможно дать/отобрать только те права, которыми назначающий сам располагает.
LOCK TABLES — блокирует таблицу на время искусственного внесения в нее изменений (администрирование), чтобы данные внутри нее не могли измениться своим естественным путем (во время рабочего процесса).
REFERENCES — позволяет создавать связь между таблицами по внешнему ключу.
EVENT — дает право на создание/изменение/удаление заданий для планировщика
TRIGGER — позволяет создавать/изменять/удалять триггеры (привязываемые к определенным таблицам), которые при выполнении операций DELETE, UPDATE или INSERT совершают дополнительные действия.
INDEX — привилегия даёт право добавлять/удалять индексы к (из) таблицам. Сами индексы назначаются вручную, и дают возможность сэкономить время на поиске строк.
CREATE TEMPORARY TABLES — позволяет создавать временные таблицы на время сессии.
CREATE VIEW — позволяет создать некоторое представление в виде таблицы, которая фактически не существует как единая и содержит лишь данные других таблиц. К примеру, в этом представлении можно собрать определенные сгруппированные данные из трёх таблиц (оператором SELECT) и по факту собранные данные будут лишь ссылаться на данные этих 3-х таблиц и также будут объединением, не нуждающимся в собственной таблице.
SHOW VIEW — позволяет проверить каким запросом (из каких данных состоит) создано определенное представление, заданное с помощью CREATE VIEW
CREATE ROUTINE — позволяет создать процедуру, которая является набором заготовленным набором SQL-команд.
ALTER ROUTINE — позволяет изменить процедуру, созданную посредством CREATE ROUTINE.
EXECUTE — позволяет вызывать готовые процедуры.
FILE — предоставляет доступ на чтение любого файла на сервере, к которому есть доступ у самой системы MySQL и доступ на создание файла в директориях, на которые у MySQL есть права записи.
CREATE TABLESPACE (admin) — позволяет создавать/изменять/удалять пространства таблиц. Само это пространство является логическим и не связано со структурой БД или схемой. Оно декларирует расположение объектов БД на физических носителях и используется для оптимизации системы БД.
CREATE USER (admin) — позволяет создавать/изменять/переименовывать/удалять пользователей баз данных.
PROCESS (admin) — разрешает доступ к информации о потоках (процессах) исполняющихся на сервере.
PROXY (admin) — позволяет войти пользователем под видом другого пользователя. Используется администратором для проверки/отладки прав доступа у необходимого пользователя.
RELOAD (admin) — разрешает использование оператора FLUSH, который чистит кеш MySQL
REPLICATION CLIENT (admin) — позволяет выполнять операции SHOW MASTER STATUS, SHOW SLAVE STATUS и SHOW BINARY LOG.
REPLICATION SLAVE (admin) — данная привилегия необходима пользователям ведомого сервера БД, чтобы этот сервер мог подключаться к ведущему серверу в роли ведомого. Без этой привилегии ведомые сервера не смогут запрашивать обновления баз данных и таблиц у ведущего сервера.
SHOW DATABASES (admin) — позволяет выполнять оператор SHOW DATABASES. Пользователи, не имеющие подобной привилегии, при выполнении данного оператора смогут лишь увидеть базы данных к которым у них есть какие-либо права.
SHUTDOWN (admin) — привилегия позволяет выполнить оператор SHUTDOWN, выключающий MySQL сервер.
SUPER (admin) — привилегия, дающая право на множество операций:
- позволяет завершить процессы, принадлежащие другим пользователям
- изменить глобальные системные переменные
- включать/отключать логирование
- производить обновления даже при установленных правах на чтение для системных переменных
- запускать/останавливать репликации на ведомых серверах
- и пр.
ALL (admin) — пользователю, получившему данную привилегию, автоматически назначаются все права в рамках уровня привилегий (возможных привилегий в принципе, согласно контексту выдачи привилегий). Не назначается только привилегия GRANT OPTION в данном случае.
Назначение прав для пользователей MySQL в панелях управления хостингом
Рассмотрим далее процедуру назначения прав пользователям MySQL в таких панелях управления хостингом, как:
- DirectAdmin
- cPanel
- ISPmanager
- Webuzo
DirectAdmin
На главной странице DirectAdmin из под уровня пользователя в меню Your Account переходим в раздел MySQL Management:
Далее нам необходимо перейти в конкретную базу данных, чтобы управлять пользователями, имеющими доступ к ней или создать новую посредством ссылки Create new Database:
Тут мы можем как создать нового пользователя для данной базы путем перехода по Create New Database User, так и привязать к ней существующего,. Следует отметить, что нет специально отведенного интерфейса для управления пользователями. Он доступен только посредством перехода через какую-либо базу данных. Чтобы дать пользователю права — переходим по ссылке modify privileges:
На странице привилегий выбираем те привилегии, которые хотим выдать пользователю на конкретную базу данных и сохраняем. Строка состояния напомнит на что и кому выделяются права:
После этого произойдет переход на страницу подтверждения сохранения. Всё, права выданы.
cPanel
На главной странице cPanel нам необходимо найти раздел Базы данных в нем перейти по Базы данных MySQL:
Все манипуляции с базами данных MySQL, пользователями БД и их правами производятся именно в этом меню.
Если у нас нет ни базы, ни пользователя, то создаем их в соответствующих разделах страницы:
Раздел Текущие базы данных обновится:
Создаем пользователя:
Раздел Текущие пользователи обновится:
Для назначения прав определенному пользователю к определенной базе данных нам необходимо найти на странице раздел Добавить пользователя в базу данных и добавить необходимого пользователя к необходимой базе данных:
После добавления пользователя к базе данных откроется диалоговое окно для назначения привилегий:
Кнопка «Все права» эквивалентна привилегии ALL, описанной в начале руководства, и назначит все возможные права пользователю в контексте принадлежности пользователя определенной группе пользователей на уровне всего MySQL сервера.
После подтверждения внесенных изменений будет переадресация на страницу, подтверждающую что указанные права были выданы и на странице управления базами и пользователями MySQL повторно обновится раздел Текущие базы данных:
Готово. Пользователь назначен базе данных.
ISPmanager Lite 5
При входе в ISPmanager в роли какого-либо пользователя необходимо перейти в Инструменты -> Базы данных из левого меню.
Далее на открывшемся интерфейсе управления базами данных необходимо выбрать необходимую базу и перейти в меню Users для перехода к интерфейсу управления пользователями БД. Если же баз данных нет, то создать новую можно перейдя по кнопке Add.
Следует заметить, что при создании новой БД представится возможность сразу создать нового пользователя, который будет назначен к этой базе данных. Либо же можно будет выбрать существующего пользователя, который также будет автоматически назначен этой базе данных.
В интерфейсе управления базой данных нам представится список всех пользователей этой базы данных в текущем аккаунте ISPmanager. Для редактирования прав необходимо выделить конкретного пользователя, которому назначаем права, и перейти в меню Изменить
После этого мы увидим все права, которые можно назначить этому пользователю:
По-умолчанию при создании пользователя и БД назначаются все права. Изменяем те, которые нам необходимо и сохраняем результаты. После этого Вас вернет на страницу управления пользователями баз данных.
Webuzo
Webuzo состоит из 2-х панелей: администраторская и пользовательская. Переходим в пользовательскую панель и на главной странице выбираем Manage Databases
На открывшейся странице мы можем:
- увидеть список существующих баз данных [Database(s)];
- создать новую базу данных [Create Database];
- увидеть список существующих пользователей баз данных [Database User(s)];
- создать пользователя баз данных и назначить его определенной базе данных [Add User To Database]
Если целевой базы данных пока что не существует, то переходим в Create Database и создаем новую базу данных:
Если все же целевая база данных уже существует, то в управлении базами данных нам необходимо перейти в Add User To Database и создать нового пользователя БД или указать какого-либо существующего для его привязки к базе данных:
При добавлении пользователя к базе данных откроется новое окно с запросом назначения прав этому пользователю. Выбираем необходимые нам права и подтверждаем изменения кнопкой Submit Changes.
При успешном изменении прав в текущем окне появится надпись Database Privileges Updated. Задача выполнена.
Cоздать пользователя mysql в Linux и дать права на базу
Все современные приложения запрашивают подключение базы данных. Она служит так называемым хранилищем электронной информации. Помимо этого существуют системы управления этими базами. Одной из самых популярных систем на сегодняшний день является MySQL.
Коротко о базе данных MySQL
Представляет собой реляционную СУ базами данных. Создана посредством языков программирования С и С++. Служит прекрасным инструментом для оптимизации работы веб-ресурсов и приложений.
Чтобы новичку было проще понять, что такое база данных, приведет элементарный пример. Пользователю нужно найти изображение в телефоне. Для этого он открывает Галерею. В данном случае картинка – это данные, а Галерея – база данных.
По схожему принципу устроены многие веб-ресурсы, где наличествует подключение форм регистрации и систем оформления заказов. После прохождения регистрации на сайте в базе данных появляется личная информация, переданная пользователем ресурса. Благодаря этому юзер может вернуться на сайт в любой момент и даже отредактировать свои личные данные для входа.
Ведение веб-ресурса без базы данных – весьма трудоёмкий и нерациональный процесс. С помощью БД можно грамотно структурировать информацию и заполучить к ней быстрый доступ.
Чаще всего для администрирования данных пользователи выбирают такие инструменты, как:
- MySQL;
- PostgreSQL;
- Microsoft SQL;
- И другие.
Система управления БД MySQL особенно приходится по душе тем, кто любит упорядочивать информацию в табличном виде. Стоит выполнить запрос, и информация извлекается из таблиц. Информация, имеющаяся в таблицах, строго упорядочена. Расположение строк напрямую зависит от данных, размещенных в таблице – при необходимости оно может видоизменяться.
Процесс заполнения таблиц обеспечивает SQL (язык программирования).
Чем может MySQL:
- Быстрый доступ к информации;
- Быстрая обработка информации;
- Надежная защита данных;
- Бесплатное пользование;
- Понятный интерфейс;
- MySQL совместим с ОС Windows и Linux;
- Есть шифрование личных данных (паролей).
А теперь перейдем от теории к практике.
Создание пользователя
Начнем с того этапа, когда БД уже создана. Теперь пользователю необходимо запустить клиент БД. Для этих целей удобнее всего воспользоваться терминалом.
Заходим в косоль mysql от имени root.
$ mysql -u root -p
ВАЖНО! Если Вы уже залогинлись по root, достаточно ввети команду без параметров — mysql
После этого можно приступать к реализации главной идеи. То есть, добавление нового юзера посредством CREATE USER. Ниже мы распишем синтаксис этой команды.
CREATE USER 'имя_пользователя'@'хост' IDENTIFIED BY 'пароль для пользователя';
Следуя вышеуказанному синтаксису, юзеру необходимо задать следующую информацию: имя пользователя и тот хост, откуда можно пройти авторизацию. В текущей ситуации указание символа «%» – способ обозначения всех возможных хостов.
Теперь разберем, как создать нового локального юзера через терминал. Просто вводим в строке текст следующего вида:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'parol';
Соответственно, чтобы добавить юзера, доступ к которому появится со всевозможных хостов, нужно поменять в команде «localhost» на «%», как это уже упоминалось ранее.
Теперь зададим команду для просмотра всех добавленных юзеров. Она выглядит следующим образом:
SELECT User,Host FROM mysql.user;
Готово!
Как дать права пользователю
Далее необходимо позаботиться о том, чтобы для нового юзера MySQL были назначены правильные привилегии. Для этих целей будет применять специальная команда. Она прописывается так:
GRANT привилегии ON база_данных . таблица ТО 'имя_пользователя'@'хост';
Какие права назначать пользователю системы – вопрос индивидуальный. Каких-либо чётких рекомендаций здесь быть не может. Единственное, о чем стоит упомянуть, так это о предоставлении всех прав над базой данных. Возможно, кому-то подойдет именно такой вариант. Как это сделать? Рассмотрим ниже.
GRANT ALL PRIVILEGES ON test_database . * TO 'new_user'@'localhost';
Чтобы открыть окно с данными о привилегиях пользователя, необходимо выполнить следующее действие:
SHOW GRANTS FOR 'new_user'@'localhost';
На этом еще не всё! После выполненных действий крайне важно произвести обновление таблицы прав пользователей. Это делается так:
FLUSH PRIVILEGES;
Пользователями с правами root mysql
Рассмотрим еще один вероятный сценарий развития событий. На тот случай, если кому-нибудь понадобится создать пользователя с правами root MySQL. Потребуется еще раз воспользоваться терминалом для реализации задуманного:
Итак, водим текст такого вида:
GRANT ALL PRIVILEGES ON * . * TO 'new_user'@'localhost';
Теперь пользователь имеет все необходимые привилегии. Однако остаётся маленькая загвоздка. Она заключается в отсутствии возможности предоставлять права другим пользователям от имени этого юзера. Текущая проблема может быть решена так:
GRANT ALL PRIVILEGES ON * . * TO 'new_user'@'localhost' WITH GRANT OPTION;
Готово! Суперпользователь MySQL добавлен, все необходимые привилегии предоставлены.
Заключение
Инструкция по созданию пользователя MySQL, предоставленная в данном материале, актуальна для Ubuntu и других дистрибутивов Debian, Centos…
Создайте нового пользователя в mysql с доступом только к определенным базам данных
Не знаю, возможно ли это.
Мне нужно создать нового пользователя mysql с доступом только к базам данных с именем базы данных с префиксом say user_db_ .
У меня есть приложение php, в котором при добавлении нового пользователя создается база данных user_db_ ‘userid’. Предположим, что три пользователя созданы таким образом , что их базы данных являются user_db_1 , user_db_2, user_db_3 .
Мне нужно создать нового пользователя, скажем user_accounts , который имеет доступ только к user_db_1, user_db_2 , user_db_3 ,………., user_db_n .
mysql
Поделиться
Источник
Avinash
08 января 2013 в 05:07
3 ответа
- Каковы минимальные привилегии, необходимые для создания баз данных MySQL, пользователей и предоставления разрешений?
Используя либо MySQL 5.6, либо 5.7, размещенные в AWS RDS, либо контейнер Docker MySQL , я хотел бы создать наименее привилегированного пользователя, например с именем creator , который может выполнять следующие действия: Создайте новую базу данных. Создайте нового пользователя. Предоставьте…
- MySQL копирование пользователя
Я хочу создать двух пользователей в моей тестовой базе данных MySQL, один с доступом только для чтения к таблицам, имеющим отношение к созданию отчетов и т. д., а другой с доступом для чтения и записи к тем же таблицам. Это предназначено для тестирования подсистемы, которая обычно подключается к…
6
Используйте следующий код для предоставления привилегий на конкретном DB.
grant all privileges on DB_NAME.* to 'USER'@'REMOTE_IP' identified by 'PASSWORD';
Поделиться
K S Nidhin
08 января 2013 в 09:04
2
Есть три шага
- Создание базы данных
- Создать нового пользователя
- Предоставьте права с помощью команды grant all
Подобный этому
CREATE DATABASE DBTEST
Если это будет выполнено успешно без каких-либо ошибок, создайте нового пользователя
CREATE USER 'NEWUSER'@'LOCALHOST' IDENTIFIED BY 'NEWUSERPASSWORD'
После создания пользователя предоставьте право создать таблицу drop table
GRANT ALL PRIVILEGES ON *.* TO 'NEWUSER'@'LOCALHOST'
А ведь дают одну команду
FLUSH PRIVILEGES
Обновление 31/03/2015 (как указано в комментариях)
Вы можете предоставить права на конкретную базу данных, как это
GRANT ALL PRIVILEGES ON DBTEST.* TO 'NEWUSER'@'LOCALHOST
Поделиться
JegsVala
12 июня 2014 в 10:28
0
ИМХО вы можете использовать комбинацию
SHOW DATABASES LIKE 'user_db_%'
чтобы получить текущий список пользовательских баз данных, и
CREATE USER 'username'@'hostname' ...
чтобы создать пользователя, и
GRANT ALL ON user_db_N.* TO 'username'@'hostname'
чтобы установить права доступа к базе данных для пользователя для каждой из баз данных, которые вы получаете от SHOW DATABASES
.
Поделиться
peterm
08 января 2013 в 05:32
Похожие вопросы:
Разрешить MySQL пользователю с ограниченным доступом к базе данных создавать больше пользователей с аналогичным доступом
Я знаю, что могу создать пользователя с привилегиями create user следующим образом: create user primary_user identified by ‘pass’; grant all on *.* to primary_user with grant option; Это, в свою…
Создайте нового пользователя ORACLE с полным доступом к конкретному SCHEMA
Как создать нового пользователя в ORACLE с полным доступом (alter, delete, select, inset, debug и т. д.) Только к одному конкретному SCHEMA.
Создайте нового пользователя в MySQL и предоставьте ему полный доступ к одной базе данных
Я хочу создать нового пользователя в MySQL и предоставить ему полный доступ только к одной базе данных, скажем dbTest , которую я создаю с помощью команды типа create database dbTest; . Каковы были…
Каковы минимальные привилегии, необходимые для создания баз данных MySQL, пользователей и предоставления разрешений?
Используя либо MySQL 5.6, либо 5.7, размещенные в AWS RDS, либо контейнер Docker MySQL , я хотел бы создать наименее привилегированного пользователя, например с именем creator , который может…
MySQL копирование пользователя
Я хочу создать двух пользователей в моей тестовой базе данных MySQL, один с доступом только для чтения к таблицам, имеющим отношение к созданию отчетов и т. д., а другой с доступом для чтения и…
Доступ к базам данных MySQL только с паролем root
так что у меня есть дилемма. Я перехожу к другому разработчику, и есть коробка, к которой у меня есть только корневой доступ, и мне нужно загрузить из нее базу данных MySQL. Поэтому я коренюсь в…
создайте нового пользователя для базы данных mysql и предоставьте только определенные привилегии
Я хочу создать нового пользователя mysql с доступом к некоторым опциям в базе данных mysql. Это мой текущий запрос создать пользователя: CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;…
Подключитесь к sql server management studio с определенным именем базы данных
Я хочу подключиться к sql server с именем пользователя и паролем, но на этом сервере у меня более 100 баз данных. 1.How могу ли я подключиться к sql server и увидеть только базы данных, к которым у…
Лучший способ облегчить доступ только к результатам конкретных запросов
В настоящее время я нахожусь в процессе внедрения системы мониторинга, часть которой включает в себя мониторинг некоторых аспектов базы данных MySQL, таких как: Состояние репликации данного…
Почему AWS IAM позволяет ограничивать пользователя только программным доступом или только доступом к веб-консоли?
Amazon веб-служба IAM позволяет администраторам создавать учетные записи пользователей с различными разрешениями, группами и т. д. Когда администратор создает нового пользователя, у него есть…
создайте нового пользователя для базы данных mysql и предоставьте только определенные привилегии
Я хочу создать нового пользователя mysql с доступом к некоторым опциям в базе данных mysql.
Это мой текущий запрос создать пользователя:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
когда я запускаю этот код сервер отображает следующее сообщение об ошибке:
(Error: 1227 SQLSTATE: 42000 (ER_SPECIFIC_ACCESS_DENIED_ERROR)
Message: Access denied; you need the %s privilege for this operation)
Использование MySQL Версии 5.0.
Пожалуйста, помогите мне
- создайте нового пользователя для базы данных mysql
- установите пароль для этого пользователя
- дайте GRANT пользователю
- отключите некоторые параметры, такие как удаление, удаление, экспорт и импорт.
php
mysql
Поделиться
Источник
Abc Xyz
21 июня 2013 в 05:25
6 ответов
1
Есть три шага
Create Database
Create new User
Give the rights with grant all command
подобный этому
CREATE DATABASE DBTEST
ЭТО УСПЕШНО ВЫПОЛНЯЕТСЯ БЕЗ КАКИХ-ЛИБО ОШИБОК, А ЗАТЕМ СОЗДАЕТ НОВОГО ПОЛЬЗОВАТЕЛЯ
CREATE USER 'NEWUSER'@'LOCALHOST' IDENTIFIED BY 'NEWUSERPASSWORD'
ПОСЛЕ СОЗДАНИЯ ПОЛЬЗОВАТЕЛЯ ПРЕДОСТАВЬТЕ ПРАВО НА СОЗДАНИЕ ТАБЛИЦЫ DROP TABLE.….
GRANT ALL PRIVILEGES ON *.* TO 'NEWUSER'@'LOCALHOST'
А ВЕДЬ ДАЮТ ОДНУ КОМАНДУ
FLUSH PRIVILEGES
ВЫ ТАКЖЕ МОЖЕТЕ ПРЕДОСТАВИТЬ ПРАВА НА КОНКРЕТНУЮ БАЗУ ДАННЫХ, КАК ЭТО
GRANT ALL PRIVILEGES ON DBTEST.* TO 'NEWUSER'@'LOCALHOST'
Поделиться
JegsVala
12 июня 2014 в 11:00
0
Я считаю, что ошибки неверны почти в каждом случае, когда существует несоответствие между типами GRANT или уровнями GRANT, которыми владеет вызывающий пользователь, и теми, которые он пытается передать другому пользователю.
Поделиться
Nirav Kukadiya
21 июня 2013 в 06:55
0
Пользователь, с которым вы в данный момент вошли в систему, не имеет прав на создание новых пользователей. Войдите в систему с другой учетной записью, которая это делает.
Поделиться
GolezTrol
21 июня 2013 в 05:27
- Как отозвать доступ к *.* для нового пользователя в mysql?
В клиенте командной строки mysql 5.6 (при входе в систему как root) я создал пользователя с: CREATE USER ‘admin’@’localhost’ IDENTIFIED BY ‘password’; Затем предоставляются привилегии с: GRANT ALL PRIVILEGES ON databasename.* TO ‘admin’@’localhost’; При проверке привилегий с помощью: SHOW GRANTS…
- Предоставьте привилегии пользователю в MySQL
Из панели управления моего сайта я создал новую базу данных MySQL(5) Test и нового пользователя admin с паролем 123 . Я попытался присвоить привилегии пользователю admin с помощью: GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’localhost’ или GRANT ALL PRIVILEGES ON *.* TO ‘admin’@’Test’ Я постоянно…
0
пользователь, которого вы используете для подключения к базе данных и создания пользователя, не имеет прав на создание нового пользователя. подключитесь к базе данных с помощью администратора
Поделиться
Miguelo
21 июня 2013 в 05:28
0
Дело в том, что вы подключены к своей базе данных с помощью пользователя, у которого нет прав или привилегий
для добавления дополнительных пользователей.
Первое, что вам нужно было сделать, это подключиться к вашему корневому пользователю или администратору, в этом случае
вы можете полностью максимизировать все привилегии до add,edit,delete,update,truncate,drop
, но, имея все эти привилегии, вы также должны знать, когда их правильно использовать, потому что в противном случае
вы, вероятно, в конечном итоге испортите свою базу данных.
примечание : Если вы просто пользователь, которому предоставлен конкретный пользователь для использования, который имеет некоторые привилегии
скрываться и искать идеи, как вы могли бы расширить свои привилегии, — не очень хорошая идея. Лучше попросить администратора root предоставить вам необходимые привилегии, а не пытаться создать еще одну, чтобы обойти ее.
Поделиться
Jhonathan H.
21 июня 2013 в 05:42
0
Вы должны войти в базу данных с помощью учетной записи администратора или root, чтобы создать новых пользователей.
Поделиться
Laurent
21 июня 2013 в 05:44
Похожие вопросы:
создайте БД и пользователя mysql и установите привилегии php
Есть ли способ создать новую базу данных MySQL, нового пользователя MySQL и дать новому пользователю привилегии на новую базу данных все с помощью PHP?
Каковы минимальные привилегии, необходимые для создания баз данных MySQL, пользователей и предоставления разрешений?
Используя либо MySQL 5.6, либо 5.7, размещенные в AWS RDS, либо контейнер Docker MySQL , я хотел бы создать наименее привилегированного пользователя, например с именем creator , который может…
Закись азота, Heroku: создать нового пользователя PostgreSQL, ограничить привилегии
Моя конечная цель-свести к минимуму (или исключить, если это возможно) возможность того, что мои записи базы данных будут обновлены или удалены/уничтожены каким-либо образом после создания. Одно из…
Создайте нового пользователя в mysql с доступом только к определенным базам данных
Не знаю, возможно ли это. Мне нужно создать нового пользователя mysql с доступом только к базам данных с именем базы данных с префиксом say user_db_ . У меня есть приложение php, в котором при…
Предоставьте подрядчику MySQL привилегии для работы с базой данных
У меня есть независимый подрядчик / фрилансер, помогающий с некоторой оптимизацией конкретной базы данных. Я создал нового пользователя и дал ему все разрешения для этой базы данных. Тем не менее,…
Как отозвать доступ к *.* для нового пользователя в mysql?
В клиенте командной строки mysql 5.6 (при входе в систему как root) я создал пользователя с: CREATE USER ‘admin’@’localhost’ IDENTIFIED BY ‘password’; Затем предоставляются привилегии с: GRANT ALL…
Предоставьте привилегии пользователю в MySQL
Из панели управления моего сайта я создал новую базу данных MySQL(5) Test и нового пользователя admin с паролем 123 . Я попытался присвоить привилегии пользователю admin с помощью: GRANT ALL…
как отозвать привилегии для пользователя MySQL
Существует пользователь MySQL с привилегиями уровня базы данных, как показано на снимке экрана ниже. Однако при попытке отменить привилегии для этого пользователя возникает ошибка 1141. Почему…
Предоставьте пользователю все определенные разрешения для базы данных
Это дословный вопрос: Предоставьте все определенные разрешения для базы данных cis605 cis605_usr Я читал, что синтаксис GRANT ALL устарел и предоставляет только разрешения ANSI-92, применимые к…
Создайте базу данных MySQL и предоставьте права доступа одновременно
Проблема: у меня есть программа, которая создает резервные копии баз данных, создавая копию живой базы данных, а затем помечает ее эпохой времени. query = `CREATE DATABASE IF NOT EXISTS…
Как отркрыть доступ к mysql из-вне
Для доступа к MySQL из-вне должно быть выполнено 2 условия:
- MySQL должен слушать все адреса, а не только 127.0.0.1
- У пользователя должны быть пермишены для коннекта не только с localhost (с самого сервера где установлена БД), а и других адресов.
Слушать все адреса
Во-первых, изначально mysql слушает только localhost. Нужно исправить это в конфигурационном файле my.cnf
(обычно в линуксах путь /etc/mysql/my.cnf). В my.cnf находим строку:
bind-address = 127.0.0.1
И заменяем её на:
bind-address = 0.0.0.0
Теперь после service mysql restart
мы можем коннектиться к mysql с любого ip (если создан пользователь). При этом для супер-пользователя root доступ из-вне под пустым паролем остаётся закрыт.
bind-address 127.0.0.1
означает, что mysql слушает соединения только с текущего хоста.
Создание пользователя для коннекта к базе данных из-вне
Во-вторых, нужно создать пользователя, под которым мы будем подключаться из-вне к mysql. У пользователя должны быть пермишены для подключения не только по localhost, но и иных адресов.
CREATE USER 'username'@'%' IDENTIFIED BY 'password'; #создаём пользователя username с паролем password GRANT ALL PRIVILEGES ON database.* TO 'username'@'%'; #даём пользователю username все права для работы с базой данных database FLUSH PRIVILEGES; # применяем новые права (чтобы не делать restart)
В команде CREATE USER мы создали пользователя, который может коннектиться к mysql со всех ip. Мы можем разрешать коннектиться только с определённых ip, например:
#создаём пользователя user с паролем pass, который может подключаться только с ip '10.10.50.50 CREATE USER 'user'@'10.10.50.50' IDENTIFIED BY 'pass';
Если разрешаете внешние подключения к базе данных, то нужно давать сложные пароли пользователям mysql.
В случае проблем с внешними подключениями, проверить не блокирует ли брандмауэр или фаервол MySQL-порт 3306 или другой, если используете не стандартный порт.
Узнать порт mysql:
mysql> show variables like 'port'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | port | 3306 | +---------------+-------+ 1 row in set (0,05 sec)
После изменения bind-address в MySQL и создания пользователя с пермишенами (либо грант пермишенов текущим пользователям), к базе данных можно подключиться передавая параметр -h
<host>. Хост — адрес машины, на которой установлен MySQL:
mysql -u -root -p -h <ip адрес>
Создание нового пользователя в MySQL и предоставление разрешения базы данных MySQL
В этой статье мы расскажем, как создать новые права доступа пользователей и привилегии для этого пользователя в MySQL. MySQL является реляционной базой данных с открытым исходным кодом, управляемая системой (СУБД), которая позволяет пользователям и приложениям сохранять, организовывать, и получить свои данные. Она имеет систему контроля доступа, которая состоит из разрешений, которые пользователи могут иметь в таблицах и базах данных, мы посмотрим на некоторые из вариантов этой системы контроля доступа описанные позже в этом руководстве.
Давайте начнем с входа в систему
Чтобы войти в нашу систему MySQL, мы используем следующую команду:
# mysql -u root -p
При выполнении этой команды мы говорим клиенту MySQL, что мы входим в с суперпользователем и указываем пароль пользователя.
Если вы не установили MySQL на сервере, вы можете проверить статью о том, как установить MySQL на Ubuntu 16.04.
Создание нового пользователя
Теперь, когда мы находимся внутри нашего сервера MySQL мы можем поручить MySQL, чтобы создать нового пользователя с помощью следующего запроса:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
Совет: всегда используйте надежный пароль для всех учетных записей. Который Вы можете сгенерировать из командной строки.
Еще одна интересная вещь, об этой команде является то, что имя хоста нового пользователя, которого мы только что создали может быть другое имя хоста или IP – адрес, если мы хотим, чтобы пользователь вошел в систему удаленно.
В качестве примера:
CREATE USER 'new_user'@'10.20.30.111' IDENTIFIED BY 'password';
Допустим, мы хотим предоставить нашему новому пользователю права доступа, так что они могут считывать данные из всех баз данных на нашем сервере MySQL. Мы делаем это, введя следующую команду:
GRANT SELECT ON *.* TO 'new_user'@'localhost';
При выполнении запроса выше мы поручаем MySQL, дать нашему новому пользователю разрешения использовать команду SELECT, для чтения из базы данных на нашем сервере MySQL, мы использовали ключевое слово SELECT, для того, чтобы сделать это. GRANT SELECT, сообщает MySQL, что пользователь не будет иметь ничего, кроме разрешений на чтение данных из данной базы данных или баз данных. Предоставление разрешений, как правило, осуществляется в следующем формате:
GRANT <permission type> ON <database>.<table> TO '<username>'@'<host>';
Мы также можем поручить MySQL, забрать определенное разрешение от пользователя в том же формате, что и выше, только заменив ключевое слово GRANT на REVOKE и ключевое слово TO на FROM:
REVOKE <permission type> ON <database>.<table> FROM '<username>'@'<host>';
Примечание:
Звездочки, которые мы используем для позиций баз данных и таблиц в запросе выше, маска и соответствует любой базе данных или таблицы в зависимости от позиции.
Для того, чтобы наши новые установленные разрешения вступили в силу, нам нужно перезагрузить все привилегии:
FLUSH PRIVILEGES;
Предоставление пользователям других видов разрешений
В предыдущем разделе мы видели, как предоставить разрешения на чтение для пользователя с помощью ключевого слова SELECT. В этом разделе мы рассмотрим другие ключевые слова, которые позволят устанавливать различные типы разрешений на пользователе.
- USAGE – дает пользователю право доступа для входа на сервер MySQL (задается по умолчанию при создании нового пользователя)
- SELECT – дает пользователю разрешение на использование команды выбора для извлечения данных из таблиц
- INSERT – дает разрешение на добавление новых строк в таблицах
- UPDATE – дает пользователю право изменять существующие строки в таблицах
- DELETE – дает пользователю право удалять существующие строки из таблиц
- CREATE – дает пользователю разрешение для создания новых таблиц или баз данных
- DROP – дает пользователю право удалить существующие таблицы или базы данных
- ALL PRIVILEGES – дает пользователю право иметь неограниченный доступ на базы данных или всей системы (с помощью звездочки в позиции базы данных)
- GRANT OPTION – дает пользователю право разрешать или удалять разрешения других пользователей
Удаление пользователей осуществляется таким же образом, как и с базами данных или таблицами с помощью команды DROP:
DROP USER 'new_user'@'localhost';
Наконец, мы можем протестировать нашего нового пользователя, введите следующую команду для завершения текущего активного сеанса:
exit;
А потом мы снова войдем в систему, введя следующую команду в командной строке:
mysql -u new_user -p
Примечание:
Не забудьте заменить new_user на собственное необходимое имя пользователя.
Вот, теперь вы создали своего собственного пользователя в MySQL и дали ему соответствующие разрешения.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
mysql. Назначить права доступа » PacificSky.Ru
Выдавать полные права доступа пользователю не всегда разумно.
Разумнее и правильно было бы определить пользователю именно те права, которые ему необходимы.
В MySql существует несколько типов прав доступа:
- CREATE – Позволяет пользователю создавать базы данных/таблицы
- SELECT – Позволяет пользователю делать выборку данных
- INSERT – Позволяет пользователю добавлять новые записи в таблицы
- UPDATE – Позволяет пользователю изменять существующие записи в таблицах
- DELETE – Позволяет пользователю удалять записи из таблиц
- DROP – Позволяет пользователю удалять записи в базе данных/таблицах
Назначить права пользователю можно с помощью запроса выполняемому по данной схеме:
GRANT [тип прав] ON [имя базы данных].[имя таблицы] TO ‘[имя пользователя]’@'localhost’;
К примеру представим, что нам необходимо для пользователя new-user предоставить права доступа на запись и чтение в базу данных mydb на таблицу posts:
По выше указанной схеме, после слова GRAND указываем типы прав INSERT и SELECT.
Далее после ON указываем название базы данных и после `.` указываем название таблицы. Соответственно после слова TO в кавычках указываем имя пользователя(В примере это new-user).
GRANT INSERT, SELECT ON mydb . posts TO 'new-user'@'localhost';
Если необходимо установить права доступа на всю базу данных и на все таблицы данной базы запрос изменится следующим образом:
GRANT INSERT, SELECT ON *.* TO 'new-user'@'localhost';
Если вы вдруг ошиблись с выдачей прав пользователю или просто хотите убрать у пользователя все права, то выполняем следующую команду:
REVOKE ALL PRIVILEGES ON *.* FROM 'new-user'@'localhost';
Схема в данной команде будет выглядеть по аналогичным правилам:
REVOKE ALL PRIVILEGES ON [имя базы данных].[имя таблицы] FROM '[имя пользователя]'@'localhost';
Для применения всех назначенных, измененных или удаленных прав доступа, необходимо выполнить команду:
FLUSH PRIVILEGES;
На этом все! Теперь можно указывать любые права доступа для любого пользователя в вашей базе данных.
Хочу напомнить, что для назначения прав доступа требуется аккаунт с root доступом.
Как предоставить все привилегии для базы данных в MySQL
Чтобы начать редактирование привилегий в MySQL, вы должны сначала войти на свой сервер, а затем подключиться к клиенту mysql
. Обычно вам нужно подключиться к root
или любой другой учетной записи, которая является вашей основной, начальной учетной записью «суперпользователя», которая имеет полный доступ на протяжении всей установки MySQL.
Обычно пользователю root
будет назначен пароль аутентификации при установке MySQL, но если это не так, вы должны предпринять шаги для повышения безопасности, добавив пароли root
, как показано в официальной документации.
В этом примере мы предположим, что root
является основной учетной записью MySQL. Чтобы начать использовать инструмент командной строки MySQL ( mysqlcli
), подключитесь к серверу как пользователь root , затем введите команду
mysql
:
$ MySQL
Добро пожаловать в монитор MySQL. Команды заканчиваются на; или \ g.
Ваш идентификатор подключения MySQL - 112813
Версия сервера: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
В случае успеха вы увидите выходные данные о вашем соединении с MySQL и увидите приглашение mysql
.
Примечание: в случае, если вы не можете напрямую подключиться к серверу в качестве пользователя root
перед подключением к mysql
, вы можете указать пользователя, которого вы хотите подключить , как , добавив --user =
флаг:
Предоставление привилегий
Теперь, когда вы находитесь в командной строке mysqlcli
, вам нужно только ввести команду GRANT
с необходимыми параметрами для применения соответствующих разрешений.
Типы привилегий
Команда GRANT
способна применять широкий спектр привилегий, от возможности СОЗДАТЬ
таблиц и баз данных, читать или записывать ФАЙЛОВ
и даже SHUTDOWN
на сервере. Команде доступен широкий спектр флагов и параметров, поэтому вы можете ознакомиться с тем, что на самом деле может делать GRANT
, просмотрев официальную документацию.
Привилегии, связанные с базой данных
В большинстве случаев вы будете предоставлять привилегии пользователям MySQL на основе конкретной базы данных
, к которой учетная запись должна иметь доступ.Обычной практикой является, например, для каждой уникальной базы данных MySQL на сервере иметь своего собственного уникального пользователя
, связанного с ней, так что только один единственный пользователь
имеет доступ для аутентификации к одной единственной базе данных
и наоборот. наоборот.
- ПРЕДОСТАВИТЬ ВСЕ привилегии
пользователю
, позволяя этому пользователю полный контроль над конкретной базой данных .
, используйте следующий синтаксис:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА имя_базы_данных.* TO 'username' @ 'localhost';
С помощью этой команды мы отправили MySQL по адресу:
-
GRANT
PRIVILEGES
типаALL
(таким образом, все, конечно). Примечание. Большинство современных установок MySQL не требуют дополнительного ключевого словаPRIVILEGES
. - Эти привилегии предназначены для
имя_базы_данных
и применяются ко всем таблицам этой базы данных, что обозначается следующим образом. *
. - Эти привилегии назначаются
имени пользователя
, когда это имя пользователя@ 'localhost'
. Чтобы указать любой допустимый хост, замените'localhost'
на'%'
.
Вместо предоставления всех привилегий для всей базы данных, возможно, вы захотите дать пользователю tolkien
только возможность читать данные ( SELECT
) из таблицы авторов
базы данных books
.Это было бы легко сделать вот так:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА books.authors 'tolkien' @ 'localhost';
Создание другого суперпользователя
Хотя это и не особо безопасно, в некоторых случаях вы можете захотеть создать другого «суперпользователя», который будет иметь ВСЕ привилегии во ВСЕХ базах данных на сервере. Это можно сделать так же, как описано выше, но заменив имя_базы_данных
звездочкой с подстановкой:
mysql> ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА *.* TO 'tolkien' @ '%';
Теперь tolkien
имеет те же привилегии, что и учетная запись root по умолчанию , будьте осторожны!
Сохранение изменений
В качестве последнего шага после любых обновлений прав пользователя обязательно сохраните изменения, введя команду FLUSH PRIVILEGES
из приглашения mysql
:
mysql> ПРИВИЛЕГИИ ПРОМЫВКИ;
Запрос в порядке, затронуто 0 строк (0,01 сек)
Создать нового пользователя в MySQL и предоставить ему полный доступ к одной базе данных
Синтаксис
Для создания пользователя в MySQL / MariaDB 5.7.6 и выше используйте CREATE USER
синтаксис:
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'new_user' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'new_password';
, затем, чтобы предоставить весь доступ к базе данных (например, my_db
), используйте синтаксис GRANT
, например
ПРЕДОСТАВИТЬ ВСЕ НА my_db. * TO 'new_user' @ 'localhost';
Где ALL
( priv_type ) может быть заменен определенной привилегией, такой как SELECT
, INSERT
, UPDATE
, ALTER
и т. Д.
Затем, чтобы перезагрузить вновь назначенные разрешения, запустите:
ПРИВИЛЕГИИ ПРОМЫВКИ;
Исполнение
Чтобы запустить вышеуказанные команды, вам необходимо запустить команду mysql
и ввести их в командной строке, а затем выйти из системы с помощью команды quit
или Ctrl - D .
Для запуска из оболочки используйте параметр -e
(замените SELECT 1
одной из приведенных выше команд):
$ mysql -e "ВЫБРАТЬ 1"
или распечатайте выписку со стандартного ввода:
$ echo "ЗАЯВЛЕНИЕ ФУ" | MySQL
Если у вас отказано в доступе с указанным выше, укажите параметры -u
(для пользователя) и -p
(для пароля), или для долгосрочного доступа установите свои учетные данные в ~ /.my.cnf
, например
[клиент]
пользователь = корень
пароль = корень
Интеграция с оболочкой
Для людей, не знакомых с синтаксисом MySQL, вот удобные функции оболочки, которые легко запомнить и использовать (чтобы использовать их, вам необходимо загрузить функции оболочки, включенные ниже).
Вот пример:
$ mysql-create-user админ mypass
| СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'admin' @ 'localhost', ОПРЕДЕЛЕННЫЙ 'mypass'
$ mysql-create-db foo
| СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ foo
$ mysql-grant-db админ foo
| ПРЕДОСТАВИТЬ ВСЕ НА foo.* К 'admin' @ 'localhost'
| ПРИВИЛЕГИИ СМЫВАНИЯ
Администратор $ mysql-show-grants
| ПОКАЗАТЬ ГРАНТЫ ДЛЯ 'admin' @ 'localhost'
| Гранты для admin @ localhost
| РАЗРЕШИТЬ ИСПОЛЬЗОВАНИЕ *. * ДЛЯ 'admin' @ 'localhost', ОПРЕДЕЛЕННОГО ПАРОЛЕМ '* 6C8989366EAF75BB670AD8EA7A7FC1176A95CEF4' |
| ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА `foo`. * 'Admin' @ 'localhost'
$ mysql-drop-user администратор
| УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ 'admin' @ 'localhost'
$ mysql-drop-db foo
| УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ foo
Чтобы использовать приведенные выше команды, вам необходимо скопировать и вставить следующие функции в файл rc (e.грамм. .bash_profile
) и перезагрузите оболочку или создайте файл. В этом случае просто введите source .bash_profile
:
# Создать пользователя в MySQL / MariaDB.
mysql-create-user () {
[-z "$ 2"] && {echo "Использование: mysql-create-user (пользователь) (пароль)"; возвращение; }
mysql -ve "СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ '$ 1' @ 'localhost', ОПРЕДЕЛЕННЫЙ '$ 2'"
}
# Удалить пользователя из MySQL / MariaDB
mysql-drop-user () {
[-z "$ 1"] && {echo "Использование: mysql-drop-user (пользователь)"; возвращение; }
mysql -ve "УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ '$ 1' @ 'localhost';"
}
# Создать новую базу данных в MySQL / MariaDB.mysql-create-db () {
[-z "$ 1"] && {echo "Использование: mysql-create-db (db_name)"; возвращение; }
mysql -ve "СОЗДАТЬ БАЗУ ДАННЫХ, ЕСЛИ НЕ СУЩЕСТВУЕТ $ 1"
}
# Удалить базу данных в MySQL / MariaDB.
mysql-drop-db () {
[-z "$ 1"] && {echo "Использование: mysql-drop-db (db_name)"; возвращение; }
mysql -ve "УДАЛИТЬ БАЗУ ДАННЫХ, ЕСЛИ СУЩЕСТВУЕТ $ 1"
}
# Предоставить пользователю все разрешения для данной базы данных.
mysql-grant-db () {
[-z "$ 2"] && {echo "Использование: mysql-grand-db (пользователь) (база данных)"; возвращение; }
mysql -ve "ПРЕДОСТАВЛЯТЬ ВСЕ НА $ 2.* TO '$ 1' @ 'localhost' "
mysql -ve "ПРИВИЛЕГИИ ПРОМЫВКИ"
}
# Показать разрешения текущего пользователя.
mysql-show-grants () {
[-z "$ 1"] && {echo "Использование: mysql-show-grants (пользователь)"; возвращение; }
mysql -ve "ПОКАЗАТЬ ГРАНТЫ ДЛЯ '$ 1' @ 'localhost'"
}
Примечание. Если вы предпочитаете не оставлять следов (например, паролей) в истории Bash, проверьте: Как предотвратить отображение команд в истории Bash?
MySQL :: Справочное руководство MySQL 8.0 :: 13.7.1.6 Заявление GRANT
13.7.1.6 Заявление GRANT
ГРАНТ
priv_type [( список_столбцов )]
[, priv_type [( список_столбцов )]] ...
ВКЛ [ тип_объекта ] приват_уровень
TO user_or_role [, user_or_role ] ...
[С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ]
[Пользователь AS
[С РОЛЬ
ДЕФОЛТ
| НИКТО
| ВСЕ
| ВСЕ, КРОМЕ роли [, роли ] ...
| роль [, роль ] ...
]
]
}
ПРЕДОСТАВИТЬ ПРОКСИ НА user_or_role
TO user_or_role [, user_or_role ] ...
[С ОПЦИЕЙ ПРЕДОСТАВЛЕНИЯ]
GRANT роль [, роль ] ...
TO user_or_role [, user_or_role ] ...
[С ОПЦИЕЙ АДМИНИСТРАТОРА]
object_type : {
СТОЛ
| НАЗНАЧЕНИЕ
| ПРОЦЕДУРА
}
priv_level : {
*
| *. *
| db_name . *
| db_name.tbl_name
| имя_таблицы
| db_name . имя_программы
}
user_or_role : {
пользователь (см. Раздел 6.2.4, «Указание имен учетных записей»)
| роль (см. Раздел 6.2.5, «Указание имен ролей»)
}
Оператор GRANT
назначает
привилегии и роли для учетных записей и ролей пользователей MySQL. Есть
несколько аспектов GRANT
заявление, описанное в следующих темах:
Заявление GRANT
позволяет
системным администраторам для предоставления привилегий и ролей, которые могут
предоставляться учетным записям и ролям пользователей.Этот синтаксис
ограничения применяются:
GRANT
не может смешивать предоставление
и привилегии, и роли в одном заявлении. Данный
GRANT
заявление должно предоставить
либо привилегии, либо роли.Пункт
ON
определяет,
оператор предоставляет привилегии или роли:С
ON
заявление дает
привилегии.Без
ON
, заявление дает
роли.Разрешено назначать как привилегии, так и роли для
аккаунт, но вы должны использовать отдельный
GRANT
выписки, каждая
с синтаксисом, соответствующим тому, что должно быть предоставлено.
Дополнительные сведения о ролях см. В разделе 6.2.10, «Использование ролей».
Чтобы предоставить привилегию с
GRANT
, у вас должен быть
GRANT OPTION
привилегия, и вы
должен иметь привилегии, которые вы предоставляете.
(В качестве альтернативы, если у вас есть
ОБНОВЛЕНИЕ
привилегия для гранта
таблицы в схеме системы mysql
, вы можете
предоставить любой учетной записи какие-либо привилегии.) Когда
read_only
системная переменная
включено, GRANT
дополнительно
требуется CONNECTION_ADMIN
привилегия (или устаревшая
SUPER
привилегия).
GRANT
либо удачно для всех
названные пользователи и роли или откат и не имеют никакого эффекта, если таковые имеются
возникает ошибка. Заявление записывается только в двоичный журнал.
если это успешно для всех указанных пользователей и ролей.
Оператор REVOKE
связан с
на GRANT
и позволяет
администраторы, чтобы удалить привилегии учетной записи. Видеть
Раздел 13.7.1.8, «REVOKE Statement».
Каждое имя учетной записи использует формат, описанный в
Раздел 6.2.4, «Указание имен учетных записей». Каждое имя роли использует
формат, описанный в Раздел 6.2.5, «Указание имен ролей». Например:
ПРЕДОСТАВИТЬ ВСЕ НА db1. * TO 'jeffrey' @ 'localhost';
ПРЕДОСТАВЛЯТЬ 'role1', 'role2' TO 'user1' @ 'localhost', 'user2' @ 'localhost';
ПРЕДОСТАВИТЬ ВЫБОР В мире. * TO 'role3';
Часть имени хоста учетной записи или имени роли, если не указано,
по умолчанию %
.
Обычно администратор базы данных сначала использует
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ
, чтобы создать
аккаунт и определите его непривилегированные характеристики, такие как
его пароль, использует ли он безопасные соединения и ограничивает
при доступе к ресурсам сервера, затем использует
GRANT
для определения его привилегий.
ALTER USER
можно использовать для
изменить непривилегированные характеристики существующих учетных записей.
Например:
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'jeffrey' @ 'localhost', ОПРЕДЕЛЕННЫЙ ' паролем ';
ПРЕДОСТАВИТЬ ВСЕ НА db1.* TO 'jeffrey' @ 'localhost';
GRANT SELECT ON db2.invoice TO 'jeffrey' @ 'localhost';
ALTER USER 'jeffrey' @ 'localhost' WITH MAX_QUERIES_PER_HOUR 90;
Из программы mysql ,
GRANT
отвечает
Запрос в норме, затронуты 0 строк
при выполнении
успешно. Чтобы определить, какие привилегии проистекают из
эксплуатации, используйте SHOW GRANTS
. Видеть
Раздел 13.7.7.21, «Заявление о ВЫСТАВКЕ ГРАНТОВ».
Важный
При некоторых обстоятельствах
GRANT
можно записать в
журналы сервера или на стороне клиента в файле истории, таком как
~ /.mysql_history
, что означает, что
пароли в открытом виде могут быть прочитаны любым, у кого есть доступ для чтения
к этой информации. Для получения информации об условиях
под чем это происходит для журналов сервера и как
управлять им, см. Раздел 6.1.2.3, «Пароли и ведение журнала». Для
аналогичную информацию о ведении журнала на стороне клиента см.
Раздел 4.5.1.3, «Ведение журнала клиента mysql».
GRANT
поддерживает имена хостов до
Длина 255 символов (60 символов до MySQL 8.0,17).
Имена пользователей могут содержать до 32 символов. База данных, таблица,
имена столбцов и подпрограмм могут содержать до 64 символов.
Предупреждение
Не пытайтесь изменить допустимую длину
для имен пользователей путем изменения mysql.user
системная таблица. Это приводит к непредсказуемому поведению
что может даже лишить пользователей возможности войти в
Сервер MySQL . Никогда не изменяйте структуру таблиц
в системной схеме mysql
любым способом
кроме как с помощью процедуры, описанной в
Раздел 2.11, «Обновление MySQL».
Правила цитирования объектов
Несколько объектов в пределах GRANT
заявления подлежат цитированию, хотя цитирование
необязательно во многих случаях: учетная запись, роль, база данных, таблица,
имена столбцов и подпрограмм. Например, если
имя_пользователя
или
host_name
значение в имени учетной записи
разрешен как идентификатор без кавычек, вам не нужно его цитировать.Однако кавычки необходимы, чтобы указать
user_name
строка, содержащая специальные
символы (например, -
) или
host_name
строка, содержащая специальные
символы или подстановочные знаки, такие как %
(например, 'test-user'@'%.com'
). Цитировать
имя пользователя и имя хоста отдельно.
Чтобы указать значения в кавычках:
Цитируйте базы данных, таблицы, столбцы и имена подпрограмм как
идентификаторы.Цитируйте имена пользователей и имена хостов как идентификаторы или как
струны.Цитируйте пароли в виде строк.
Рекомендации по цитированию строк и идентификаторов см.
Раздел 9.1.1, «Строковые литералы» и
Раздел 9.2, «Имена объектов схемы».
Подстановочные знаки _
и %
разрешены при указании имен баз данных в
GRANT
заявления, которые предоставляют
привилегии на уровне базы данных ( GRANT... НА
). Это означает,
db_name
. *
например, чтобы использовать символ _
в качестве
часть имени базы данных, укажите ее, используя
\
escape-символ как \ _
в выписке GRANT
, чтобы
запретить пользователю доступ к дополнительным
базы данных, соответствующие шаблону подстановки (например,
GRANT ... ON `foo \ _bar`. * TO ...
).
При назначении привилегий MySQL интерпретирует вхождения
без экранирования _
и %
SQL
символы подстановки в именах баз данных как буквальные символы
при этих обстоятельствах:
Когда имя базы данных не используется для предоставления привилегий на
уровень базы данных, но как квалификатор для предоставления
привилегии для некоторого другого объекта, такого как таблица или процедура
(например,GRANT... НА
).
db_name
.имя_таблицы
Включение
partial_revokes
заставляет MySQL интерпретировать неэкранированные_
и%
подстановочных знаков в базе данных
имена как буквальные символы, как если бы они были
экранирован как\ _
и
\%
. Потому что это меняет то, как MySQL
интерпретирует привилегии, рекомендуется избегать
неэкранированные подстановочные знаки в назначениях привилегий для
установки, где
partial_revokes
может быть
включено.Для получения дополнительной информации см.
Раздел 6.2.12, «Ограничение привилегий с помощью частичного отзыва».
пользователь
значение в
GRANT
заявление указывает
Учетная запись MySQL, к которой применяется утверждение. Разместить
предоставление прав пользователям с произвольных хостов, MySQL поддерживает
указав значение пользователь
в
форма
'
. имя_пользователя
' @ ' имя_хоста
'
В имени хоста можно указать подстановочные знаки. Например,
'
имя_пользователя
' @ '%. Example.com'
применяется к user_name
для любого хоста
в домене example.com
и
'
имя_пользователя
' @ '198.51.100.%'
применяется к user_name
для любого хоста
в подсети 198.51.100
класса C.
Простая форма
'
- это user_name
'
синоним для
'
. имя_пользователя
' @ '%'
MySQL не поддерживает подстановочные знаки в пользовательских
имена . Чтобы обратиться к анонимному пользователю, укажите
аккаунт с пустым именем пользователя с
GRANT
выписка:
GRANT ALL ON test. * TO '' @ 'localhost'...;
В этом случае любой пользователь, который подключается с локального хоста с
правильный пароль для анонимного пользователя разрешен
доступ, с привилегиями, связанными с анонимным пользователем
учетная запись.
Для получения дополнительной информации об имени пользователя и имени хоста
значения в именах учетных записей, см. Раздел 6.2.4, «Указание имен учетных записей».
Предупреждение
Если вы разрешаете локальным анонимным пользователям подключаться к MySQL
сервер, вы также должны предоставить привилегии всем локальным пользователям
в качестве
'
.В противном случае учетная запись анонимного пользователя для имя_пользователя
' @ 'localhost'
localhost
в
mysql.user
системная таблица используется, когда
названные пользователи пытаются войти на сервер MySQL с локального
машина. Подробнее см.
Раздел 6.2.6, «Контроль доступа, этап 1: проверка соединения».
Чтобы определить, относится ли эта проблема к вам, выполните команду
следующий запрос, в котором перечислены все анонимные пользователи:
ВЫБЕРИТЕ Host, User FROM mysql.пользователь WHERE User = '';
Чтобы избежать описанной проблемы, удалите локальный
анонимная учетная запись пользователя, использующая это утверждение:
УДАЛИТЬ ПОЛЬЗОВАТЕЛЯ '' @ 'localhost';
Привилегии, поддерживаемые MySQL
В следующих таблицах приведены допустимые статические и
динамический priv_type
типы привилегий
что может быть указано для
ГРАНТ
и
REVOKE
заявления, а
уровни, на которых может быть предоставлена каждая привилегия.Для дополнительных
информацию о каждой привилегии см.
Раздел 6.2.2, «Привилегии, предоставляемые MySQL». Для получения информации о
различия между статическими и динамическими привилегиями см.
Статические и динамические привилегии.
Таблица 13.11 Допустимые статические привилегии для GRANT и REVOKE
Привилегия | Значение и предоставляемые уровни |
---|---|
ВСЕ [ПРИВИЛЕГИИ] | Предоставить все привилегии на указанном уровне доступа, кроме ОПЦИЯ ГРАНТА и ПРОКСИ . |
АЛЬТЕР | Разрешить использование ALTER TABLE . Уровни:Глобальная, база данных, таблица. |
ИЗМЕНЕНИЕ ПРОЦЕДУРЫ | Разрешить изменение или удаление сохраненных подпрограмм. Уровни: Глобальный, база данных, рутина. |
СОЗДАТЬ | Разрешить создание базы данных и таблиц. Уровни: Глобальный, база данных, таблица. |
СОЗДАТЬ РОЛЬ | Разрешить создание роли. Уровень: Глобальный. |
СОЗДАТЬ РУКОВОДСТВО | Разрешить создание сохраненной подпрограммы. Уровни: глобальный, база данных. |
СОЗДАТЬ ТАБЛИЦЫ | Разрешить создание, изменение или изменение табличных пространств и групп файлов журнала. упавший. Уровень: Глобальный. |
СОЗДАТЬ ВРЕМЕННЫЕ ТАБЛИЦЫ | Разрешить использование CREATE .Уровни: глобальный, база данных. |
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ | Разрешить использование CREATE USER , ВЫБРАТЬ ПОЛЬЗОВАТЕЛЯ , ПЕРЕИМЕНОВАТЬ ПОЛЬЗОВАТЕЛЯ и ОТМЕНИТЬ ВСЕ . Уровень: Глобальный. |
СОЗДАТЬ ПРОСМОТР | Разрешить создание или изменение представлений. Уровни: Глобальный, база данных, таблица. |
УДАЛИТЬ | Разрешить использование УДАЛИТЬ .Уровень: Глобальный,база данных, таблица. |
КАПЕЛЬ | Разрешить удаление баз данных, таблиц и представлений. Уровни: Глобальный, база данных, таблица. |
РОЛЬ КАПЛИ | Разрешить отбрасывание ролей. Уровень: Глобальный. |
СОБЫТИЕ | Разрешить использование событий для планировщика событий.Уровни: глобальный, база данных. |
ВЫПОЛНИТЬ | Разрешить пользователю выполнять сохраненные подпрограммы. Уровни: глобальный, база данных, рутина. |
ФАЙЛ | Разрешить пользователю заставлять сервер читать или записывать файлы. Уровень: Глобальный. |
ОПЦИЯ ПРЕДОСТАВЛЕНИЯ | Разрешить предоставление или удаление прав для других учетных записей.Уровни: глобальный, база данных, таблица, рутина, прокси. |
ИНДЕКС | Разрешить создание или удаление индексов. Уровни: глобальный, база данных, стол. |
ВСТАВИТЬ | Разрешить использование INSERT . Уровни: Глобальный,база данных, таблица, столбец. |
ТАБЛИЦЫ ЗАМКОВ | Разрешить использование ТАБЛИЦ БЛОКИРОВКИ на таблицах длякоторый у вас есть SELECT привилегия.Уровни: глобальный, база данных. |
ПРОЦЕСС | Разрешить пользователю видеть все процессы с помощью SHOW . Уровень: Глобальный. |
ПРОКСИ | Включить проксирование пользователя. Уровень: от пользователя к пользователю. |
ССЫЛКИ | Разрешить создание внешнего ключа. Уровни: глобальный, база данных, таблица, столбец. |
ПЕРЕЗАГРУЗИТЬ | Разрешить использование операций FLUSH . Уровень:Глобальный. |
КЛИЕНТ РЕПЛИКАЦИИ | Разрешите пользователю спрашивать, где находятся исходный сервер или сервер-реплика. Уровень: Глобальный. |
ПОДЧИНЕННЫЙ РЕПЛИКАЦИЯ | Включите реплики для чтения событий двоичного журнала из источника.Уровень: Глобальный. |
ВЫБРАТЬ | Разрешить использование SELECT . Уровни: Глобальный,база данных, таблица, столбец. |
ПОКАЗАТЬ БАЗЫ ДАННЫХ | Включите ПОКАЗАТЬ БАЗЫ ДАННЫХ , чтобы показать всебазы данных. Уровень: Глобальный. |
ПРОСМОТР | Разрешить использование SHOW CREATE VIEW .Уровни:Глобальная, база данных, таблица. |
ВЫКЛЮЧЕНИЕ | Разрешить использование mysqladmin shutdown . Уровень: Глобальный. |
СУПЕР | Разрешить использование других административных операций, таких как ИЗМЕНИТЬ ИСТОЧНИК РЕПЛИКАЦИИ , СМЕНА МАСТЕРА , УБИТЬ , ПРОДУВКА ДВОИЧНЫХ ЖУРНАЛОВ , НАБОР и mysqladminкоманда debug .Уровень: Глобальный. |
ТРИГГЕР | Разрешить триггерные операции. Уровни: Глобальный, база данных, таблица. |
ОБНОВЛЕНИЕ | Разрешить использование ОБНОВЛЕНИЕ . Уровни: Глобальный,база данных, таблица, столбец. |
ИСПОЛЬЗОВАНИЕ | Синоним «без привилегий» |
Таблица 13.12 разрешенных динамических привилегий для GRANT и REVOKE
Триггер связан с таблицей. Чтобы создать или отбросить
триггер, у вас должен быть
TRIGGER
привилегия для
таблица, а не триггер.
В заявлениях GRANT
ВСЕ
или
[ПРИВИЛЕГИИ] ПРОКСИ
привилегия должна быть названа сама по себе и не может быть указана
наряду с другими привилегиями. ВСЕ
означает все привилегии, доступные для
[ПРИВИЛЕГИИ]
уровень, на котором должны быть предоставлены привилегии, кроме
ОПЦИЯ ГРАНТА
и
PROXY
привилегий.
Информация об учетной записи MySQL хранится в таблицах
Схема системы mysql
. Для дополнительных
подробности см. в Разделе 6.2 «Контроль доступа и управление учетными записями», в котором
обсуждает схему системы mysql
и
система контроля доступа широко.
Если таблицы привилегий содержат строки привилегий, которые содержат
имена баз данных или таблиц в смешанном регистре и
lower_case_table_names
система
переменная установлена в ненулевое значение,
REVOKE
нельзя использовать для отзыва
эти привилегии. В таких случаях необходимо манипулировать
таблицы грантов напрямую.
( GRANT
не создает таких
ряды, когда
lower_case_table_names
- это
установлен, но такие строки могли быть созданы до установки
эта переменная.В
lower_case_table_names
настройка может быть настроена только при запуске сервера.)
Привилегии могут быть предоставлены на нескольких уровнях, в зависимости от
синтаксис, используемый для предложения ON
. Для
REVOKE
, то же
ON Синтаксис
определяет, какие привилегии
Удалить.
Для глобального уровня, уровня базы данных, таблицы и подпрограммы
ГРАНТ ВСЕХ
назначает только те привилегии, которые существуют на вашем уровне
предоставление.Например, GRANT ALL ON
- это
db_name
. *
оператор уровня базы данных, поэтому он не предоставляет никаких глобальных
привилегии, такие как ФАЙЛ
.
Предоставление ВСЕ
не присваивает
GRANT OPTION
или
PROXY
привилегия.
Предложение object_type
, если присутствует,
должно быть указано как ТАБЛИЦА
,
ФУНКЦИЯ
или ПРОЦЕДУРА
когда следующий объект является таблицей, хранимой функцией или
хранимая процедура.
Привилегии, которые пользователь имеет для базы данных, таблицы,
столбец или процедура формируются аддитивно как логические
ИЛИ
привилегий учетной записи на
каждый из уровней привилегий, включая глобальный уровень. Это
невозможно отказать в привилегии, предоставленной на более высоком уровне
отсутствием этой привилегии на более низком уровне. Например,
это заявление дает
ВЫБРАТЬ
и
ВСТАВЬТЕ
привилегий по всему миру:
ВЫБОР ВЫДАЧИ, ВСТАВКА *.* К u1;
Глобально предоставленные привилегии применяются ко всем базам данных,
таблицы и столбцы, даже если они не предоставлены ни в одном из них
нижние уровни.
Начиная с MySQL 8.0.16, можно явно запретить
привилегия, предоставленная на глобальном уровне путем ее отзыва на
конкретные базы данных, если
partial_revokes
system
переменная включена:
GRANT SELECT, INSERT, UPDATE ON *.* К u1;
ОТМЕНА ВСТАВКИ, ОБНОВЛЕНИЕ db1. * FROM u1;
Результатом предыдущих утверждений является то, что
SELECT
применяется глобально ко всем
таблицы, тогда как INSERT
и
ОБНОВЛЕНИЕ
применяется глобально, за исключением
таблицы в db1
. Доступ к аккаунту
db1
только для чтения.
Подробности процедуры проверки привилегий представлены в
Раздел 6.2.7, «Контроль доступа, этап 2: проверка запроса».
Если вы используете таблицу, столбец или обычные привилегии даже для
один пользователь, сервер проверяет таблицу, столбец и процедуру
привилегии для всех пользователей, и это немного замедляет MySQL.
Аналогичным образом, если вы ограничите количество запросов, обновлений или
подключения для любых пользователей, сервер должен отслеживать эти
ценности.
MySQL позволяет вам предоставлять привилегии для баз данных или таблиц.
этого не существует.Для таблиц предоставляемые привилегии
должен включать CREATE
привилегия. Такое поведение заложено в конструкции ,
и предназначен для того, чтобы администратор базы данных мог
подготовить учетные записи пользователей и привилегии для баз данных или таблиц
которые будут созданы позже.
Важный
MySQL не отменяет автоматически никаких привилегий
когда вы удаляете базу данных или таблицу .Однако если
вы отбрасываете рутину, любые привилегии рутинного уровня, предоставленные для
эта процедура отменена.
Глобальные привилегии являются административными или применяются ко всем базам данных.
на данном сервере. Чтобы назначить глобальные привилегии, используйте
ON *. *
синтаксис:
ПРЕДОСТАВИТЬ ВСЕ НА *. * TO 'someuser' @ 'somehost';
GRANT SELECT, INSERT ON *. * TO 'someuser' @ 'somehost';
CREATE TABLESPACE
,
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ
,
ФАЙЛ
,
ПРОЦЕСС
,
ПЕРЕЗАГРУЗИТЬ
,
КЛИЕНТ РЕПЛИКАЦИИ
,
РЕПЛИКАЦИЯ SLAVE
,
ПОКАЗАТЬ БАЗЫ ДАННЫХ
,
ВЫКЛЮЧЕНИЕ
, и
SUPER
статические привилегии
административный и может быть предоставлен только глобально.
Все динамические привилегии глобальны и могут быть предоставлены только
глобально.
Другие привилегии могут быть предоставлены глобально или более конкретно.
уровни.
Эффект GRANT OPTION
предоставленные на глобальном уровне различаются для статических и динамических
привилегии:
ВАРИАНТ ПРЕДОСТАВЛЕНИЯ
предоставлен для
любая статическая глобальная привилегия применяется ко всем статическим глобальным
привилегии.ВАРИАНТ ПРЕДОСТАВЛЕНИЯ
предоставлен для
любая динамическая привилегия применяется только к этой динамической
привилегия.
GRANT ALL
на глобальном уровне предоставляет все
статические глобальные привилегии и все зарегистрированные в настоящее время динамические
привилегии. Динамическая привилегия, зарегистрированная после
выполнение оператора GRANT
не
предоставляется задним числом на любую учетную запись.
MySQL хранит глобальные привилегии в
mysql.user
системная таблица.
Привилегии базы данных применяются ко всем объектам в данной базе данных.
Чтобы назначить права на уровне базы данных, используйте ON
синтаксис:
db_name
. *
ПРЕДОСТАВИТЬ ВСЕ НА mydb. * TO 'someuser' @ 'somehost';
GRANT SELECT, INSERT ON mydb. * TO 'someuser' @ 'somehost';
Если вы используете синтаксис ON *
(а не
ПО *.*
), привилегии назначаются на
уровень базы данных для базы данных по умолчанию. Ошибка возникает, если
нет базы данных по умолчанию.
Модель CREATE
,
DROP
, г.
СОБЫТИЕ
,
ВАРИАНТ ГРАНТА
,
ТАБЛИЦЫ БЛОКИРОВКИ
и
ССЫЛКИ
привилегии могут быть
указывается на уровне базы данных. Табличные или обычные привилегии
также можно указать на уровне базы данных, и в этом случае
они применяются ко всем таблицам или процедурам в базе данных.
MySQL хранит привилегии базы данных в
mysql.db
системная таблица.
Привилегии таблицы применяются ко всем столбцам в данной таблице. К
назначить привилегии на уровне таблицы, использовать ON
синтаксис:
db_name.tbl_name
ПРЕДОСТАВИТЬ ВСЕ НА mydb.mytbl 'someuser' @ 'somehost';
GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser' @ 'somehost';
Если указать tbl_name
, а не
имя_бд.tbl_name
, выписка
применяется к tbl_name
по умолчанию
база данных. Ошибка возникает, если нет базы данных по умолчанию.
Допустимые значения priv_type
при
уровень таблицы ALTER
,
СОЗДАТЬ ВИД
,
СОЗДАТЬ
,
УДАЛИТЬ
,
DROP
, г.
ВАРИАНТ ГРАНТА
,
ИНДЕКС
,
ВСТАВИТЬ
,
ССЫЛКИ
,
ВЫБРАТЬ
,
ПРОСМОТР
,
TRIGGER
и
ОБНОВЛЕНИЕ
.
Привилегии уровня таблицы применяются к базовым таблицам и представлениям. Они делают
не применяется к таблицам, созданным с помощью CREATE
, даже если имена таблиц совпадают. Для
ВРЕМЕННАЯ ТАБЛИЦА
информация о TEMPORARY
table
см. Раздел 13.1.20.2, «Оператор CREATE TEMPORARY TABLE».
MySQL хранит привилегии таблиц в
mysql.tables_priv
системная таблица.
Привилегии столбца применяются к отдельным столбцам в данной таблице.Каждая привилегия, предоставляемая на уровне столбца, должна быть
за которым следует столбец или столбцы, заключенные в
скобки.
GRANT SELECT (col1), INSERT (col1, col2) ON mydb.mytbl TO 'someuser' @ 'somehost';
Допустимые значения priv_type
для столбца (то есть, когда вы используете
column_list
пункт) являются
ВСТАВИТЬ
,
ССЫЛКИ
,
ВЫБРАТЬ
, и
ОБНОВЛЕНИЕ
.
MySQL хранит привилегии столбцов в
mysql.columns_priv
системная таблица.
Сохраненные стандартные привилегии
ALTER ROUTINE
,
CREATE ROUTINE
,
EXECUTE
и
GRANT OPTION Применяются
привилегии
к хранимым подпрограммам (процедурам и функциям). Они могут быть
предоставляется на глобальном уровне и уровне базы данных. Кроме
CREATE ROUTINE
, эти
привилегии могут быть предоставлены на обычном уровне индивидуальным
рутины.
GRANT CREATE ROUTINE ON mydb. * TO 'someuser' @ 'somehost';
ГРАНТ ВЫПОЛНИТЬ НА ПРОЦЕДУРЕ mydb.myproc TO 'someuser' @ 'somehost';
Допустимые значения priv_type
при
рутинный уровень - ALTER
,
ROUTINE EXECUTE
и
ВАРИАНТ ГРАНТА
.
CREATE ROUTINE
не является
привилегия обычного уровня, потому что вы должны иметь привилегию на
глобальный уровень или уровень базы данных для создания процедуры в первом
место.
MySQL хранит привилегии обычного уровня в
mysql.procs_priv
системная таблица.
Привилегия PROXY
позволяет одному
Пользователь должен быть доверенным лицом для другого. Прокси-пользователь выдает себя за или
берет личность прокси-пользователя; то есть предполагает
привилегии прокси-пользователя.
ПРЕДОСТАВЛЯТЬ ПРОКСИ НА 'localuser' @ 'localhost' TO 'externaluser' @ 'somehost';
Когда предоставляется PROXY
, он должен
быть единственной привилегией, указанной в
GRANT
выписка, и единственная
разрешено СО
опция СО
.
ВАРИАНТ ГРАНТА
Проксирование требует, чтобы прокси-пользователь прошел аутентификацию через
плагин, который возвращает имя прокси-пользователя серверу
когда подключается прокси-пользователь, и что прокси-пользователь имеет
PROXY
привилегия для прокси-пользователя. Для
подробности и примеры см. в Раздел 6.2.18, «Прокси-пользователи».
MySQL хранит привилегии прокси в
mysql.proxies_priv
системная таблица.
GRANT
синтаксис без
ON Пункт
предоставляет роли, а не
индивидуальные привилегии.Роль - это именованный набор
привилегии; см. Раздел 6.2.10, «Использование ролей». Например:
GRANT 'role1', 'role2' TO 'user1' @ 'localhost', 'user2' @ 'localhost';
Каждая предоставляемая роль должна существовать, как и каждый пользователь.
учетная запись или роль, которой она должна быть предоставлена. Начиная с MySQL
8.0.16, роли не могут быть предоставлены анонимным пользователям.
Предоставление роли не приводит к автоматическому изменению роли.
активный.Для получения информации об активации ролей и
инактивация, см. Активация ролей.
Эти привилегии необходимы для предоставления ролей:
Если у вас
ROLE_ADMIN
привилегия (или устаревшая
SUPER
привилегия) можно
предоставлять или отзывать любую роль пользователям или ролям.Если бы вам была предоставлена роль с
GRANT
заявление о том, что
включает предложениеWITH ADMIN OPTION
,
вы можете предоставить эту роль другим пользователям или
ролей или отозвать его у других пользователей или ролей, если
роль активна в то время, когда вы впоследствии предоставляете
или отозвать его.Это включает в себя возможность использовать
С ОПЦИЕЙ АДМИНИСТРАТОРА Сам
.Чтобы предоставить роль, имеющую
SYSTEM_USER
привилегия, вы
должен иметьSYSTEM_USER
привилегия.
Можно создавать круговые ссылки с помощью
ГРАНТ
. Например:
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'u1', 'u2';
СОЗДАТЬ РОЛЬ 'r1', 'r2';
ПРЕДОСТАВИТЬ 'u1' TO 'u1'; - простой цикл: u1 => u1
ПРЕДОСТАВИТЬ 'r1' В 'r1'; - простой цикл: r1 => r1
ПРЕДОСТАВИТЬ 'r2' TO 'u2';
ПРЕДОСТАВИТЬ 'u2' TO 'r2'; - смешанный цикл пользователь / роль: u2 => r2 => u2
Разрешены циркулярные ссылки на гранты, но не добавляются новые
привилегии или роли получателю гранта, потому что пользователь или роль
уже имеет свои привилегии и роли.
Пункт
AS
и ограничения привилегий
Начиная с MySQL 8.0.16, GRANT
имеет
AS
, в котором указывается дополнительная информация. пользователь
[С
ROLE] пункт
о контексте привилегий, который будет использоваться для выполнения оператора.
Этот синтаксис виден на уровне SQL, хотя его основной
цель - обеспечить единообразную репликацию на всех узлах
ограничения привилегий праводателя, налагаемые частичным отзывом,
заставляя эти ограничения отображаться в двоичном журнале.Для
информацию о частичном отзыве см.
Раздел 6.2.12, «Ограничение привилегий с помощью частичного отзыва».
Когда AS
пользователь
оговорка, при выполнении инструкции учитывается
любые ограничения привилегий, связанные с указанным пользователем,
включая все роли, указанные в С РОЛЬ
,
если представить. В результате фактически предоставленные привилегии
по заявлению может быть уменьшено относительно указанных.
Эти условия распространяются на AS.
пункт:
пользователь
AS
действует только тогда, когда названный
пользователь
имеет ограничения привилегий
(что означает, что
partial_revokes
system
переменная включена).Если задано
WITH ROLE
, все роли с именами
должен быть предоставлен названному
пользователь
.Именованный пользователь
Учетная запись MySQL указана как
'
,имя_пользователя
' @ 'имя_хоста
'
CURRENT_USER
, или
CURRENT_USER ()
. Электрический ток
пользователь может быть назван вместе сСО
для случая, когда исполняющий пользователь хочет
РОЛЬ
ГРАНТ
выполнить с набором
примененных ролей, которые могут отличаться от активных ролей
в рамках текущего сеанса.AS
нельзя использовать для получения привилегий
не принадлежит пользователю, который выполняет
GRANT
выписка. В
выполняющий пользователь должен иметь как минимум права, чтобы быть
предоставлено, но пунктAS
может только
ограничивать предоставляемые привилегии, а не повышать их.Что касается предоставляемых привилегий,
AS
не может указать пользователя / роль
комбинация с большим количеством привилегий (меньше ограничений)
чем пользователь, выполняющий
GRANT
выписка.В
AS
комбинация пользователь / роль разрешена
иметь больше привилегий, чем выполняющий пользователь, но только
если заявление не предоставляет эти дополнительные
привилегии.AS
поддерживается только для предоставления
глобальные привилегии (ON *. *
).AS
не поддерживается для
ПРОКСИ
гранта.
Следующий пример иллюстрирует эффект
Пункт AS
. Создать пользователя
u1
, который также имеет некоторые глобальные привилегии
в качестве ограничений на эти привилегии:
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ u1;
GRANT SELECT, INSERT, UPDATE, DELETE ON *. * TO u1;
ОТМЕНИТЬ ВСТАВКУ, ОБНОВИТЬ НА schema1. * FROM u1;
ОТМЕНИТЬ ВЫБОР НА schema2. * FROM u1;
Также создайте роль r1
, которая поднимает некоторые из
ограничения привилегий и предоставить роль
u1
:
СОЗДАТЬ РОЛЬ r1;
GRANT INSERT ON schema1.* К r1;
ПРЕДОСТАВИТЬ ВЫБОР НА schema2. * TO r1;
ПРЕДОСТАВИТЬ r1 TO u1;
Теперь, используя учетную запись, у которой нет ограничений привилегий
собственный, предоставить нескольким пользователям один и тот же набор глобальных
привилегии, но каждый с разными ограничениями, налагаемыми
пункт AS
и проверьте, какие привилегии
действительно предоставлены.
Заявление
GRANT
здесь
не имеет пунктаAS
, поэтому привилегии
предоставлены именно те, которые указаны:mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ u2; mysql> GRANT SELECT, INSERT, UPDATE ON *.* К u2; mysql> ПОКАЗАТЬ ГРАНТЫ ДЛЯ u2; + ------------------------------------------------- + | Гранты для u2 @% | + ------------------------------------------------- + | GRANT SELECT, INSERT, UPDATE ON *. * TO `u2` @`% `| + ------------------------------------------------- +
Заявление
GRANT
здесь
имеет пунктAS
, поэтому привилегии
предоставлены те, которые указаны, но с ограничениями от
u1
применено:mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ u3; mysql> GRANT SELECT, INSERT, UPDATE ON *.* К u3 AS u1; mysql> ПОКАЗАТЬ ГРАНТЫ ДЛЯ u3; + ------------------------------------------------- --- + | Гранты для u3 @% | + ------------------------------------------------- --- + | GRANT SELECT, INSERT, UPDATE ON *. * TO `u3` @`% `| | ОТМЕНА ВСТАВКИ, ОБНОВЛЕНИЕ НА `schema1`. * FROM` u3` @ `%` | | ОТМЕНИТЬ ВЫБОР НА `schema2`. * FROM` u3` @ `%` | + ------------------------------------------------- --- +
Как упоминалось ранее, пункт
AS
можно только добавлять ограничения привилегий; это не может обостриться
привилегии.Таким образом, хотяu1
имеет
DELETE
привилегия, то есть
не включены в предоставленные привилегии, потому что
в заявлении не указывается предоставление
УДАЛИТЬ
.Пункт
AS
для
GRANT
заявление здесь делает
рольr1
активна для
u1
. Эта роль поднимает некоторые из
ограничения поu1
.Следовательно,
предоставленные привилегии имеют некоторые ограничения, но не так много
как и предыдущийGRANT
утверждение:mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ u4; mysql> GRANT SELECT, INSERT, UPDATE ON *. * ДО u4 AS u1 С РОЛЕЙ r1; mysql> ПОКАЗАТЬ ГРАНТЫ ДЛЯ u4; + ------------------------------------------------- + | Гранты для u4 @% | + ------------------------------------------------- + | GRANT SELECT, INSERT, UPDATE ON *.* TO `u4` @`% `| | ОТМЕНА ОБНОВЛЕНИЯ НА `schema1`. * FROM` u4` @ `%` | + ------------------------------------------------- +
Если заявление GRANT
включает
AS
пользователь
пункт, ограничения привилегий для пользователя, который выполняет
оператор игнорируется (а не применяется, как в
отсутствие пункта AS
).
Другие характеристики счета
Необязательное условие WITH
используется для включения
пользователь для предоставления привилегий другим пользователям. С
дает пользователю возможность
Предложение GRANT OPTION
предоставлять другим пользователям любые привилегии, которые пользователь имеет на
указанный уровень привилегий.
Для предоставления ВАРИАНТА ГРАНТА
привилегия учетной записи без изменения ее
привилегии, сделайте это:
ИСПОЛЬЗОВАНИЕ GRANT НА *. * TO 'someuser' @ 'somehost' С ОПЦИЕЙ GRANT;
Будьте осторожны, кому вы даете GRANT
привилегия, потому что два пользователя с разными
OPTION
привилегии могут иметь возможность комбинировать привилегии!
Вы не можете предоставить другому пользователю привилегию, которую вы сами
не иметь; ОПЦИЯ ГРАНТА
привилегия позволяет вам назначать только те привилегии, которые
вы сами обладаете.
Помните, что когда вы предоставляете пользователю
GRANT OPTION
привилегия на
определенный уровень привилегий, любые привилегии, которыми обладает пользователь
(или могут быть даны в будущем) на этом уровне также может быть
предоставленные этим пользователем другим пользователям. Предположим, вы даете
пользователь с привилегией INSERT
на
база данных. Если вы затем предоставите
SELECT
привилегия на
базу данных и укажите WITH GRANT OPTION
,
этот пользователь может дать другим пользователям не только
SELECT
привилегия, но также
ВСТАВИТЬ
.Если вы затем предоставите
ОБНОВЛЕНИЕ
привилегия для пользователя на
база данных, пользователь может предоставить
ВСТАВИТЬ
,
ВЫБРАТЬ
, и
ОБНОВЛЕНИЕ
.
Неадминистративному пользователю не следует предоставлять
ALTER
привилегия глобально или для
Системная схема mysql
. Если ты это сделаешь,
пользователь может попытаться нарушить систему привилегий, переименовав
столы!
Для получения дополнительной информации о связанных рисках безопасности
с особыми привилегиями, см.
Раздел 6.2.2, «Привилегии, предоставляемые MySQL».
MySQL и стандартные версии SQL GRANT
Самые большие различия между MySQL и стандартным SQL
версии GRANT
:
MySQL связывает привилегии с комбинацией хоста
имя и имя пользователя, а не только имя пользователя.Стандартный SQL не имеет глобального уровня или уровня базы данных
привилегии, и он не поддерживает все типы привилегий
что MySQL поддерживает.MySQL не поддерживает стандартный SQL
UNDER
привилегия.Стандартные привилегии SQL имеют иерархическую структуру.
манера. Если вы удалите пользователя, все права, которые он имеет
предоставлены аннулированы. Это также верно в MySQL, если
вы используетеDROP USER
. Видеть
Раздел 13.7.1.5, «Заявление DROP USER».В стандартном SQL, когда вы удаляете таблицу, все привилегии для
таблица отозвана.В стандартном SQL, когда вы отзываете
привилегия, все привилегии, которые были предоставлены на основании этого
привилегии также отменяются. В MySQL привилегии могут быть
упал сDROP USER
или
REVOKE
операторов.В MySQL можно иметь
INSERT
привилегия всего за
некоторые столбцы в таблице. В этом случае вы можете
по-прежнему выполнятьINSERT
операторы в таблице, при условии, что вы вставляете значения
только для тех столбцов, для которых у вас есть
INSERT
привилегия.В
для пропущенных столбцов устанавливаются неявные значения по умолчанию
если строгий режим SQL не включен. В строгом режиме
оператор отклоняется, если какой-либо из пропущенных столбцов имеет
нет значения по умолчанию. (Стандартный SQL требует наличия
ВСТАВЬТЕ
привилегии на всех
столбцы.) Для получения информации о строгом режиме SQL и
неявные значения по умолчанию, см. Раздел 5.1.11, «Режимы SQL сервера»,
и Раздел 11.6, «Значения по умолчанию для типов данных».
Как мне создать пользователя MySQL и назначить права доступа?
MySQL - Создание пользователя
MySQL и MariaDB, вероятно, самые популярные системы управления базами данных с открытым исходным кодом. С помощью этих баз данных вы можете динамически хранить и управлять большими объемами данных. Очень детализированная система прав доступа помогает контролировать доступ различных пользователей.
Эта небольшая статья посвящена созданию нового пользователя и предоставлению ему прав доступа к базе данных.Даже если в этой статье упоминается только MySQL, все команды могут быть переданы в MariaDB один на один.
Создание пользователя в MySQL
Сначала запустите консоль MySQL. Откройте терминал (например, PuTTY или XTerm) и подключитесь к серверу с установленным MySQL. Мы используем пользователя «root» в вашей установке MySQL. Если вы предоставите пользователю пароль, используйте следующую команду:
$ mysql -u root -p
Затем вам будет предложено ввести пароль. После ввода вы должны увидеть приглашение MySQL.Если вы не установили пароль, сделайте это без параметра «-p», и вам не будет предложено ввести пароль.
корень @ mysql: ~ # mysql -u root -p Введите пароль: Добро пожаловать в монитор MySQL. Команды заканчиваются на; или \ g. Ваш идентификатор подключения MySQL - 98 Версия сервера: 5.5.47-0 + deb8u1 (Debian) Авторские права (c) 2000, 2015, Oracle и / или ее дочерние компании. Все права защищены. Oracle является зарегистрированным товарным знаком Oracle Corporation и / или ее филиалы. Другие названия могут быть товарными знаками соответствующих собственники.Введите "помощь"; или '\ h' для помощи. Введите '\ c', чтобы очистить текущий оператор ввода. mysql>
Создать нового пользователя сравнительно просто. Просто замените значения «пользователь» и «пароль» в следующей команде:
CREATE USER 'user' @ 'localhost' IDENTIFIED BY 'password';
Вы создали пользователя, у которого еще нет прав доступа к какой-либо базе данных или таблице. В целях тестирования создайте новую базу данных, к которой пользователь сможет получить доступ позже.
СОЗДАТЬ БАЗУ ДАННЫХ «myDB»;
А теперь предоставьте вашему новому пользователю все права на эту базу данных.Замените значение «пользователь» своим именем пользователя:
ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ НА myDB. * TO 'user' @ 'localhost';
Краткое объяснение приведенных выше команд:
- ПРЕДОСТАВИТЬ ВСЕ ПРИВИЛЕГИИ: Все доступные привилегии (права) назначены. Есть также ограниченные привилегии, подробнее об этом позже.
- НА «myDB». *: Указывает области, которым должны быть назначены права. Также возможно «*. * «Предоставить пользователю, например, все права или ограничение на отдельные таблицы базы данных, e.грамм. «MyDB». «Мой стол» ».
- TO ‘user’ @ ’localhost’: это пользователь, который получит эти права.
MySQL обычно имеет права доступа пользователя к памяти, поэтому медленные операции ввода-вывода не должны происходить каждый раз, когда пользователь входит в базу данных. Чтобы обновить копию привилегий в памяти, необходимо выполнить команду:
FLUSH PRIVILEGES;
один раз после каждого изменения. Если вы забудете команду, возможно, вы еще не сможете зарегистрироваться с новыми (или измененными) данными доступа к серверу базы данных.
Дополнительные привилегии в MySQL
Помимо «ВСЕХ ПРИВИЛЕГИЙ», использованных выше, вы также можете назначать другие наборы привилегий пользователю на вашем сервере MySQL. Например:
- ВСЕ ПРИВИЛЕГИИ: подстановочный знак для всех прав на выбранный объект базы данных или - с *. * - для всех баз данных
CREATE: позволяет пользователю создавать новые базы данных
DROP: позволяет пользователю удалять базы данных
DELETE: позволяет пользователю удалять отдельные строки в таблице
INSERT: позволяет пользователю создавать новые строки в таблице
SELECT: разрешения на чтение для базы данных или таблицы
FIX: разрешение на обновление строки
GRANT OPTION: позволяет пользователю устанавливать или отзывать права других пользователей
Точный синтаксис очень хорошо описан в документации MySQL.Вы найдете это здесь.
Удаление пользователя в MySQL
Вы можете удалить пользователя так же легко. Используйте следующую команду:
DROP USER 'user' @ 'localhost';
Убедитесь, что вы перезагружали привилегии после каждого изменения в таблицах редакций.
Другие статьи по MySQL и MariaDB
Zurück zur Tutorial Übersicht Вернуться к обзору учебного курса
Как создать пользователя в MySQL / MariaDB и предоставить разрешения для конкретной базы данных
Создание пользователя в MySQL или MariaDB и предоставление разрешения ему на доступ к конкретной базе данных и возможность записывать в нее данные - это очень обычная задача, которую необходимо выполнять каждый раз, когда вы устанавливаете новое приложение на основе любого из этих механизмов базы данных, например, веб-приложения, работающие поверх Стек ЛАМПА .Будь то простой WordPress или более сложное приложение, так или иначе, вам всегда придется выполнять эти шаги в какой-то момент перед его развертыванием.
Эти команды допустимы для выполнения как из общего интерфейса командной строки MySQL , так и из любого другого инструмента, который позволяет выполнять команды SQL для экземпляра MySQL, такого как phpMyAdmin или MySQL Workbench. Их также можно запустить в MariaDB с идентичным результатом.
1. Создание базы данных
mysql> СОЗДАТЬ БАЗУ ДАННЫХ `mydb`;
2.Создание пользователя
mysql> СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'myuser' ИДЕНТИФИЦИРОВАНО 'mypassword';
3. Предоставьте разрешения на доступ и использование сервера MySQL
Разрешить доступ только с localhost (это наиболее безопасная и распространенная конфигурация , которую вы будете использовать для веб-приложения):
mysql> GRANT USAGE ON *. *. К 'myuser' @ localhost, ОПРЕДЕЛЕННОМ 'mypassword';
Чтобы разрешить доступ к серверу MySQL с любого другого компьютера в сети:
mysql> GRANT USAGE ON *.* ДЛЯ 'myuser' @ '%' ОПРЕДЕЛЕННЫЙ 'mypassword';
4. Предоставить пользователю все привилегии в конкретной базе данных
mysql> ПРЕДОСТАВИТЬ ВСЕ привилегии НА `mydb`. * TO 'myuser' @ localhost;
Как и в предыдущей команде, если вы хотите, чтобы пользователь работал с базой данных из любого места, вам придется заменить localhost на «%».
5. Применить внесенные изменения.
Чтобы новые назначенные разрешения вступили в силу, вы должны выполнить следующую команду:
mysql> FLUSH PRIVILEGES;
6.Убедитесь, что у вашего нового пользователя есть необходимые разрешения.
mysql> ПОКАЗАТЬ ГРАНТЫ ДЛЯ 'myuser' @ localhost; + ------------------------------------------------- ------------- + | Гранты для myuser @ localhost | + ------------------------------------------------- ------------- + | ПРЕДОСТАВЛЯЙТЕ ИСПОЛЬЗОВАНИЕ *. * ДЛЯ 'myuser' @ 'localhost' | | ПРЕДОСТАВЛЯЙТЕ ВСЕ ПРИВИЛЕГИИ НА `mydb`. * 'Myuser' @ 'localhost' | + ------------------------------------------------- ------------- + 2 строки в наборе (0,00 сек)
Если вы в какой-то момент допустили ошибку, вы можете отменить все вышеперечисленные шаги, выполнив следующие команды, приняв меры предосторожности, заменив localhost на '%', если вы также изменили его в предыдущие команды:
DROP USER myuser @ localhost; УДАЛИТЬ БАЗУ ДАННЫХ mydb;
Наконец, вот очень простой и небольшой сценарий на Bash , который поможет вам сделать все это гораздо быстрее и напрямую.Просто измените имя пользователя и имя базы данных, и готово:
#! / bin / bash newUser = 'testuser' newDbPassword = 'testpwd' newDb = 'testdb' хост = localhost #host = '%' commands = "CREATE DATABASE \` $ {newDb} \ `; CREATE USER '$ {newUser}' @ '$ {host}' IDENTIFIED BY '$ {newDbPassword}'»; GRANT USAGE ON *. * TO '$ {newUser} " '@' $ {host} 'ИДЕНТИФИЦИРОВАНО' $ {newDbPassword} '; ПРЕДОСТАВЛЯЙТЕ ВСЕ привилегии НА \ `$ {newDb} \`. * TO '$ {newUser}' @ '$ {host}'; ПРОМЫВИТЬ ПРИВИЛЕГИИ; " echo "$ {commands}" | / usr / bin / mysql -u root -p
Создание нового пользователя и предоставление привилегий в MySQL
MySQL - это быстрая, надежная и простая в использовании база данных, поддерживаемая некоторыми известными организациями, такими как GitHub, NASA, Netflix, US NAVY, Facebook, Twitter, YouTube и многими другими.Обычно мы играем с базой данных под пользователем root, который может изменять что угодно. Но если вы являетесь администратором базы данных в большой организации, вам часто нужно управлять пользователями и заботиться о правах пользователя. В этой статье мы собираемся создать нового пользователя в MySQL. Мы собираемся узнать о создании пользователя в MySQL, а также посмотрим, как мы можем предоставить или отозвать привилегии некоторым пользователям баз данных или таблиц. Итак, приступим.
Прежде всего, давайте посмотрим на создание пользователей и предоставление им привилегий в MySQL.
Для создания нового пользователя в MYSQL. Вы можете запустить команду CREATE USER в оболочке MySQL.
СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ 'новое_имя_пользователя' @ 'localhost' ИДЕНТИФИЦИРОВАНО 'паролем';
В этом синтаксисе не забудьте заменить новое имя пользователя и пароль на желаемое имя пользователя и пароль.
Сразу после успешного создания нового пользователя мы можем предоставить ему привилегии. Например, мы хотим предоставить этому пользователю права доступа к некоторым базам данных. Мы можем предоставить привилегии базы данных, используя следующую команду.
В приведенной выше команде мы предоставляем все привилегии всем таблицам некоторой базы данных, а звездочка означает, что мы предоставляем привилегии всем таблицам этой базы данных. Убедитесь, что вы указали конкретное имя пользователя в соответствии с вашим желанием.
Если вы хотите предоставить пользователю права доступа ко всем базам данных и таблицам. Вы можете запустить следующую команду, используя «*. *»
Мы также можем предоставить несколько привилегий вместо предоставления всех привилегий с помощью следующей команды.Например, чтобы предоставить только SELECT, INSERT и DELETE.
Теперь, если вы хотите взглянуть на привилегии пользователя, вы можете увидеть это с помощью следующей команды.
ПОКАЗАТЬ ГРАНТЫ ДЛЯ "user_name" @ 'localhost';
И на случай, если вы захотите вернуть доступ от этого пользователя. Вы можете отозвать или отменить привилегии, используя следующую команду
Или вместо отзыва привилегий. Вы также можете удалить этого пользователя. Итак, вы можете удалить пользователя базы данных, используя следующую команду
Ну, это все о создании и удалении пользователя в MySQL и различных способах предоставления различных типов привилегий и их отзыва.
Заключение
В этой статье мы узнали, как создать нового пользователя, предоставить этому пользователю различные типы привилегий, а также узнали, как мы можем отозвать некоторые привилегии у пользователя. Эта статья содержит все рабочие задачи, связанные с пользователем, такие как создание, удаление, предоставление и отзыв привилегий.
Как мне предоставить привилегии в MySQL?
Обзор
Поскольку Plesk не разрешает пользователям GRANT привилегии через панель управления Plesk, вам нужно будет создать эти разрешения через командную строку.
Расширенная поддержка может помочь!
Если у вас возникли проблемы с действиями, описанными в этой статье, дополнительную помощь можно получить через Advanced Support, наше подразделение премиальных услуг. Для получения дополнительной информации о том, что может сделать для вас расширенная поддержка, щелкните здесь.
Официальную документацию по MySQL см. На http://www.MySQL.com.
Требования
- У вас должен быть настроен SSH-доступ для пользователя root или sudo.
ПРОЧИТАЙТЕ Вначале
Эта статья предоставлена любезно.Установка, настройка и устранение неполадок сторонних приложений выходит за рамки поддержки, предоставляемой (mt) Media Temple. Найдите минутку, чтобы просмотреть Заявление о поддержке.
Инструкции
Для целей этой статьи мы собираемся использовать привилегию «SELECT». Весь предоставленный код является примерами. Убедитесь, что вы поменяли:
- database на имя базы данных, которую вы используете.
- имя пользователя вашей базы данных.
- пароль на надежный пароль, уникальный для этого пользователя.Прочтите нашу статью: Правила использования надежных паролей.
Начните с входа на свой сервер через SSH и входа в MySQL, введя следующее:
mysql -u admin -p`cat / etc / psa / .psa.shadow`
Теперь приглашение должно выглядеть так:
MySQL>
Введите следующее, если пользователь базы данных уже существует .:
ПРЕДОСТАВИТЬ ВЫБОР НА базе данных. * TO user @ 'localhost';
Если вы собираетесь создать нового пользователя, запустите это:
GRANT SELECT ON базы данных.* ДЛЯ пользователя @ 'localhost', ОПРЕДЕЛЕННОГО 'паролем';
Чтобы включить больше параметров, вы должны разделить их запятыми. Итак, чтобы включить SELECT, INSERT и DELETE, ваш синтаксис будет выглядеть так:
ПРЕДОСТАВИТЬ ВЫБОР, ВСТАВИТЬ, УДАЛИТЬ В базе данных К имени пользователя @ 'localhost', ОПРЕДЕЛЕННОМ 'паролем';
После того, как вы предоставили желаемые привилегии для своего пользователя, вам нужно будет запустить эту команду в командной строке MySQL:
ПРИВИЛЕГИИ ПРОМЫВКИ;
Чтобы просмотреть список привилегий, предоставленных конкретному пользователю:
выберите * из mysql.пользователь, где Пользователь = 'имя пользователя';
Это список привилегий, которые вы можете предоставить:
Привилегия | Значение |
ВСЕ [ПРИВИЛЕГИИ] | Устанавливает все простые привилегии, кроме GRANT OPTION |
АЛЬТЕР | Позволяет использовать ALTER TABLE |
СОЗДАТЬ | Позволяет использовать CREATE TABLE |
СОЗДАТЬ ВРЕМЕННЫЕ ТАБЛИЦЫ | Позволяет использовать СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ |
УДАЛИТЬ | Позволяет использовать DELETE |
КАПЛЯ | Позволяет использовать КАПЕЛЬНУЮ ТАБЛИЦУ |
ВЫПОЛНИТЬ | Не реализовано |
ФАЙЛ | Позволяет использовать ВЫБОР... В OUTFILE и ЗАГРУЗИТЬ ДАННЫЕ В ИНФАЙЛ |
ИНДЕКС | Позволяет использовать CREATE INDEX и DROP INDEX |
ВСТАВИТЬ | Позволяет использовать INSERT |
ТАБЛИЦЫ ЗАМКА | Разрешает использование LOCK TABLES для таблиц, для которых у вас есть привилегия SELECT. |
ПРОЦЕСС | Позволяет пользователю видеть все процессы с SHOW PROCESSLIST |
ССЫЛКИ | Не реализовано |
ПЕРЕЗАГРУЗИТЬ | Позволяет использовать FLUSH |
КЛИЕНТ РЕПЛИКАЦИИ | Позволяет пользователю спрашивать, где находятся подчиненные или главные серверы |
РЕПЛИКАЦИЯ SLAVE | Требуется для ведомых устройств репликации (для чтения событий двоичного журнала от ведущего устройства) |
ВЫБРАТЬ | Позволяет использовать SELECT |
ПОКАЗАТЬ БАЗЫ ДАННЫХ | ПОКАЗАТЬ БАЗЫ ДАННЫХ показывает все базы данных |
ВЫКЛЮЧЕНИЕ | Позволяет использовать завершение работы MySQLadmin |
СУПЕР | Позволяет использовать операторы CHANGE MASTER, KILL, PURGE MASTER LOGS и SET GLOBAL, команду отладки MySQLadmin; позволяет подключиться (один раз), даже если max_connections достигнуто |
ОБНОВЛЕНИЕ | Позволяет использовать ОБНОВЛЕНИЕ |
ИСПОЛЬЗОВАНИЕ | Синоним привилегии |
ОПЦИЯ ПРЕДОСТАВЛЕНИЯ | Позволяет предоставлять привилегии |
Ресурсы
.