SQL/RENAME USER

Материал из Энциклопедия о программировании
Перейти к: навигация, поиск

RENAME USER (переименование пользователя) — оператор SQL, что переименовывает существующие учетные записи в СУБД MySQL.

Оператору RENAME USER указывается «старое» и «новое» имена пользователя. Тут надо быть внимательным. При использовании RENAME USER возникает ошибка для «старых» учетных записей, которые не существуют, или для «новых» учетных записей, которые уже существуют.

При использовании RENAME USER можно поменять только хост, или только имя.

Синтаксис

RENAME USER [current_old_name] TO [new_name];

Привилегии

Для использования RENAME USER у вас должна быть глобальная CREATE USER привилегия или UPDATE привилегия для системной таблиц/схемы «mysql». Когда включена системная переменная read_only, RENAME USER дополнительно требуется CONNECTION_ADMIN привилегия (или устаревшая привилегия SUPER).

Начиная с MySQL 8.0.22, при использовании RENAME USER происходит сбой с ошибкой, если любая учетная запись, которая должна быть переименована, отмечена в качестве DEFINER атрибута для любого сохраненного объекта. То есть оператор не выполняется, если переименование учетной записи приведет к тому, что сохраненный объект станет осиротевшим. Чтобы выполнить операцию в любом случае, у вас должна быть SET_USER_ID привилегия; в этом случае инструкция выполняется с предупреждением, а не с ошибкой. Для получения дополнительной информации, в том числе о том, как определить, какие объекты называют данную учетную запись в качестве DEFINER атрибута, см. «Хранимые сиротские объекты».

Каждое имя учетной записи использует формат, описанный в разделе 6.2.4, «Задание имен учетной записи». Например:

RENAME USER 'jony'@'localhost' TO 'jon'@'127.0.0.1';

Часть учетной записи является именем хоста. По-умолчанию она будет '%', если не была указана.

RENAME USER приводит к тому, что привилегии, которыми владеет старый пользователь, будут теми, которые принадлежат новому пользователю. Однако RENAME USER не удаляет и не делает недействительными базы данных или объекты внутри них, созданные старым пользователем. Это включает в себя хранимые программы или представления, для которых DEFINER атрибут называет старого пользователя. Попытки получить доступ к таким объектам могут привести к ошибке, если они выполняются в определенном контексте безопасности. Информацию о контексте безопасности см. В разделе 24.6 «Контроль доступа к хранимым объектам».

Изменения привилегий вступают в силу, как указано в разделе 6.2.13, «Когда изменения привилегий вступают в силу».