Dica básica, mas tem gente que se embanana com isso.
Cenário: Criar uma base de dados chamada mydb, criar um usuário chamado myuser com permissão de acesso total a esta base de dados e acesso somente a localhost.
Primeiramente conectamos ao mysql como root e criamos a base de dados mydb
mysql -u root -pMinhaSenhA
create database mydb;
Agora uma dica legal, da pra criar usuários mysql apenas adicionando permissões. basicamente quando tu manda um grant e o usuário não existe, o mysql cria ele automaticamente… sabendo usar isso é muito bom 😉
Agora criamos então o usuário e adicionamos permissão as interfaces loopback 127.0.0.1, localhost e ::1 (loopback ipv6)
mysql u root -pMinhaSenhA
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' IDENTIFIED BY 'MinhaSenhA';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'127.0.0.1' IDENTIFIED BY 'MinhaSenhA';
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'::1' IDENTIFIED BY 'MinhaSenhA';
Agora testamos o acesso, deve ser exibido somente a base mydb e information_schema (no meu caso aparece também uma base do capeta chamada test que o ubuntu criou automaticamente, mas nada qe um “drop database test;” não resolva)
mysql -u myuser -pMinhaSenhA
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 70
Server version: 5.5.20-0~ppa1~oneiric (Ubuntu)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mydb |
| test |
+--------------------+
3 rows in set (0.00 sec)
Agora sim, tudo criado e funcionando! 😉