Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

A permissão de atualização do MYSQL também precisa selecionar a permissão?


É possível, mas seu problema é que sua consulta UPDATE contém uma cláusula WHERE que precisa consultar os campos pelo menos internamente. Portanto, pretende-se que você precise da permissão SELECT aqui.

Caso contrário, pode-se tentar usar técnicas de força bruta para obter o conteúdo real da tabela usando uma UPDATE-Query e verificando se ela afetou as linhas.

Exemplo:UPDATE clientes SET some_irrellevant_field=1 WHERE user ='jimmy' AND sexual_orientation ='2'Assim que você tiver uma contagem de linhas afetadas> 0, você terá a informação. Então, possivelmente seria muito perigoso permitir isso.

Mas você pode conceder permissões explicitamente para colunas únicas. Digamos que você queira atualizar o hash de senha de um usuário com um determinado id, você dá permissão select na coluna id para o usuário do banco de dados e permissão de atualização para a coluna hash.

Caixa de diálogo de permissão específica da tabela PHPMyAdmin (desculpe, algumas partes das capturas de tela estão em alemão):

Então isso deve funcionar bem:UPDATE users SET hash='0123456789abcdef' WHERE id =1234

Como alternativa, se a permissão de nível de coluna não estiver disponível em seu DBMS ou mecanismo de armazenamento, você ainda poderá usar uma tabela ou banco de dados separado e juntá-lo quando for necessário.