仕事に取り掛かろうとしていますrails dbconsole
(Rails 3.2.6)。問題は、コマンドを実行すると次のメッセージが表示されることです:
gems/railties-3.2.6/lib/rails/commands/dbconsole.rb:81:in `exec': Permission denied -
/usr/local/bin/mysql (Errno::EACCES)
私は OS X Lion を使用していますが、コマンドラインで実行する通常の方法はmysql
機能しますが、 では機能しませんrails dbconsole
。 の権限は次/usr/local/bin/mysql
のとおりです。
$ ls -la /usr/local/bin/mysql
lrwxr-xr-x 1 root admin 16 Mar 13 20:27 /usr/local/bin/mysql -> /usr/local/mysql
これらのコマンドを呼び出すユーザーは「管理者」グループに属しています([設定] -> [ユーザー] ダイアログで確認できます)。
mysql
これを修正する方法について何かアイデアはありますか?コマンドラインでは実行できるのに、別のプログラム (この場合は ruby/rails) では実行できない原因は何でしょうか。
また、この権限の問題についてですが、権限システムを理解し、将来このような問題を解決するのに役立つ適切な記事/本/方法を教えてもらえますか?
答え1
推測:mysql
は では/usr/local/bin/mysql
なく、mysql
内の他の場所にある実行可能ファイルを実行します$PATH
。 が実行可能ファイルであるというのは珍しいことです/usr/local/mysql
。存在するとしても、ディレクトリであるはずです。 を実行します。
type mysql
実際に何が実行されるかを確認しmysql
、必要に応じて、/usr/local/bin/mysql
シンボリック リンクが正しい場所を指すように修正します。
-L
にオプションを追加することで、シンボリック リンクの背後に実際に何があるのかを確認できますls
(-d
ディレクトリであることが判明した場合は も追加します)。
ls -lLd /usr/local/bin/mysql