Wie behebt man dieses MySQL-Berechtigungsproblem?

Wie behebt man dieses MySQL-Berechtigungsproblem?

Ich versuche, rails dbconsolezur Arbeit zu kommen (Rails 3.2.6). Das Problem ist, dass ich beim Ausführen des Befehls Folgendes erhalte:

gems/railties-3.2.6/lib/rails/commands/dbconsole.rb:81:in `exec': Permission denied -
/usr/local/bin/mysql (Errno::EACCES)

Ich verwende OS X Lion und die normale Art der Ausführung mysqlüber die Befehlszeile funktioniert – es funktioniert nur nicht über rails dbconsole. Die Berechtigungen dafür /usr/local/bin/mysqlsind:

$ ls -la /usr/local/bin/mysql
lrwxr-xr-x  1 root  admin  16 Mar 13 20:27 /usr/local/bin/mysql -> /usr/local/mysql

Der Benutzer, von dem ich diese Befehle aufrufe, ist in der Gruppe „Admin“ (wie im Dialogfeld „Einstellungen“ -> „Benutzer“ angezeigt).

Irgendwelche Ideen, wie man das beheben kann? Was könnte die Ursache dafür sein, dass mysqles über die Befehlszeile ausgeführt werden kann, aber nicht über ein anderes Programm (in diesem Fall Ruby/Rails).

Und wenn ich schon bei diesem Berechtigungsproblem bin: Könnten Sie mir einen geeigneten Artikel/ein geeignetes Buch/eine geeignete Methode nennen, das/die mir hilft, das Berechtigungssystem zu verstehen und derartige Probleme in Zukunft zu beheben?

Antwort1

Vermutung: mysqlwird nicht ausgeführt /usr/local/bin/mysql, sondern eine mysqlausführbare Datei an einem anderen Ort in $PATH. Es ist ungewöhnlich, dass es sich /usr/local/mysqlum eine ausführbare Datei handelt: Ich würde erwarten, dass es sich um ein Verzeichnis handelt, wenn es überhaupt existiert. Ausführen

type mysql

um zu sehen, was mysqlwirklich läuft, und ggf. den /usr/local/bin/mysqlsymbolischen Link zu korrigieren, damit er auf die richtige Stelle verweist.

Sie können sehen, was sich wirklich hinter dem symbolischen Link verbirgt, indem Sie die -LOption zu ls(und -d, falls es sich um ein Verzeichnis handelt) hinzufügen:

ls -lLd /usr/local/bin/mysql

verwandte Informationen