Usuário do Banco de Dados MySQL: Quais Privilégios são necessários?

48

A breve instrução de instalação do WordPress ( "5 Minutes" ) declara que:

  

Crie um banco de dados para o WordPress em seu servidor da Web, bem como um usuário do MySQL que tenha todos os privilégios para acessá-lo e modificá-lo.

Durante a criação de um novo blog profissionalmente, fiquei me perguntando como isso mapeia o que a configuração de privilégios / permissões do usuário do banco de dados MySQL me oferece:

  • Dados: SELECT , INSERT , UPDATE , DELETE
  • Definição: CREATE , ALTER , DROP
  • Extra: INDEX
  • Mais:
    1. LOCK TABLES
    2. REFERENCES
    3. CREATE TEMPORARY TABLES
    4. CREATE VIEW
    5. SHOW VIEW
    6. CREATE ROUTINE
    7. EXECUTE
    8. ALTER ROUTINE

Tenho certeza de que, nos primeiros três grupos, eu os nomeei Dados, Definição e Extra aqui. Mas e os outros abaixo da entrada Mais ? Normalmente eu diria que não são necessários, mas gostaria de ter uma segunda opinião.

    
por hakre 06.01.2011 / 13:53
fonte

5 respostas

12

Os outros não são necessários como você aponta.

Btw, o que você poderia fazer é definir condicionalmente o usuário / passe com base na página solicitada. Como em unprivileged com select / insert / update / delete para uso normal, e privilegiado com conteúdo relacionado a definição / índice, além disso, ao visitar a página de atualização.

    
por Denis de Bernardy 06.01.2011 / 17:09
fonte
31

"Todos os privilégios" geralmente significam que você deve mostrar tudo para o usuário. No entanto ...

Encontrei pelo menos um artigo que reivindica o MySQL usuário só precisa:

  • SELECIONE
  • INSERIR
  • UPDATE

Indo mais a fundo , descobri que para operar totalmente (atualizações automáticas, instalação / desinstalação de plug-ins, etc.), o WordPress requer algumas permissões adicionais:

  • APAGAR
  • ALTER (para atualizações)
  • CREATE TABLE
  • DROP TABLE

Além disso, não é referenciado, mas faz sentido:

  • ÍNDICE

Mas essas são as únicas duas referências sólidas que posso encontrar que são apoiadas por opiniões postadas em outro lugar. Eu ainda encorajo você a ficar com GRANT ALL, mas se você absolutamente deve limitar seu uso de DB, comece com estes 7 privilégios e teste totalmente para garantir que as coisas funcionem como esperado.

    
por EAMann 06.01.2011 / 16:17
fonte
12

Veja o que o Codex tem a dizer sobre a restrição de privilégios de usuário do banco de dados:

  

Para operações normais do WordPress, como postagens em blogs, upload de arquivos de mídia, postagem de comentários, criação de novos usuários do WordPress e instalação de plugins do WordPress, o usuário do banco de dados MySQL só precisa de leitura de dados e privilégios de gravação de dados no banco de dados MySQL; SELECIONAR, INSERIR, ATUALIZAR e EXCLUIR.

     

Portanto, qualquer outra estrutura de banco de dados e privilégios de administração, como DROP, ALTER e GRANT, podem ser revogados. Ao revogar esses privilégios, você também está aprimorando as políticas de contenção.

     

Nota: Alguns plug-ins, temas e principais atualizações do WordPress podem exigir alterações estruturais do banco de dados, como adicionar novas tabelas ou alterar o esquema. Nesse caso, antes de instalar o plug-in ou atualizar um software, permita temporariamente ao usuário do banco de dados os privilégios necessários.

enlace

    
por redburn 12.01.2014 / 18:09
fonte
2

Em relação à "Nota" no post do redburn, o Wordpress Codex também tem um aviso que você também deve ler sobre atualizações e alterações no esquema do banco de dados ...

(No entanto, percebo que NÃO VER "GRANT" na lista de privilégios ao criar ou atualizar um usuário Talvez "CREATE" deva ser adicionado à lista? Alguém tem informações sobre isso? - usando HostPator cPanel, março 2016 -)

  

AVISO:
  A tentativa de atualização sem esses privilégios [ SELECT, INSERT, UPDATE, DELETE, DROP, ALTER e GRANT ] pode causar   problemas quando ocorrem alterações no esquema do banco de dados. Assim, NÃO é   recomendado para revogar esses privilégios. Se você sente a necessidade de fazer   isso por razões de segurança, por favor, certifique-se de que você tem um sólido   primeiro plano de backup, com backups de banco de dados regulares   você testou são válidos e podem ser facilmente restaurados. Uma falha   atualização de banco de dados geralmente pode ser resolvida restaurando o banco de dados de volta   para uma versão antiga, concedendo as permissões adequadas e, em seguida, permitindo   WordPress tente a atualização do banco de dados novamente. Restaurando o banco de dados   devolvê-lo para a versão antiga e a administração do WordPress   telas, em seguida, detectam a versão antiga e permitem que você execute o   comandos SQL necessários sobre ele. A maioria das atualizações do WordPress não mudam   o esquema, mas alguns fazem. Apenas atualizações de pontos principais (3.7 a 3.8, para   exemplo) irá alterar o esquema. Pequenas atualizações (3.8 a 3.8.1)   geralmente não. No entanto, mantenha um backup regular.

Codex: enlace

    
por Jerry9 30.03.2016 / 08:59
fonte
0

Minha opinião é a mesma que @EAMann acima, assim como as fontes que ele referenciou: GRANT ALL é necessário para garantir que seu site seja funcional e futuro. Mesmo em um local de produção, você deve seguir o manual do usuário.

Como alguém que contribui com código para o WordPress e alguns plug-ins, recomendo que você mantenha os privilégios padrão do banco de dados conforme sugerido no manual do usuário (GRANT ALL PRIVILEGES EM wpdatabasename. * TO "wordpressusername" @ "hostname").

O código-fonte do WordPress (atual e futuro) assume que o usuário do banco de dados do WordPress possui todos os privilégios de banco de dados do banco de dados do WordPress. Se sua configuração perder algum privilégio de banco de dados, você poderá encontrar problemas ao atualizar o WordPress e adicionar mais plug-ins.

Portanto, você realmente não deve usar privilégios de banco de dados diferentes dos privilégios de banco de dados padrão recomendados pelo manual, a menos que saiba o que está fazendo, tenha necessidades muito específicas e não esqueça de ter privilégios de banco de dados personalizados. / p>

A página do Codex já foi atualizada sobre como fazer isso com exemplos em vários sistemas e capturas de tela. enlace

Criando um nome e usuário do banco de dados (via PHPMyAdmin): enlace

Criando um nome e usuário do banco de dados (via cliente de linha de comando do MySQL): enlace

mysql> CREATE DATABASE wpdatabasename;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON wpdatabasename.* TO "wordpressusername"@"hostname"
    -> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> EXIT
    
por Steven Lin 08.10.2018 / 17:42
fonte