2010-06-10 6 views
2

Почему не может работать следующая заявка?Проблема с грантом MySQL

grant all on kylie.* to 'kylie'@'localhost' identified by 'foo'; 

Вот полный вывод.

$ mysql -A 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 63 
Server version: 5.1.37 Source distribution 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> show databases like 'kylie%'; 
+-------------------+ 
| Database (kylie%) | 
+-------------------+ 
| kylie    | 
+-------------------+ 
1 row in set (0.00 sec) 

mysql> grant all on kylie.* to 'kylie'@'localhost' identified by 'foo'; 
Query OK, 0 rows affected (0.02 sec) 

mysql> exit 
Bye 

$ mysql -u kylie 
ERROR 1045 (28000): Access denied for user 'kylie'@'localhost' (using password: YES) 

Кажется, что эти варианты грантов получают меня каждый раз. Я думаю, что я их запомнил, и документы, похоже, тоже проверяют, но они часто не работают. Что мне не хватает?

+0

Я предполагаю, что вы оставили линию между двумя последними строками (тот, который запрашивает пароль «foo»)? – Senseful

+0

Нет, это проблема. MySQL не запрашивает пароль и просто дает мне отказ в доступе. –

+0

У вас есть файл ~/.my.cnf, с которого клиент может читать (неверный) пароль? –

ответ

1

Try что-то вроде:

mysql -ukylie -pfoo kylie 

Последние Kylie должен сказать ему, чтобы использовать Kylie в качестве базы данных по умолчанию (то есть один у вас есть разрешение на). Это может не потребоваться, но мне интересно, будет ли это работать или нет для вас.

Обновлено благодаря комментариям.

+0

Это дает мне вывод MySQL, указывающий на использование, так как команда просто неверна. Я также пробовал следующее. "mysql -ukylie -pfoo" Это сработало! Интересно, почему. –

+0

При использовании опции -p, за которой следует пробел, mysql просит ввести пароль. Он принимает имя foo как имя базы данных для подключения. Поскольку нет базы данных с именем foo, она выдает ошибку. Если вы опустите пробел, mysql интерпретирует foo как ваш пароль и kylie как вашу базу данных, что является правильным. Если вы укажете пароль в команде, он появится в ваших файлах истории и т. Д. Более безопасно использовать параметр -p без пароля: mysql -p -u kylie kylie В этом случае вас попросят ваш пароль, который не будет отображаться в файлах истории и т. д. – titanoboa