プロが教えるわが家の防犯対策術!

macOS Sierraを使っています。
wp-cliを使いたいためterminal経由でコマンド操作をしたいのですが、
mysqlのパスを通すところで躓いております。

検索してみると
~/.bash_profile
にパスをかけということで試してみたのですが、

色々試してみたのですが、
which mysql
すると
/usr/local/bin/mysql
となってしまいます。

本当は、
/Applications/MAMP/Library/bin
としたいです。

現在bash_profileの中身は

PHP_VERSION=$(ls /Applications/MAMP/bin/php/ | sort -n | tail -1)
export PATH=$PATH:/Applications/MAMP/Library/bin
export PATH=/Applications/MAMP/bin/php/${PHP_VERSION}/bin:$PATH
alias wp='php /Applications/MAMP/bin/php/${PHP_VERSION}/bin/wp-cli.phar'

このようになっています。

echo $PATH
した結果は
/Applications/MAMP/bin/php/php7.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/MAMP/Library/bin

です。

余談ですが、phpは
/Applications/MAMP/bin/php/php7.1.1/bin/php
にパスを通したいのですが、それは上手くいっています。

同じ変数PATHにphpとmysqlのパスを記載しているので、それが原因な気がしているのですが、順番を入れ替えても変わらず、変数名を変えてみても変わらないため困っております。

検索してみてもそれっぽい症状に出会わないため、かんたんすぎる原因な気もするのですがご教授いただければ幸いです。

質問者からの補足コメント

  • うーん・・・

    回答ありがとうございます!
    なるほど、パスは通っていたんですね。
    とするとパスを変更するという表現が正しいでしょうか?

    wp commandを実行した場合は
    Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
    となります。

    >>コマンドラインで「hash -r」を実行するか、Terminal を再起動すれば解決すると思います。
    上記両方試してみたのですが、whichで表示されるpathは変わらずでした。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/07/03 11:17
  • ありがとうございます。mamp上でmysqlは立ち上がっており、mamp上での再起動、mamp自体の再起動、mac自体のログアウト、再起動、それらのアクションごとにterminalを立ち上げ直しましたが、変わらないのです。

      補足日時:2017/07/03 15:08
  • ありがとうございます!やってみました。

    2つmysqldがある状態なんですかね?
    {ユーザー名}のところは本来僕のログイン中のユーザー名が表示されます。

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/07/03 20:24
  • 文字数制限をオーバーしてしまうようで、コマンドの入力結果を貼り付けられないのですが
    mysqldが2つ起動しているようです。

    mysql.sockも存在しているようです。
    モザイクをかけてるところはユーザー名です。

    「MAMPでMySQLのパスが通らない」の補足画像4
      補足日時:2017/07/03 20:30
  • うーん・・・

    mysqld_safe と mysqld の2つです。
    ご提示いただいたURLは実はここに最初に投稿する前にすでに見ていて、~/.my.cnfに
    同じ内容を記載済みなのです・・・

    No.4の回答に寄せられた補足コメントです。 補足日時:2017/07/03 23:26
  • 1と2にはmy.cnfがありませんでしたので、教えていただいたシンボリックを試してみました。
    すでに作成していたmysql.sockがありましたので、こちらを削除した後、上記のコマンドを実行、MAMPの再起動及びterminalの再起動を行いましたが、表示されるパスに変化は見られません。hash -rと試してみましたが、同様です。

    さらに1にmy.cnfを複製して配置後ログアウトをして再度試してみましたがパスに変化がないという状況です。

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/07/04 10:55
  • ありがとうございます。作成されております。確認の上上記コマンドを実行しています。

    /etc/my.cnfの中身はのうちsocketのパスは以下のようになっています。

    [client]
    socket = /Applications/MAMP/tmp/mysql/mysql.sock

    [mysqld]
    socket = /Applications/MAMP/tmp/mysql/mysql.sock

    またfindコマンドを実行してみたところ
    /Applications/MAMP/tmp/mysql/mysql.sock
    find: /dev/fd/{ユーザーのルート名}: No such file or directory
    find: /dev/fd/{ユーザーのルート名}: No such file or directory

    といった結果が返ってきました

    No.6の回答に寄せられた補足コメントです。 補足日時:2017/07/04 12:45

A 回答 (7件)

mysql が2つ存在して、(2) の方を使いたかったのであれば、PATH の書き方(優先順序)を (B) にすればよかったです。



(1) /usr/local/bin/mysql
(2) /Applications/MAMP/Library/bin/mysql

(A) export PATH=$PATH:/Applications/MAMP/Library/bin
(B) export PATH=/Applications/MAMP/Library/bin:$PATH
    • good
    • 0
この回答へのお礼

ありがとうございます!試してみたらそれでwhichに表示される内容が代わりました!

お礼日時:2017/07/05 15:41

> ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock



上記コマンドは /Applications/MAMP/tmp/mysql/mysql.sock に作成されていることが前提です。
違ったなら、/tmp/mysql.sock は削除しておいてください。

rm -i /tmp/mysql.sock


my.cnf に socket のパスが何と書いてあるのか、実際の mysql.sock はどこに作成されているのか、よく確かめてください。

下記コマンドを実行すれば、時間はかかりますが mysql.sock を探せます。

sudo find / -type s -name mysql.sock -print

mysql.sock が見つかれば、my.cnf を修正するか、.bash_profile にエイリアスを追加すれば解決します。

alias mysql='mysql -S /見つかった場所/mysql.sock'
この回答への補足あり
    • good
    • 0
この回答へのお礼

教えていただいた内容とはことなりますが、問題が解決しましたので、ご報告します。
上位の内容を行いましたが、結果which mysqlで参照されるパスは変わりませんでした。
その代わりといってはなんですが、そもそも/usr/local/bin/mysql
自体がシンボリックリンクで別の場所を参照していたので、そのシンボリックリンク自体をmampのものに差し替えてみたところwp-cliは無事稼働しました。

ありがとうございます!

お礼日時:2017/07/04 15:12

/tmp/mysql.sock と /Applications/MAMP/tmp/mysql/mysql.sock の違いが原因なのは確実です。



手っ取り早いのは下記コマンドを実行してシンボリックリンクを作成する方法です。

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

my.cnf については、下記順序(上が優先)で参照しているようです。

1. /etc/my.cnf
2. /etc/mysql/my.cnf
3. /Applications/MAMP/conf/my.cnf
4. ~/.my.cnf

参考ページ
http://qiita.com/gtaiyou24/items/6d9eee45f40408c …
http://sachips.byeto.jp/mac/mamp_mysql_my-cnf.html
この回答への補足あり
    • good
    • 0

文字がつぶれて見えません。




> mysqldが2つ起動しているようです。

mysqld_safe と mysqld の2つなら問題ありません。


> mysql.sockも存在しているようです。

下記が存在するなら、解決方法は No.3 の回答に書いた参考ページに書いてあります。

/Applications/MAMP/tmp/mysql/mysql.sock
この回答への補足あり
    • good
    • 0

Terminal で下記コマンドを実行したら、実行中のプロセスが表示されますか?



ps auxw | grep mysqld | grep -v grep


mysqld が表示されないなら、mysqld が起動していません。
その場合、下記コマンドを実行したら起動しませんか?

sudo mysql.server start


mysqld が表示されるなら、/tmp/mysql.sock が違う場所に作成されているのかも知れません。
その場合、下記コマンドを実行したら存在しますか?

ls -l /Applications/MAMP/tmp/mysql/mysql.sock

見つからないなら、下記コマンドを実行して探してください。

sudo find / -name mysql.sock -print


見つかったら、~/my.cnf に下記のように追加すると良いようです。~/ はユーザのホームディレクトリです。

[client]
socket = /Applications/MAMP/tmp/mysql/mysql.sock

参考ページ
http://d.hatena.ne.jp/solitary_shell/20110107/12 …
この回答への補足あり
    • good
    • 0

> とするとパスを変更するという表現が正しいでしょうか?



パスについては、何もする必要はありません。


> wp commandを実行した場合は
> Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
> となります。

上記エラーは MySQL サーバに接続できないと言っています。
おそらく、MySQL サーバが起動していません。

私は MAMP を使用した事がないのでわかりませんが、「サーバを起動」するボタンがあるようです。

https://pc-karuma.net/mamp-settings-mac/
https://pc-karuma.net/mamp-phpmyadmin-db-create/
    • good
    • 0

既に、mysql のパスは通っています。



> which mysql
> すると
> /usr/local/bin/mysql
> となってしまいます。

which はパスからコマンドを探します。ちゃんと、/usr/local/bin/mysql を見つけています。

> echo $PATH
> した結果は
> /Applications/MAMP/bin/php/php7.1.1/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/MAMP/Library/bin

上記に /usr/local/bin が含まれているので、パスは通っています。


wp コマンドを実行したら「mysql: command not found」が表示されるのですか?

コマンドラインで「hash -r」を実行するか、Terminal を再起動すれば解決すると思います。

理由は、パスが通っているコマンドの一覧がハッシュテーブル(メモリ)に保存されていて、それを更新しないと新しいコマンドを見つけられないからです。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!