O usuário padrão do mysql é uma string vazia. Como eu mudo para ser "eu" (ou seja, whoami)

0

Atualizei recentemente meu sistema operacional do Mavericks para o Yosemite e, agora, quando faço mysql foo , obtenho:

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'

Isso é usado para executar o mysql com meu nome de usuário, conforme whoami , como o usuário mysql. Como eu faço isso de novo? (sem passar um argumento -u )

UPDATE Parece que está reduzindo meu nome de usuário para uma string vazia, mesmo que eu forneça explicitamente.

nickshanks$ mysql -u nickshanks foo
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'
nickshanks$ mysql -u "'nickshanks'@'localhost'" foo
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'

Tudo funciona bem se eu fizer login no prompt do MySQL como root .

    
por Nicholas Shanks 02.01.2015 / 11:20

2 respostas

1

Em seu diretório pessoal, crie um arquivo .my.cnf . Este é o formato "ini" com suporte de seção. Defina os padrões para os programas clientes na seção do cliente. Opções para programas específicos podem ser dadas em uma seção chamada idêntica ao nome do programa.

As opções são nomeadas após a longa opção do programa (sem os dois primeiros traços, pois são parte de getopt (3) e não fazem parte do nome).

Então, uma boa base é essa (note que ela codifica o nome de usuário):

cat <<EOF >~.my.cnf
[client]
user = $USER
database = $USER

EOF

Alternativamente, se a sua verdadeira intenção é que seja idêntico ao usuário que está invocando o programa, eu suspeito que o MySQL olhe para uma determinada variável de ambiente se nenhum usuário é dado. Não consigo encontrar isso na documentação, mas provavelmente está olhando para $ USER, o que significaria que o snippet acima criaria valores vazios e explicaria a mudança de comportamento após a atualização.

Verifique com env se o seu nome de usuário estiver presente em uma variável. Caso contrário, configure $ USER e $ USERNAME como uma alternativa no seu arquivo shell rc (.bashrc, .zshrc, .profile ou o que for aplicável). Não se esqueça de relogar após a alteração ou configurá-los em tempo de execução via exportação ou setenv.

    
por 02.01.2015 / 13:07
0

Eu descobri isso. Meus privilégios normais de usuário eram para o host '127.0.0.1' (definido porque o host local costumava não ser resolvido corretamente em algumas instâncias). Eu logado como root e mudei todos para localhost e todas as minhas bases de dados apareceram novamente quando logado sem privilégios. Mas parabéns ao Melvin por ter uma tentativa de descobrir isso remotamente.

    
por 02.01.2015 / 18:19

Tags