Ao configurar um usuário de banco de dados para uma instalação do Phabricator , você deve estar ciente de que o Phabricator muda bastante sua estrutura de banco de dados. A storage
ferramenta de gerenciamento Phabricator (que você precisa executar na atualização do Phabricator) gerencia a criação e exclusão dos bancos de dados necessários, mas não controla a atualização das permissões para o usuário do banco de dados. Infelizmente, o REVOKE
comando no MySQL não removerá as permissões de um banco de dados inexistente. Phabricator usa um único namespace para armazenar todos os seus bancos de dados, entretanto, a melhor maneira de lidar com o acesso aos seus bancos de dados é com permissões de curinga.
Neste post, estou usando phabric
como meu usuário de banco de dados MySQL e o phabricator_
namespace para todos os meus bancos de dados Phabricator. Também estou supondo que você tenha uma conta de usuário com permissões de acesso ao mysql
banco de dados. O usuário do banco de dados MySQL que você está usando para o Phabricator deve ter apenas acesso básico aos bancos de dados com namespace do Phabricator. A administração (como o uso da storage
ferramenta) deve ser feita com outro usuário MySQL que tenha permissões de nível superior.
Corrigindo permissões anteriores
Se você já concedeu permissões a um usuário MySQL para Phabricator, você deve removê-los. Como mencionado acima, o REVOKE
comando não funciona bem com bancos de dados inexistentes, então você terá que executar um comando para editar manualmente o mysql
banco de dados e removê-los. O comando a seguir remove TODAS as permissões do usuário MySQL.
DELETE FROM mysql.db WHERE USER='phabric';
Ótimo, agora estamos prontos para configurar permissões de curinga para esse usuário.
Configurando novas permissões
A nova estrutura de permissões é simples. Em vez de criar uma nova permissão GRANT
para cada banco de dados, vamos apenas para GRANT
o acesso básico do usuário ao namespace. O MySQL possui dois caracteres curinga: _
e %
. Se você precisa que eles sejam interpretados literalmente, apenas escape deles com . O comando a seguir concederá as permissões necessárias ao usuário MySQL para acessar e atualizar todos os bancos de dados no
phabricator_
namespace.
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE, SHOW VIEW ON `phabricator_%`.* TO 'phabric'@'localhost';
Ótimo, agora, sempre que surge uma nova atualização do Phabricator que altera a estrutura do banco de dados, não deve haver muito a ser feito em termos de concessão e exclusão de permissões.