У меня есть пользователь, которому я хочу предоставить все разрешения прочитать на схему БД.
Один из способов-это :
GRANT SELECT, SHOW_VIEW ON test.* TO 'readuser'@'%';
Есть ли способ, чтобы сгруппировать все операции чтения в гранте ?
если есть одна привилегия, которая стоит для всех операций чтения на базе.
Это зависит от того, как вы определяете "все читать.&и"
на "чтение" от таблиц и представлений-это "выбрать" привилегия. Если это'ы, что вы подразумеваете под "все, что читал" тогда да:
GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';
Однако, похоже, что вы имеете в виду возможность, чтобы "посмотреть" все, чтобы "смотреть, но не трогать" Так, вот несколько других видов чтения, которые приходят на ум:
на "чтение" по определению мнениями-это привилегия показать
.
на "чтение" в список в настоящее время-выполнение запросов других пользователей-это процесс привилегия.
на "чтение" и текущее состояние репликации-это привилегия клиентов репликация.
Обратите внимание, что любые или все из этих может раскрыть больше информации, чем вы намерены выставить, в зависимости от характера пользователя.
Если это's для чтения, что вы хотите сделать, вы можете комбинировать любые из этих (или любой другой из существующих привилегий) в заявление одного грант
.
GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...
Однако, нет ни одной привилегии, что дает некоторым подмножеством других привилегий, что это звучит, как вы просите.
Если вы все делаете вручную и ищу более простой способ пойти об этом без необходимости запоминать точные предоставляет, как правило, делают для определенного класса пользователей, вы можете посмотреть инструкции к регенерации сопоставимое пользователей'ы субсидий, и изменить его вокруг, чтобы создать нового пользователя с аналогичными правами:
mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for not_leet@localhost |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Изменение 'not_leet' и 'локальный' в соответствии с новым пользователя, которого вы хотите добавить, вместе с паролем, приведет в заявление многоразовый грант
для создания нового пользователя.
Если вы хотите одну операцию, чтобы установить и предоставлять ограниченный набор привилегий пользователей, и, возможно, удалить какие-либо незаслуженные привилегии, которая может быть сделано путем создания хранимой процедуры, которая инкапсулирует все, что вы хотите сделать. В теле процедуры, вы'd построить высказывание грант
с динамическим SQL и/или напрямую манипулировать грант самих таблиц.
В этот недавний вопрос на базе администраторы, на плакате разыскиваемых возможность для непривилегированного пользователя, чтобы изменить другие пользователи, которые конечно не то, что может быть сделано-пользователь, который может изменить другие пользователи это, почти по определению, не непривилегированный пользователь -- однако -- хранимые процедуры, предоставляемые хорошее решение в этом случае, так как они выполняются в контексте безопасности их определитель
пользователей, позволяя никому с честью выполнить процедуру, чтобы временно взять на себя повышенными привилегиями, чтобы позволить им делать конкретные вещи, процедуру выполняет.
GRANT SELECT ON *.* TO 'user'@'localhost' IDENTIFIED BY 'password';
Это создаст пользователя с выбрать
привилегия для всех баз данных, включая представления.
Различные разрешения, которые вы можете предоставить пользователю несколько
ALL PRIVILEGES- This would allow a MySQL user all access to a designated database (or if no database is selected, across the system)
CREATE- allows them to create new tables or databases
DROP- allows them to them to delete tables or databases
DELETE- allows them to delete rows from tables
INSERT- allows them to insert rows into tables
SELECT- allows them to use the Select command to read through databases
UPDATE- allow them to update table rows
GRANT OPTION- allows them to grant or remove other users' privileges
Чтобы предоставить конкретному пользователю с разрешения, вы можете использовать эту схему:
GRANT [type of permission] ON [database name].[table name] TO ‘[username]’@'localhost’;
Я нашел это статья очень полезная
Пошаговое руководство я нашел здесь.
Чтобы создать только для чтения, учетная запись пользователя базы данных для MySQL
В командной строке Unix запустите программу командной строки MySQL, и войдите в систему как администратор, введя следующую команду:
mysql -u root -p
Введите пароль для учетной записи root. В MySQL строки, выполните одно из следующих действий:
Чтобы предоставить пользователю доступ к базе данных с любого хоста, введите следующую команду:
grant select on database_name.* to 'read-only_user_name'@'%' identified by 'password';
Если коллектор будет установлен на том же хосте, базы данных, введите следующую команду:
grant select on database_name.* to 'read-only_user_name' identified by 'password';
Эта команда дает пользователю доступ только для чтения к базе данных только с локального хоста. Если вы знаете имя хоста или IP-адрес хоста, что коллектор будет установлен на, введите следующую команду:
grant select on database_name.* to 'read-only_user_name'@'host_name or IP_address' identified by 'password';
Имя хоста должно разрешаться DNS или локальный файл hosts. В MySQL в командной строке введите следующую команду:
flush privileges;
Тип "выход".
Ниже приведен список примеров команд и сообщений подтверждение:
mysql> grant select on dbname.* to 'readonlyuser'@'%' identified
by 'pogo$23';
Query OK, 0 rows affected (0.11 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Даже если пользователь получил ответ и @Майкл - sqlbot охватывает в основном очки очень хорошо в своем посте, но одного пункта не хватает, так что просто пытаюсь это скрыть.
Если вы хотите предоставить разрешение на чтение простой пользователь (не админ вроде)-
GRANT SELECT, EXECUTE ON DB_NAME.* TO 'user'@'localhost' IDENTIFIED BY 'PASSWORD';
Примечание: выполнять это необходимо здесь, так что пользователь может читать данные, если есть хранимая процедура, которая подготовит отчет (есть несколько операторов Select).
Замените localhost с конкретного IP, с которого пользователь будет подключаться к БД.
Дополнительные разрешения на чтение-
Примечание для MySQL 8 Это'ы различных
Вы должны сделать это в два шага:
CREATE USER 'readonly_user'@'localhost' IDENTIFIED BY 'some_strong_password';
GRANT SELECT, SHOW VIEW ON *.* TO 'readonly_user'@'localhost';
flush privileges;
Если вы хотите посмотреть для чтения только после предоставления разрешения на чтение можно использовать алгоритм = temptable в просмотре определение языка DDL.