web-dev-qa-db-ja.com

Xampp:ターミナルからmysqlに接続できません

export PATH=$PATH:/opt/lampp/bin/~/.zshrcファイルに追加しました。 phpにアクセスできますが、Sudo mysql -urootと入力するたびに、次のメッセージが表示されます。

エラー2002(HY000):ソケット「/var/run/mysqld/mysqld.sock」を介してローカルMySQLサーバーに接続できません(2)

ただし、Sudo /opt/lampp/bin/mysql -urootのようなフルパスを定義することでmysqlにアクセスできます。しかし、私はそれを望んでいません...絶対パスを毎回入力するか、エイリアスまたはシンボリックリンクを作成する必要があるということです。

私はUbuntu 16.04でzshellを使用しています。

1
Eisenheim

2つのバージョンのmysqlがインストールされています-1つはUbuntuリポジトリから、もう1つはサードパーティの場所から。 /usr/bin/mysqlにあるUbuntuバージョンを使用すると、実行中のサーバーがUbuntuストックmysql-serverではないため、動作しないデフォルトの場所/var/run/mysqld/mysqld.sockでソケットに接続しようとします。

このmysqlバイナリには実際のソケットがあるデフォルトのパスが設定されているため、/opt/lampp/bin/mysql -uroot(ルートとして実行する理由はありません)を実行すると機能します。

次の3つの選択肢があります。

  1. パスに/opt/lampp/bin/ is before/usr/bin/`が含まれるようにパスを変更します。これにより、Ubuntuバージョンの前にmysqlのlamppバージョンが実行されます。
  2. Sudo apt-get remove mysql-clientを使用してUbuntu mysqlクライアントをアンインストールします。これにより、他のパッケージが破損する場合があります。
  3. Lamppをアンインストールし、Ubuntuから必要なパッケージをインストールします。

#3が私の推奨ソリューションです。リポジトリからすべてのソフトウェアを取得すると、最新の状態に保たれ、(ほぼ)互換性があり、次のUbuntuリリースへの明確で明確なアップグレードパスが確保されます。

Apache、PHP、Mysql/MariaDB、および多くのApacheモジュールがUbuntuリポジトリで利用可能です。

1
vidarlo