MySQL RENOMEAR USUÁRIO

Resumo : neste tutorial, você aprenderá como usar a RENAME USERinstrução MySQL para renomear contas de usuários existentes.

Introdução à instrução MySQL RENAME USER

A RENAME USERinstrução permite renomear uma ou mais contas de usuário existentes. Aqui está a sintaxe básica da RENAME USERinstrução:

RENAME USER old_user1 
TO new_user;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Nesta sintaxe:

  • Primeiro, especifique o nome do usuário existente que você deseja renomear.
  • Segundo, especifique o novo nome de usuário após a TOpalavra-chave. O novo nome não deve existir ou você receberá um erro.

Se quiser renomear várias contas de usuário simultaneamente, use a seguinte sintaxe:

RENAME USER 
    old_user1 TO new_user1,
    old_user2 TO new_user2,
    ...;Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O RENAME USERtransfere todos os privilégios dos usuários antigos para os novos usuários. No entanto, ele não descarta nem invalida objetos de banco de dados que dependem de usuários antigos.

Por exemplo, suponha que você tenha um procedimento armazenado cujo DEFINERatributo especifica o usuário antigo. E esse procedimento armazenado é executado no contexto de segurança do definidor. Se você renomear o usuário antigo, receberá um erro ao executar o procedimento armazenado.

Exemplos de RENAME USER do MySQL

Vejamos alguns exemplos de uso da RENAME USERinstrução MySQL.

1) Usando MySQL RENAME USER para renomear um exemplo de usuário

Primeiro, crie um novo usuário chamado john@localhost:

CREATE USER john@localhost 
IDENTIFIED BY 'Super!pass1';
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, use RENAME USERpara renomear o usuário john@localhost:

RENAME USER john@localhost
TO doe@localhost;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, consulte os dados mysql.userpara verificar a renomeação:

SELECT host, user
FROM mysql.user
WHERE user = 'doe' and host = 'localhost';
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

2) Exemplo de uso do MySQL RENAME USER para renomear várias contas de usuário

Primeiro, crie duas contas de usuário jill@localhost ehill@localhost

CREATE USER jill@localhost 
IDENTIFIED BY 'Super!pass1';

CREATE USER hill@localhost 
IDENTIFIED BY 'Super!pass1';
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Segundo, use a RENAME USERinstrução para renomear esses dois usuários:

RENAME USER     
    jill@localhost TO jin@localhost,
    hill@localhost TO hank@localhost;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, consulte os dados mysql.userpara verificar a renomeação:

SELECT host, user
FROM mysql.user
WHERE user IN ('jin','hank');
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL RENAME USER - exemplo de renomear vários usuários

3) Usando MySQL RENAME USER para renomear uma conta de usuário associada a um procedimento armazenado

Primeiro, crie uma nova conta de usuário chamada fx:

CREATE USER fx
IDENTIFIED BY 'Super!pass2';
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Em segundo lugar, conceda todos os privilégios a fx:

GRANT ALL ON *.* 
TO fx;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Terceiro, faça login como fxe crie um procedimento que retorne todas as linhas da paymentstabela no banco de dados de amostra :

DELIMITER $$

CREATE DEFINER=fx PROCEDURE GetPayments()
SQL SECURITY DEFINER
BEGIN
    SELECT * FROM payments;
END$$

DELIMITER ;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

O definidor do procedimento é fxe SQL SECURITYespecifica que o procedimento será executado com os privilégios do definidor.

Quarto, faça login como roote chame o GetPayments()procedimento:

CALL GetPayments();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )
MySQL RENAME USER - Procedimento Armazenado

Quinto, renomeie a conta do usuário fxpara fc:

RENAME USER fx TO fc;
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Sexto, chame o GetPayments()procedimento novamente:

CALL GetPayments();Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

MySQL emitiu a seguinte mensagem:

Error Code: 1449. The user specified as a definer ('fx'@'%') does not exist
Linguagem de código:  SQL (linguagem de consulta estruturada)  ( sql )

Para corrigir esse problema, você precisa alterar manualmente o definidor no procedimento armazenado GetPayments()e salvá-lo.

Resumo

  • Use a RENAME USERinstrução MySQL para renomear uma ou mais contas de usuário existentes.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *