mysql.user Таблица
В MariaDB 10.4 и более поздних версиях, таблица mysql.global_priv заменила таблицу mysql.user, и mysql.user следует считать устаревшей. Теперь это вид на mysql.global_priv, созданный для совместимости со старыми приложениями и скриптами мониторинга. Новые инструменты должны использовать таблицы INFORMATION_SCHEMA. Начиная с MariaDB 10.4.13, специальный пользователь mariadb.sys создаётся как определяющий для этого вида. Ранее root был определяющим, что приводило к проблемам с привилегиями при изменении этого имени пользователя (MDEV-19650).
Таблица mysql.user содержит информацию о пользователях, имеющих разрешение на доступ к серверу MariaDB, и их глобальные привилегии. К таблице можно обращаться через запросы, и хотя её можно напрямую обновлять, лучше использовать GRANT и CREATE USER для добавления пользователей и привилегий.
Обратите внимание, что привилегии MariaDB действуют на нескольких уровнях. Пользователю может не быть предоставлено разрешение create на уровне пользователя, но он всё равно может иметь разрешение create на определённые таблицы или базы данных, например. См. разрешения для более полного представления системы привилегий MariaDB.
Таблица mysql.user содержит следующие поля:
| Поле | Тип | NULL | Ключ | Значение по умолчанию | Описание |
|---|---|---|---|---|---|
Host |
char(60) |
НЕТ | PRI | Хост (вместе с User образует уникальный идентификатор для этой учетной записи). |
|
User |
char(80) |
НЕТ | PRI | Пользователь (вместе с Host образует уникальный идентификатор для этой учетной записи). |
|
Password |
longtext (>= MariaDB 10.4.1), char(41) (<= MariaDB 10.4.0) |
НЕТ | Хэшированный пароль, сгенерированный функцией PASSWORD(). | ||
Select_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы SELECT. | |
Insert_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы INSERT. | |
Update_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы UPDATE. | |
Delete_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы DELETE. | |
Create_priv |
enum('N','Y') |
НЕТ | N | Может создавать базы данных CREATE DATABASE или таблицы CREATE TABLE. | |
Drop_priv |
enum('N','Y') |
НЕТ | N | Может удалять базы данных DROP DATABASE или таблицы DROP TABLE. | |
Reload_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы FLUSH или эквивалентные команды mariadb-admin. | |
Shutdown_priv |
enum('N','Y') |
НЕТ | N | Может завершать работу сервера командой SHUTDOWN или mariadb-admin shutdown. | |
Process_priv |
enum('N','Y') |
НЕТ | N | Может отображать информацию об активных процессах, используя SHOW PROCESSLIST или mariadb-admin processlist. | |
File_priv |
enum('N','Y') |
НЕТ | N | Может читать и записывать файлы на сервере, используя запросы, такие как LOAD DATA INFILE, или функции, такие как LOAD_FILE(). Также необходимо для создания внешних таблиц CONNECT. Сервер MariaDB должен иметь разрешение на доступ к этим файлам. | |
Grant_priv |
enum('N','Y') |
НЕТ | N | Пользователь может предоставлять имеющиеся у него привилегии с помощью grant. | |
References_priv |
enum('N','Y') |
НЕТ | N | Не используется | |
Index_priv |
enum('N','Y') |
НЕТ | N | Может создавать индексы в таблице с помощью инструкции CREATE INDEX. Без привилегии INDEX, пользователь все равно может создавать индексы при создании таблицы с помощью инструкции CREATE TABLE, если у него есть привилегия CREATE, и может создавать индексы с помощью инструкции ALTER TABLE, если у него есть привилегия ALTER. |
|
Alter_priv |
enum('N','Y') |
НЕТ | N | Может выполнять инструкции ALTER TABLE. | |
Show_db_priv |
enum('N','Y') |
НЕТ | N | Может перечислять все базы данных с помощью запроса SHOW DATABASES. Без привилегии SHOW DATABASES, пользователь все равно может выполнить запрос SHOW DATABASES, но он будет перечислять только базы данных, содержащие таблицы, на которые у него есть права. |
|
Super_priv |
enum('N','Y') |
НЕТ | N | Может выполнять суперпользовательские запросы: CHANGE MASTER TO, KILL (пользователи, у которых нет этой привилегии, могут только KILL свои потоки), PURGE LOGS, SET глобальные переменные системы или команду mariadb-admin debug. Также это разрешение позволяет пользователю записывать данные, даже если опция запуска read_only установлена, включить или отключить ведение журнала, включить или отключить репликацию на подчиненных серверах, указать DEFINER для запросов, которые поддерживают эту опцию, подключиться один раз после достижения MAX_CONNECTIONS. Если для опции mysqld init-connect был указан запрос, эта команда не будет выполнена при подключении пользователя с привилегиями SUPER к серверу. |
|
Create_tmp_table_priv |
enum('N','Y') |
НЕТ | N | Может создавать временные таблицы с помощью инструкции CREATE TEMPORARY TABLE. | |
Lock_tables_priv |
enum('N','Y') |
НЕТ | N | Получать явные блокировки с помощью инструкции LOCK TABLES; пользователю также необходима привилегия SELECT на таблице для ее блокировки. |
|
Execute_priv |
enum('N','Y') |
НЕТ | N | Может выполнять хранимые процедуры или функции. | |
Repl_slave_priv |
enum('N','Y') |
НЕТ | N | Учетные записи, используемые подчиненными серверами на основном сервере, нуждаются в этой привилегии. Это необходимо для получения обновлений, внесенных на основном сервере. | |
Repl_client_priv |
enum('N','Y') |
НЕТ | N | Может выполнять запросы SHOW MASTER STATUS и SHOW SLAVE STATUS. | |
Create_view_priv |
enum('N','Y') |
НЕТ | N | Может создать представление с помощью инструкции CREATE_VIEW. | |
Show_view_priv |
enum('N','Y') |
НЕТ | N | Может отобразить инструкцию CREATE VIEW для создания представления с помощью инструкции SHOW CREATE VIEW. | |
Create_routine_priv |
enum('N','Y') |
НЕТ | N | Может создавать хранимые программы с помощью инструкций CREATE PROCEDURE и CREATE FUNCTION. | |
Alter_routine_priv |
enum('N','Y') |
НЕТ | N | Может изменять характеристики хранимой функции с помощью инструкции ALTER FUNCTION. | |
Create_user_priv |
enum('N','Y') |
НЕТ | N | Может создавать пользователя с помощью инструкции CREATE USER или неявно создавать пользователя с помощью инструкции GRANT. | |
Event_priv |
enum('N','Y') |
НЕТ | N | Создавать, удалять и изменять события. | |
Trigger_priv |
enum('N','Y') |
НЕТ | N | Может выполнять триггеры, связанные с таблицами, которые пользователь обновляет, выполнять инструкции CREATE TRIGGER и DROP TRIGGER. | |
Create_tablespace_priv |
enum('N','Y') |
НЕТ | N | ||
Delete_history_priv |
enum('N','Y') |
НЕТ | N | Может удалять строки, созданные с помощью системной версиирования. | |
ssl_type |
enum('', 'ANY', 'X509', 'SPECIFIED') |
НЕТ | Тип TLS - см. TLS параметры. | ||
ssl_cipher |
blob |
НЕТ | NULL | Шифр TLS - см. TLS параметры. | |
x509_issuer |
blob |
НЕТ | NULL | Шифр X509 - см. TLS параметры. | |
x509_subject |
blob |
НЕТ | NULL | Предмет SSL - см. TLS параметры. | |
max_questions |
int(11) unsigned |
НЕТ | 0 | Количество запросов, которые пользователь может выполнить в час. Ноль означает без ограничений. См. пределы ресурсов учетной записи. | |
max_updates |
int(11) unsigned |
НЕТ | 0 | Количество обновлений, которые пользователь может выполнить в час. Ноль означает без ограничений. См. пределы ресурсов учетной записи. | |
max_connections |
int(11) unsigned |
НЕТ | 0 | Количество подключений, которые может начать учетная запись в час. Ноль означает без ограничений. См. пределы ресурсов учетной записи. | |
max_user_connections |
int(11) |
НЕТ | 0 | Количество одновременных подключений, которые может иметь учетная запись. Ноль означает без ограничений. См. пределы ресурсов учетной записи. |
plugin |
char(64) |
NO | Подключаемый модуль аутентификации, используемый при подключении. Если пусто, используется по умолчанию. | ||
authentication_string |
text |
NO | NULL | Строка аутентификации для подключаемого модуля аутентификации. | |
password_expired |
enum('N','Y') |
NO | N | Параметр совместимости с MySQL, не реализован в MariaDB. | |
is_role |
enum('N','Y') |
NO | N | Является ли пользователь ролью. | |
default_role |
char(80) |
NO | N | Роль, которая будет автоматически включена при входе пользователя. | |
max_statement_time |
decimal(12,6) |
NO | 0.000000 | Если не равно нулю, то время, в течение которого запросы могут выполняться до их автоматического прерывания. | |
| Поле | Тип | Null | Ключ | Значение по умолчанию | Описание |
|---|
Переменная состояния Acl_roles указывает количество строк в таблице mysql.user, где is_role='Y'.
Переменная состояния Acl_users указывает количество строк в таблице mysql.user, где is_role='N'.
Подключаемый модуль аутентификации
Когда столбец plugin пустой, MariaDB по умолчанию использует для аутентификации учетных записей либо подключаемый модуль mysql_native_password, либо mysql_old_password. Выбор определяется хэшем, используемым в значении столбца Password. Если пароль не установлен или используется хэш пароля версии 4.1 (который имеет длину 41 символ), MariaDB использует подключаемый модуль mysql_native_password. Подключаемый модуль mysql_old_password используется с хэшами паролей до версии 4.1 (которые имеют длину 16 символов).
MariaDB также поддерживает использование альтернативных подключаемых модулей аутентификации. Когда столбец plugin для данной учетной записи не пустой, MariaDB использует его для аутентификации попыток подключения. Затем конкретный подключаемый модуль использует значение столбца Password или столбца authentication_string для аутентификации пользователя.
Конкретный подключаемый модуль аутентификации можно использовать для учетной записи, указав IDENTIFIED VIA authentication_plugin в операторах CREATE USER, ALTER USER или GRANT.
Например, следующая команда создаст учетную запись, которая использует подключаемый модуль аутентификации PAM:
CREATE USER foo2@test IDENTIFIED VIA pam;
Если конкретный подключаемый модуль аутентификации использует столбец authentication_string, то это значение для учетной записи можно указать после ключевого слова USING или AS. Например, подключаемый модуль аутентификации PAM принимает имя службы service name, которое будет помещено в столбец authentication_string для учетной записи:
CREATE USER foo2@test IDENTIFIED VIA pam USING 'mariadb';
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mysql-user-table/