Como você altera os privilégios globais , é necessário fazer o seguinte para que os efeitos sejam aceitos:
- emite uma instrução
FLUSH PRIVILEGES;
para recarregar as tabelas de permissões - desconecte o cliente atual e reconecte
Eu tenho o mysql 5.0.82sp1 em execução e notei que todos os usuários podem invocar o comando select em todas as tabelas de bancos de dados. Eles não têm privilégios para fazer isso, então não há nada que eu possa revogar. Existe alguma configuração do mysql concedendo este acesso somente leitura por padrão?
isso parece sempre dar resultado
select * from some_database_name.some_table_name
e mostra o que está nele.
funciona mesmo se eu revogar todos os privilégios emitindo o comando
revoke all privileges, grant option from 'username'@'localhost';
e eu verifico emitindo o comando
show grants;
mostra
GRANT USAGE ON *.* TO 'username'@'localhost' IDENTIFIED BY PASSWORD '...'
o que significa que não tem privilégios para selecionar
Como você altera os privilégios globais , é necessário fazer o seguinte para que os efeitos sejam aceitos:
FLUSH PRIVILEGES;
para recarregar as tabelas de permissões Há algo de perturbador nesse comportamento.
Eu só consigo pensar em duas circunstâncias quando os SELECTs podem ser executados sem restrições assim:
SITUAÇÃO # 1: ignorar tabelas de concessão em /etc/my.cnf
Por favor, verifique se /etc/my.cnf não tem isto:
[mysqld]
skip-grant-tables
Se isso acontecer, remova a linha skip-grant-tables
e reinicie o mysql imediatamente.
SITUAÇÃO # 2: ignorar tabelas de concessão da linha de comando
É possível iniciar o mysql com a opção skip-grant-tables
sem tocar em my.cnf. No Linux OS, por favor, execute isto:
$ service mysql start --skip-grant-tables
Na linha de comando do Linux, para descobrir se skip-grant-tables
está ativado, por favor execute:
$ mysqld --help --verbose | grep -C 3 "skip-grants"
Você verá linhas semelhantes a esta:
secure-file-priv (No default value)
server-id 106451130
show-slave-auth-info FALSE
skip-grant-tables FALSE
skip-name-resolve TRUE
skip-networking FALSE
skip-show-database FALSE
Se skip-grant-tables
for TRUE, apenas reinicie o mysql como normal. Então deve desaparecer.
Experimente!
CAVEAT: Se este é um problema do MySQL / Windows, por favor inspecione my.ini
Além disso, não há variável global para alterar esse recurso. Esta opção aplica-se apenas ao arranque do mysql.
ATUALIZAÇÃO 2011-09-09 12:56 EDT
Tente usar este comando SQL quando fizer login:
SELECT USER(),CURRENT_USER();
Essas funções informam a maneira como você autentica
USER () relata como você tentou autenticar no MySQL
CURRENT_USER () informa como você pode autenticar no MySQL
Atualize sua pergunta com essas descobertas !!!
A partir do comando grant ( USAGE ON *. * ), parece que você concedeu acesso a todos os bancos de dados. Atualize o privilégio, restringindo o acesso apenas ao banco de dados específico para o usuário correspondente. isto é, USAGE ON databasename. * em vez de *. *
Tags mysql