mostrar logins para o servidor (observe que
%
significa anyhost ou curinga) select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| ajax_guy | % |
| joe7 | % |
| joe8 | % |
+-----------+------------+
mostrar quais concessões existem para um determinado usuário.
show grants for 'ajax_guy'@'%';
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Como conceder acesso a um determinado db para um determinado login. Abaixo estamos concedendo todos os direitos ao usuário para o
so_gibberish
banco de dados . grant ALL on so_gibberish.* to 'ajax_guy'@'%';
Veja as concessões em vigor agora para esse login
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `so_gibberish`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Crie um novo login
drew_saturday
com uma senha friday987
.Ele tem todos os privilégios no banco de dados so_gibberish
e pode fazer login de qualquer host (%
) grant ALL on so_gibberish.* to 'drew_saturday'@'%' IDENTIFIED BY 'friday987';
select user,host,password from mysql.user where user='drew_saturday';
+---------------+------+-------------------------------------------+
| user | host | password |
+---------------+------+-------------------------------------------+
| drew_saturday | % | *4600ED0F377308959665877BD327D4788DC2071F |
+---------------+------+-------------------------------------------+
Essa senha acima é a senha com hash, a propósito.
Nota:para MySQL 5.7 o comando acima seria:
select user,host,authentication_string from mysql.user where user='drew_saturday';
Página de manual do MySQL em Grant . Não conceda direitos excessivos aos usuários usando
grant ALL on *. ...
. Isso seria para todos banco de dados no sistema. Basta ler o manual e menos é mais. Às vezes, os administradores desejam conceder acesso a apenas um punhado de tabelas em um banco de dados (nem todas as tabelas nele) para um login. O manual é uma leitura obrigatória sobre isso.
E uma última coisa. 'drew_saturday'@'%' é um login diferente de 'drew_saturday'@'NOT-local' (emprestado do seu título). São logins diferentes com direitos diferentes. Esse é o ponto da primeira coisa que escrevi lá em cima.