Eu quero criar um novo usuário no MySQL e dar-lhe acesso completo apenas a um banco de dados, digamos dbTest', que eu crio com um comando como
create database dbTest;`. Quais seriam os comandos do MySQL para fazer isso?
Tente isto para criar o usuário:
CREATE USER 'user'@'hostname';
Tente isto para lhe dar acesso à base de dados dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Se você estiver rodando o código/site acessando o MySQL na mesma máquina, o hostname seria localhost.
Agora, a avaria.
GRANT` - Este é o comando utilizado para criar usuários e conceder direitos a bancos de dados, tabelas, etc.
TODOS OS PRIVILÉGIOS' - Isto diz que o usuário terá todos os privilégios padrão. Isto não inclui o privilégio de utilizar o comando GRANDE, no entanto.
dbtest.` - Estas instruções MySQL para aplicar estes direitos para utilização em toda a base de dados dbtest. Você pode substituir o por nomes de tabelas específicas ou rotinas de armazenamento, se desejar.
TO 'user'@'hostname'
- 'user' é o nome de usuário da conta de usuário que você está criando. Nota: Você deve ter as aspas simples lá. 'hostname' diz ao MySQL de que host o usuário pode se conectar. Se você só o quer da mesma máquina, use `localhost'.
IDENTIFICADO POR 'password'` - Como você teria adivinhado, isto define a senha para aquele usuário.
Faça o login no MySQL:
mysql -u root
Agora crie e conceda
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Alternativamente, se você quiser apenas conceder acesso total e sem restrições a uma base de dados (por exemplo, na sua máquina local para uma instância de teste, você pode conceder acesso ao usuário anônimo, assim:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Isto é bom para dados de lixo em desenvolvimento. Don'não faça isso com nada que você se importe.