Spec-Zone.ru › MySQL Shell 9.2

6.4 Создание учётных записей пользователей для AdminAPI

Учётные записи пользователей, используемые для настройки и администрирования экземпляра сервера-члена в развертывании InnoDB Cluster, InnoDB ClusterSet или InnoDB ReplicaSet, должны иметь полные права чтения и записи для таблиц метаданных, помимо полных привилегий MySQL-администратора (SUPER, GRANT OPTION, CREATE, DROP и так далее). Дополнительную информацию см. .

Для этой цели можно использовать учётную запись root на серверах, но в этом случае учётная запись root на каждом сервере-члене в развертывании должна иметь тот же пароль. Использование учётной записи root по соображениям безопасности не рекомендуется.

Вместо этого рекомендуется настроить учётные записи пользователей, используя JavaScript dba.configureInstance() и операции cluster.setupAdminAccount() AdminAPI. Формат имён пользователей, принимаемых этими операциями, соответствует стандартному формату имён учётных записей MySQL, см. .

Если вы предпочитаете настроить учётные записи пользователей, требуемые разрешения перечислены в Ручная настройка учётных записей администратора InnoDB Cluster. Если необходимы только операции чтения, например, для мониторинга, вы можете использовать учётную запись с более ограниченными привилегиями, как подробно описано в этой теме.

Важно

Каждая учётная запись, используемая для настройки или администрирования развертывания InnoDB Cluster, InnoDB ClusterSet или InnoDB ReplicaSet, должна существовать на всех экземплярах серверов-членов в развертывании с одинаковым именем пользователя и паролем.

Учётная запись конфигурации сервера

Учётная запись конфигурации сервера требуется на каждом экземпляре сервера, который должен присоединиться к развертыванию InnoDB Cluster, InnoDB ClusterSet или InnoDB ReplicaSet. Вы настраиваете эту учётную запись, используя команду JavaScript dba.configureInstance() или команду Python dba.configure_instance() с опцией clusterAdmin.

Для большей безопасности укажите пароль в интерактивном режиме, в противном случае укажите его с помощью опции clusterAdminPassword. Создайте одинаковую учётную запись с одинаковым именем пользователя и паролем аналогичным образом на каждом экземпляре сервера, который будет участвовать в развертывании, как на экземпляре, к которому вы подключаетесь для создания развертывания, так и на экземплярах, которые присоединятся после этого.

Вы можете определить срок действия пароля, используя опцию clusterAdminPasswordExpiration. Эту опцию можно установить на определённое количество дней, NEVER для никогда не истекающего пароля или DEFAULT для использования системного значения по умолчанию.

Если вы используете сертификаты SSL для аутентификации, вы можете добавить издателя сертификата и субъект, используя опции clusterAdminCertIssuer и clusterAdminCertSubject соответственно.

Учётная запись конфигурации сервера, созданная вами с помощью операции dba.configureInstance(), не реплицируется на другие серверы в развертывании InnoDB Cluster, InnoDB ClusterSet или InnoDB ReplicaSet. MySQL Shell отключает двоичный протокол логирования для операции dba.configureInstance(). По этой причине вы должны создать учётную запись на каждом экземпляре сервера индивидуально.

Опция clusterAdmin должна использоваться с подключением MySQL Shell, основанным на пользователе, имеющем привилегии для создания пользователей с соответствующими привилегиями. В этом примере JavaScript используется пользователь root:

mysql-js> dba.configureInstance('root@ic-1:3306', {clusterAdmin: "'icadmin'@'ic-1%'"});

Аналогично, в этом примере Python используется пользователь root:

mysql-py> dba.configure_instance('root@ic-1:3306', clusterAdmin="'icadmin'@'ic-1%'");

Учётные записи администраторов

Учётные записи администраторов можно использовать для администрирования развертывания после завершения процесса конфигурации. Вы можете настроить более одной такой учётной записи. Для создания учётной записи администратора выполните команду JavaScript cluster.setupAdminAccount() после добавления всех экземпляров в InnoDB Cluster или InnoDB ReplicaSet. Или выполните команду Python: <Cluster>setup_admin_account().

Команда создаёт учётную запись с указанным вами именем пользователя и паролем со всеми необходимыми разрешениями. Транзакция для создания учётной записи с cluster.setupAdminAccount() записывается в двоичный журнал и отправляется на все остальные экземпляры серверов в кластере для создания учётной записи на них.

Для использования операции setupAdminAccount() вы должны быть подключены как пользователь MySQL с правами на создание пользователей, например, как root. Операция setupAdminAccount(user) также позволяет вам обновить существующую MySQL-учётную запись с необходимыми привилегиями перед операцией JavaScript dba.upgradeMetadata() или операцией Python dba.upgrade_metadata().

Обязательный аргумент user — имя MySQL-учётной записи, которую вы хотите создать для администрирования развертывания. Формат имён пользователей, принимаемых операцией setupAdminAccount(), соответствует стандартному формату имён учётных записей MySQL. Дополнительную информацию см. . Формат аргумента user — username[@host], где host является необязательным и по умолчанию имеет значение подстановочный символ %.

Например, для создания пользователя с именем icadmin для администрирования InnoDB Cluster, назначенного переменной myCluster, используя JavaScript, выполните:

mysql-js> myCluster.setupAdminAccount('icadmin')

Missing the password for new account icadmin@%. Please provide one.
Password for new account: ********
Confirm password: ********

Creating user icadmin@%.
Setting user password.
Account icadmin@% was successfully created.

Или используя Python:

mysql-py> myCluster.setup_admin_account('icadmin')

Missing the password for new account icadmin@%. Please provide one.
Password for new account: ********
Confirm password: ********

Creating user icadmin@%.
Setting user password.
Account icadmin@% was successfully created.

setupAdminAccount() имеет следующие специфичные для SSL опции:

  • requireCertIssuer: Необязательный издатель сертификата SSL для учётной записи.

  • requireCertSubject: Необязательный субъект сертификата SSL для учётной записи.

  • passwordExpiration: numberOfDays | Never | Default: Параметры истечения срока действия пароля для учётной записи.

Примечание

Если установлены либо requireCertIssuer, либо requireCertSubject, или оба, то существующий пароль становится необязательным.

Обновление старых учётных записей

Если у вас есть учётная запись конфигурации сервера или администратора, созданная с версией MySQL Shell ранее 8.0.20, используйте опцию update с операцией setupAdminAccount() для обновления привилегий существующего пользователя. Это актуально во время обновления, чтобы убедиться в совместимости учётных записей пользователей. Например, для обновления пользователя с именем icadmin, используя JavaScript, выполните:

mysql-js> myCluster.setupAdminAccount('icadmin', {'update':1})
Updating user icadmin@%.
Account icadmin@% was successfully updated.

Или используя Python:

mysql-py> myCluster.setup_admin_account('icadmin',update=1})
Updating user icadmin@%.
Account icadmin@% was successfully updated.

Это специальное использование команды cluster.setupAdminAccount(), которое не записывается в двоичный журнал.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-shell-8.4-en/creating-user-accounts-for-admin-api.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API