Ich versuche, rails dbconsole
zur 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/mysql
sind:
$ 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 mysql
es ü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: mysql
wird nicht ausgeführt /usr/local/bin/mysql
, sondern eine mysql
ausführbare Datei an einem anderen Ort in $PATH
. Es ist ungewöhnlich, dass es sich /usr/local/mysql
um 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 mysql
wirklich läuft, und ggf. den /usr/local/bin/mysql
symbolischen 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 -L
Option zu ls
(und -d
, falls es sich um ein Verzeichnis handelt) hinzufügen:
ls -lLd /usr/local/bin/mysql