Criando e associando usuários à bancos de dados específicos
Dica publicada em Banco de Dados / MySQL
Criando e associando usuários à bancos de dados específicos
Oi amigos,
Outro dia passei pela seguinte situação. Precisava que um DB fosse acessado por apenas um usuário. Esta é uma situação interessante, pois você limita a ação de um usuário à apenas seu banco de dados, sem acesso aos demais bancos.
Imagina só inúmeros BDs sendo acessados só por um usuário. Se só você mexer, menos mal. Mas imagina um computador onde o BD é usado por um monte de pessoas e programas web, um descuido e tudo poderia ser alterado, não gosto nem de pensar.
Para criar o user e associá-lo a um BD, vamos seguir então os passos:
1. Acesse o MySQL:
# mysql -u root -p
2. Crie uma base de dados para o tal user:
mysql > create database sistema;
3. Vamos dar as permissões ao user:
mysql> GRANT SELECT,DELETE,UPDATE,INSERT ON sistema.* TO user_sistema@localhost;
4. Vamos criar uma senha para o usuário:
mysql> UPDATE USER SET PASSWORD=PASSWORD ('Digitar a senha') WHERE USER='user_sistema';
5. Vamos efetivar as alterações:
mysql> FLUSH PRIVILEGES;
6. Saia do MySQL e reinicie o daemon:
mysql> quit;
# service mysql restart
Tente agora acessar com o novo usuário criado.
$ mysql -u user_sistema -p
Ele vai pedir a senha.
Pronto. Você está lá dentro. Digite
mysql> show databases;
Ele deve listar 2 BDs: test e sistema.
Tá pronto!
Vlw gente
hermes
Outro dia passei pela seguinte situação. Precisava que um DB fosse acessado por apenas um usuário. Esta é uma situação interessante, pois você limita a ação de um usuário à apenas seu banco de dados, sem acesso aos demais bancos.
Imagina só inúmeros BDs sendo acessados só por um usuário. Se só você mexer, menos mal. Mas imagina um computador onde o BD é usado por um monte de pessoas e programas web, um descuido e tudo poderia ser alterado, não gosto nem de pensar.
Para criar o user e associá-lo a um BD, vamos seguir então os passos:
1. Acesse o MySQL:
# mysql -u root -p
2. Crie uma base de dados para o tal user:
mysql > create database sistema;
3. Vamos dar as permissões ao user:
mysql> GRANT SELECT,DELETE,UPDATE,INSERT ON sistema.* TO user_sistema@localhost;
4. Vamos criar uma senha para o usuário:
mysql> UPDATE USER SET PASSWORD=PASSWORD ('Digitar a senha') WHERE USER='user_sistema';
5. Vamos efetivar as alterações:
mysql> FLUSH PRIVILEGES;
6. Saia do MySQL e reinicie o daemon:
mysql> quit;
# service mysql restart
Tente agora acessar com o novo usuário criado.
$ mysql -u user_sistema -p
Ele vai pedir a senha.
Pronto. Você está lá dentro. Digite
mysql> show databases;
Ele deve listar 2 BDs: test e sistema.
Tá pronto!
Vlw gente
hermes
Você pode definir a senha diretamente no GRANT, adicionando:
identified by 'senha'
ficaria assim:
GRANT SELECT,DELETE,UPDATE,INSERT ON sistema.* TO USER user_sistema@localhost identified by 'senha'
assim não precisa do update e do flush privileges.
Também em nenhum caso é necessário reiniciar o mysql!
Falow!