web-dev-qa-db-ja.com

MySQLはdatadirを変更し、mysqld.sockの問題

データベースディレクトリdatadirを変更しようとして、次の手順を実行しました。私のマシン:Ubuntu 11.10 64-bitラップトップ

インストール:

Sudo apt-get install mysql-server mysql-client

すべてOK、データベース、テーブル、すべてOKを作成できます。 datadirを変更します。

1) $ /etc/init.d/mysql stop
2) $ cp -R -p /var/lib/mysql /new_path
3) $ rm /new_path                      (this only remove files unnecessary)
4) $ gedit /etc/mysql/my.cnf

「datadir = var/lib/mysql」を新しいパスに変更します。

5) $ gedit /etc/apparmor.d/usr.sbin.mysqld

「/ var/lib/mysql」を「/ new_path/mysql」で新しい行に変更します

6) $ /etc/init.d/apparmor reload
7) $ /etc/init.d/mysql restart
8) $ service mysql status     (is Ok)

エラーは次のとおりです。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)

/ new_path/mysqlのパーミッションを変更しようとしましたが、動作しませんでした。

データベースのみをコピーしようとしました(mysql dirのすべてのファイルではありません)。それは動作しませんでした

他のフォーラムで、/ etc/apparmor.d/usr.sbin.mysqldを次のように変更する必要があることを見ました

/var/run/mysqld/mysqld.pid w,
/var/run/mysqld/mysqld.sock w,

「/ var/run/mysqld/mysqld」を「/ {、var /} run/mysqld/mysqld」に置き換えますが、私の場合はデフォルトで「/ {、var /} run/mysqld/mysqld」でした。

私は助けが必要です、私はこの問題で2週間があります。

ありがとう。

5
user37980

これが機能するためには、/ etc/apparmor.d/usr.sbin.mysqldのmysqlファイルを変更する必要がありました。シンボリックリンクは、何らかの理由で十分ではありませんでした。おそらく、リンクは、防具が実行される前に存在していなかったのでしょう。だから私は次のことをしました:

nano /etc/apparmor.d/usr.sbin.mysqld

そして変わった

  #/var/lib/mysql/ r,
  #/var/lib/mysql/** rwk,
  /mysql/mysql/ r,
  /mysql/mysql/** rwk,

/ mysqlは、すべてのmysqlデータリポジトリ(SSDドライブ)のマウントポイントでした。

Walliの投稿からヒントを得ました: Re:MySQL ERROR 2002(HY000):Ca n't connect to local

この問題の解決策を見つけることができたのは幸運でした。解決策を見つけるのは私にとって一夜でした。これがあなたのお役に立てば幸いです。 この問題についてmy.cnfファイルに直接メモを投稿することをお勧めします。誰に送るかわからない。

1
Ant

あなたはこれを行うことができます:

cd /var/lib/

tar -cf - mysql | (cd /new_path ; tar -xvf -)

(常に良いアイデアだからです)バックアップを作成します。

 mv /var/lib/mysql /var/lib/mysql.old

その後、シンボリックリンク

 ln -s /new_path/mysql/ /var/lib

その場合、/etc/mysql/my.cnfに触れる必要はありません。

1
maniat1k