8.3 Учетные записи пользователей для InnoDB Cluster
Серверные узлы в кластере InnoDB Cluster используют три типа учетных записей пользователей. Одна учетная запись конфигурации сервера InnoDB Cluster используется для настройки экземпляров сервера для кластера. Можно создать одну или несколько учетных записей администратора InnoDB Cluster для управления экземплярами серверов после настройки кластера. Можно создать одну или несколько учетных записей MySQL Router для подключения экземпляров MySQL Router к кластеру. Каждая из учетных записей пользователей должна существовать на всех серверных узлах в кластере InnoDB Cluster с одинаковым именем пользователя и паролем.
- Учетная запись конфигурации сервера InnoDB Cluster
-
Эта учетная запись используется для создания и настройки серверных узлов кластера InnoDB Cluster. Каждый серверный узел имеет только одну учетную запись конфигурации сервера. Одинаковое имя пользователя и пароль должны использоваться на каждом серверном узле в кластере. Вы можете использовать учетную запись
rootна серверах для этой цели, но если вы это сделаете, учетная записьrootна каждом серверном узле в кластере должна иметь тот же пароль. Это не рекомендуется по соображениям безопасности.Предпочтительный подход заключается в создании учетной записи конфигурации сервера InnoDB Cluster с помощью команды
dba.configureInstance()с опциейclusterAdmin. Для повышения безопасности укажите пароль в интерактивном режиме, в противном случае укажите его с помощью опцииclusterAdminPassword. Создайте ту же учетную запись с тем же именем пользователя и паролем аналогичным образом на каждом экземпляре сервера, который будет частью кластера InnoDB Cluster — как экземпляр, к которому вы подключаетесь для создания кластера, так и экземпляры, которые присоединятся к кластеру после этого.Команда
dba.configureInstance()предоставляет учетной записи необходимые разрешения автоматически. Вы можете настроить учетную запись вручную, если хотите, предоставив ей разрешения, перечисленные в Настройка учетных записей администратора InnoDB Cluster вручную. Учетная запись должна иметь полные права чтения и записи в таблицы метаданных InnoDB Cluster, а также полные привилегии MySQL администратора.Учетная запись конфигурации сервера InnoDB Cluster, созданная с помощью операции
dba.configureInstance(), не реплицируется на другие серверы в кластере InnoDB Cluster. MySQL Shell отключает двоичный протокол логирования для операцииdba.configureInstance(). Это означает, что вам необходимо создать учетную запись на каждом экземпляре сервера индивидуально. - Учетные записи администратора InnoDB Cluster
-
Эти учетные записи могут использоваться для администрирования кластера InnoDB Cluster после завершения процесса конфигурации. Вы можете настроить более одной учетной записи. Каждая учетная запись должна существовать на каждом серверном узле в кластере InnoDB Cluster с одинаковым именем пользователя и паролем.
Для создания учетной записи администратора InnoDB Cluster для развертывания InnoDB ClusterSet вы используете команду
после добавления всех экземпляров в этот кластер. Команда создает учетную запись с заданным вами именем пользователя и паролем со всеми необходимыми разрешениями. Транзакция для создания учетной записи сcluster.setupAdminAccount()записывается в двоичный журнал и отправляется на все другие серверные узлы в кластере для создания учетной записи на них.cluster.setupAdminAccount()ПримечаниеЕсли первичный кластер InnoDB Cluster был настроен с помощью версии MySQL Shell до MySQL Shell 8.0.20, для обновления привилегий учетной записи конфигурации сервера InnoDB Cluster могла быть использована команда
с опциейcluster.setupAdminAccount()update. Это специальное использование команды, которое не записывается в двоичный журнал. - Учетные записи MySQL Router
Эти учетные записи используются MySQL Router для подключения к экземплярам сервера в кластере InnoDB Cluster. Вы можете настроить более одной учетной записи. Каждая учетная запись должна существовать на каждом серверном узле в кластере InnoDB Cluster с одинаковым именем пользователя и паролем. Процесс создания учетной записи MySQL Router такой же, как и для учетной записи администратора InnoDB Cluster, но с использованием команды
. Инструкции по созданию или обновлению учетной записи MySQL Router см. в разделе 7.2, «Настройка пользователя MySQL Router».cluster.setupRouterAccount()
Настройка учетных записей администратора InnoDB Cluster вручную
Если вы хотите настроить пользователя администрирования кластера InnoDB Cluster вручную, этому пользователю требуются привилегии, перечисленные здесь, все с.
Этот список привилегий основан на текущей версии MySQL Shell. Привилегии могут изменяться между выпусками. Поэтому рекомендуемый способ настройки учетных записей администратора — использование операции dba.configureInstance() или .cluster.setupAdminAccount()
Каждая учетная запись, используемая для администрирования развертывания InnoDB Cluster, InnoDB ClusterSet или InnoDB ReplicaSet, должна существовать на всех экземплярах серверных узлов в развертывании с одинаковым именем пользователя и паролем.
-
Глобальные привилегии на *.* для , , , , , , , , , , , , , , и .
Примечаниевключает следующие необходимые привилегии: , , , , , .
Схема специфичные привилегии для
mysql_innodb_cluster_metadata.*,mysql_innodb_cluster_metadata_bkp.*иmysql_innodb_cluster_metadata_previous.*являются , , , , , , , , , , , , , , , , ; а дляmysql.*являются , , .
Если необходимы только операции чтения, например, для создания пользователя для мониторинга, можно использовать учетную запись с более ограниченными привилегиями. Чтобы получить привилегии, необходимые пользователю your_user для мониторинга работы InnoDB Cluster, выполните следующую команду:
dba.configureInstance('root:password@localhost:3306',{'clusterAdmin':'your_user'})
где root — это либо пользователь root, либо пользователь с необходимыми привилегиями для создания пользователей с требуемыми привилегиями, а your_user — пользователь администратора InnoDB Cluster, которого вы хотите создать. Команда возвращает полный список привилегий, необходимых пользователю администратора.
Для получения дополнительной информации см. .
Внутренние учетные записи пользователей, созданные InnoDB Cluster
В рамках использования Group Replication InnoDB Cluster создает внутренние учетные записи восстановления, которые позволяют выполнять подключения между серверами в кластере. Эти пользователи являются внутренними для кластера, а имя пользователя сгенерированных пользователей соответствует схеме именования mysql_innodb_cluster_, где уникально для экземпляра. В версиях, предшествующих 8.0.17, имя пользователя сгенерированных пользователей соответствовало схеме именования server_id@%mysql_innodb_cluster_r[.10_numbers]
Имя хоста, используемое для этих внутренних пользователей, установлено в '%'. Для получения дополнительной информации см. Создание списка разрешенных серверов.
Каждый внутренний пользователь имеет случайным образом сгенерированный пароль. AdminAPI позволяет изменить сгенерированный пароль для внутренних пользователей. См. Сброс паролей учетных записей восстановления. Случайно сгенерированным пользователям предоставляются следующие разрешения:
GRANT REPLICATION SLAVE ON *.* to internal_user;Внутренние учетные записи пользователей создаются на экземпляре-семени, а затем реплицируются на другие экземпляры в кластере. Внутренние пользователи:
Создаются при создании нового кластера путём выполнения команды
dba.createCluster()Создаются при добавлении нового экземпляра в кластер путём выполнения команды
Cluster.addInstance()Создаются с использованием плагина аутентификации, используемого первичным членом
Для получения дополнительной информации о внутренних пользователях, необходимых для Group Replication, см. .
Сброс паролей учетных записей восстановления
Вы можете использовать операцию для сброса паролей внутренних учетных записей восстановления, созданных InnoDB Cluster, например, для соблюдения политики срока действия паролей. Используйте операцию Cluster.resetRecoveryAccountsPassword() для сброса паролей всех внутренних учетных записей восстановления, используемых кластером. Операция устанавливает новый случайный пароль для внутренней учетной записи восстановления на каждом активном экземпляре. Если экземпляр недоступен, операция завершается ошибкой. Вы можете использовать опцию Cluster.resetRecoveryAccountsPassword()force, чтобы пропустить такие экземпляры, но это не рекомендуется, и безопаснее вернуть экземпляр в онлайн-режим перед использованием этой операции. Данная операция применима только к паролям, созданным InnoDB Cluster, и не может быть использована для обновления вручную созданных паролей.
Пользователь, выполняющий эту операцию, должен обладать всеми необходимыми правами администрирования, в частности , чтобы гарантировать возможность изменения паролей учетных записей восстановления независимо от политики проверки пароля. Другими словами, независимо от того, включена ли переменная системы или нет.
© 2025 Oracle
Licensed under the GPLv2 License.