Я недавно обновил свою ОС с Mavericks до Yosemite, и теперь, когда я делаю mysql foo я получаю:

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

Это использовалось для запуска mysql с моим именем пользователя, согласно whoami , как пользователь mysql. Как мне сделать это снова? (без передачи аргумента -u )

ОБНОВЛЕНИЕ Кажется, это уменьшает мое имя пользователя до пустой строки, даже если я предоставляю это явно.

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'

Все работает нормально, если я вхожу в MySQL приглашение от имени root .

2 ответа2

1

В вашем домашнем каталоге создайте файл .my.cnf . Это формат ini с поддержкой разделов. Установите любые значения по умолчанию для клиентских программ в разделе клиента. Опции для конкретных программ могут быть указаны в разделе, идентичном имени программы.

Опции названы в честь длинной опции программы (без первых двух тире, так как они являются частью getopt (3), а не частью имени).

Итак, хорошая база это (обратите внимание, что он жестко кодирует имя пользователя):

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

EOF

В качестве альтернативы, если ваше истинное намерение состоит в том, чтобы он был идентичен пользователю, который вызывает программу, я подозреваю, что MySQL просматривает определенную переменную среды, если пользователь не указан. Я не могу найти это в документации, но, вероятно, он смотрит на $ USER, что означает, что приведенный выше фрагмент создаст пустые значения и объяснит изменение поведения после обновления.

Проверьте с помощью env ли ваше имя пользователя в переменной. Если нет, настройте $ USER и $ USERNAME в качестве альтернативы в своем rc-файле оболочки (.bashrc, .zshrc, .profile или что-либо еще). Не забудьте переписать после изменения или настроить время выполнения с помощью экспорта или setenv.

0

Я понял это. Мои обычные пользовательские привилегии были для хоста «127.0.0.1» (установлен, потому что localhost в некоторых случаях не разрешался должным образом). Я вошел в систему как root и изменил их все на localhost, и все мои базы данных снова появились при входе в систему без привилегий. Но слава Мелвину за то, что он попытался выяснить это удаленно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .