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のパスを記載しているので、それが原因な気がしているのですが、順番を入れ替えても変わらず、変数名を変えてみても変わらないため困っております。
検索してみてもそれっぽい症状に出会わないため、かんたんすぎる原因な気もするのですがご教授いただければ幸いです。
No.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
No.6
- 回答日時:
> 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'
教えていただいた内容とはことなりますが、問題が解決しましたので、ご報告します。
上位の内容を行いましたが、結果which mysqlで参照されるパスは変わりませんでした。
その代わりといってはなんですが、そもそも/usr/local/bin/mysql
自体がシンボリックリンクで別の場所を参照していたので、そのシンボリックリンク自体をmampのものに差し替えてみたところwp-cliは無事稼働しました。
ありがとうございます!
No.5
- 回答日時:
/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
No.4
- 回答日時:
文字がつぶれて見えません。
> mysqldが2つ起動しているようです。
mysqld_safe と mysqld の2つなら問題ありません。
> mysql.sockも存在しているようです。
下記が存在するなら、解決方法は No.3 の回答に書いた参考ページに書いてあります。
/Applications/MAMP/tmp/mysql/mysql.sock
No.3
- 回答日時:
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 …
No.2
- 回答日時:
> とするとパスを変更するという表現が正しいでしょうか?
パスについては、何もする必要はありません。
> 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/
No.1
- 回答日時:
既に、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 を再起動すれば解決すると思います。
理由は、パスが通っているコマンドの一覧がハッシュテーブル(メモリ)に保存されていて、それを更新しないと新しいコマンドを見つけられないからです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- UNIX・Linux デフォルト値のパラメータ展開 1 2022/08/12 17:34
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
- UNIX・Linux bashでシングルクォート内の変数の組み込み方教えてください。 2 2023/02/14 19:30
- MySQL 「掲示板のログイン画面」はPHP~MySQLに「データベース認証のシステム」方式です。 1 2022/09/27 05:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
Movable type【ブログ】の設置...
-
RPMのmysqlとmysql-serverの違い
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLカラム名は日本語と英数字...
-
プライマリーキーの昇順でソー...
-
Puttyでサーバー上のMySQLを操...
-
PHP+MySQLから結果セット取得後...
-
テーブル作成でエラーが出てき...
-
VBAで変数内に保持された二次配...
-
ERROR 1045 (28000) (using pas...
-
mysqlのsecure-file-privオプシ...
-
パスワード入力を省略したい
-
ログイン履歴について
-
"文字列"? > CSVデータをMySQL...
-
updateがうまくできない。
-
「・」中点が入った文字列を条...
-
SQLiteについて
-
MySQLで、INSERT文でエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
RPMのmysqlとmysql-serverの違い
-
MySQL のコマンドが実行出来ま...
-
c言語でMySQLを利用するときの...
-
Mac で mysql コマンドが一部効...
-
MySQLでAutoCommitをfalseにする
-
xamppのMySQLが開かない
-
増設したHDDにmysqlのデータベ...
-
アプリケーションからMySQLへの...
-
select文、asで定義した桁をwhe...
-
ダンプデータのファイル名にア...
-
ストアドファンクションを動作...
-
MySQLサーバーに接続でき...
-
フリーのDBMSについて
-
MySQL ターミナル ログイン
-
mysqlアンインストールについて...
-
mysqlのdatadirの変更について
-
mysqlclusterは無料?ですか
-
borland c++ によるMySQL への...
-
インストール・初期化後、初起...
おすすめ情報
回答ありがとうございます!
なるほど、パスは通っていたんですね。
とするとパスを変更するという表現が正しいでしょうか?
wp commandを実行した場合は
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (38)
となります。
>>コマンドラインで「hash -r」を実行するか、Terminal を再起動すれば解決すると思います。
上記両方試してみたのですが、whichで表示されるpathは変わらずでした。
ありがとうございます。mamp上でmysqlは立ち上がっており、mamp上での再起動、mamp自体の再起動、mac自体のログアウト、再起動、それらのアクションごとにterminalを立ち上げ直しましたが、変わらないのです。
ありがとうございます!やってみました。
2つmysqldがある状態なんですかね?
{ユーザー名}のところは本来僕のログイン中のユーザー名が表示されます。
文字数制限をオーバーしてしまうようで、コマンドの入力結果を貼り付けられないのですが
mysqldが2つ起動しているようです。
mysql.sockも存在しているようです。
モザイクをかけてるところはユーザー名です。
mysqld_safe と mysqld の2つです。
ご提示いただいたURLは実はここに最初に投稿する前にすでに見ていて、~/.my.cnfに
同じ内容を記載済みなのです・・・
1と2にはmy.cnfがありませんでしたので、教えていただいたシンボリックを試してみました。
すでに作成していたmysql.sockがありましたので、こちらを削除した後、上記のコマンドを実行、MAMPの再起動及びterminalの再起動を行いましたが、表示されるパスに変化は見られません。hash -rと試してみましたが、同様です。
さらに1にmy.cnfを複製して配置後ログアウトをして再度試してみましたがパスに変化がないという状況です。
ありがとうございます。作成されております。確認の上上記コマンドを実行しています。
/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
といった結果が返ってきました