うるおいらんど

WordMoveでDBのみ同期できない時の対処法メモ。

Wordmove

前回の記事「【Conoha】WordMoveでローカル環境と本番環境を同期してみたぞいっ【VVV】」の補足というか続き。

 

現在の状態

WordMoveでローカルのVVVからVPSのKUSANAGI環境にプッシュすることはできているが、DBのところだけなんかエラーが出ているという状態。

実際に出ているエラー内容

Error code 1 returned by command "mysqldump --user=ユーザ名 --password=パスワード--result-file="/home/kusanagi/プロファイル名/DocumentRoot/wp-content/dump.sql" データベース名": mysqldump: Can't create/write to file '/home/kusanagi/プロファイル名/DocumentRoot/wp-content/dump.sql' (Errcode: 13 "Permission denied") (Wordmove::ShellCommandError)

というエラー。

エラーを見る限りパーミッションが足りていないんだなということがわかります。

 

mysqlをみてみた

KUSANAGIのほうにログインして、エラーのところがどうなっているのかをみてみました。

mysqldump --host=IPアドレス --user=ユーザ名 --password=パスワード --all-databases

そしたらなんかエラーが。

mysqldump: Got error: 1130: "Host 'ほげほげ' is not allowed to connect to this MariaDB server" when trying to connect

調べて見るとユーザとホストの設定をしないといけないみたいでした。

他のサーバに入れない。MySQLで他のサーバからのアクセスを許可する - ヌキのやる気のないエンジニアブログ

 

まずはmysqlにログインしようと試みました。

mysql -u root

そしたらまたエラーが。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

 

MySQLインストール時に遭遇する「アクセス拒否エラー(Access denied for user 'root'@'localhost')」の対処 | Mobile First Marketing Labo

[CentOS7]mysqlの初期rootパスが分からんのでリセットしたお話 – ADACHIN SERVER LABO

を参考に以下の手順で設定。

まずはMySQLの停止をしておきます。

service mysqld stop

/etc/my.cnf を編集

vi /etc/my.cnf
[mysqld]
skip-grant-tables

を追記。 そしてmysqlを再起動

systemctl restart mysqld

これでログインできるようになっているはずなので

mysql -u root

でログイン。

mysql -u root

MySQLインストール時に遭遇する「アクセス拒否エラー(Access denied for user 'root'@'localhost')」の対処の4を実行させます。

できたらmysqlを再起動します。

そして/etc/my.cnfの先ほど書いた部分を削除します。

vi /etc/my.cnf
[mysqld]
skip-grant-tables #けす

そしてもう一度mysqlを再起動します。

ほいでとりあえずmysqlにはログインできるようになったはずです。

で、これをしたらwordmoveで成功すると何故か思っていたんですが、問題はパーミッションの方です。

 

パーミッションをチェックしよう

まずは現在のパーミッションをチェックします。

チェックするのは最初のエラーの

/home/kusanagi/プロファイル名/DocumentRoot/wp-content/dump.sql

この部分。

現状dump.sqlなんてものはできてないはずなので(一時ファイルのはずなのでwordmoveで実行時のみ生成される)、wp-contentの方の権限をチェックします。

cd /home/kusanagi/プロファイル名/DocumentRoot/
ll

おそらく初期値はこんな感じだった気がします。(確認せずに変えたのでわからない・・・)

そもそもllコマンドも初めて使ったレベルでパーミッションのことがサッパリだったので、変えなかきゃいけないのはわかるけど、どう変えていいかもサッパリなわけです。

ので調べてみました。以下の記事がわかりやすかったです。

【一通り理解】Linuxパーミッションの基本とその設定方法

 

大事な部分は

①d ②rwx ③rwx ④r-- ⑤kusanagi ⑥kusanagi

で、それぞれ

  1. ファイルタイプ
  2. ⑤の所有者の権限
  3. ⑥のグループの権限
  4. 所有者でもグループでもない人の権限
  5. 所有者
  6. グループ

だそうです。

rwxはそれぞれ読み出し/書き出し/実行の権限を表示しています。

 

そもそも所有者とグループの違いとは・・・?となったので調べてみた。

【初心者向け】Linuxのグループとは? ざっくりの説明

 

ほうほう。でも今回のグループkusanagiって、誰が属してるの?どう調べるの?時になったので調べてみた。

Linuxコマンドでユーザーのグループ確認・変更。

ほうほう。

groups kusanagi

今回はこれで調べられるわけですな。

 

パーミッションを変更しよう

さてさて、ちょっと寄り道してしまいましたが、今回必要な権限はrwxです。読み出し書き出し実行ができないと最初のエラーが出てしまいます。

んで今回movefile.ymlのssh接続時のユーザが、rootでもkusanagiでもない人になっています。

この人に権限を与えてあげないといけないわけですね。

 

アプローチ的には

  • kusanagiのグループにそのユーザを追加してあげる
  • 所有者又はグループをそのユーザにする
  • その他の部分をrwxにしちゃう

一番最後のはあかんでしょってのは明らかでしょう。

 

自分はグループ自体をそのユーザグループにしちゃいました。

chown kusanagi:接続したいユーザ wp-content

これでrwxになったのでwordmove自体はうまく行くはずです。 ただkusanagiのグループ内の別のやつから接続できなくなるわけなので、もしかするとアカンのかもしれないです。こういうときは所有者の方変えたほうがいいのかな・・・。

 

kusanagiグループにユーザを追加する場合は先ほどの記事でできるはずですが、少し試して見たら上手くいかなかったです。

同様なエラーが出ますが、原因はwp-contentの権限ではなく、rsyncの方の権限だと思います。

前回の記事の%wheelが許可されているためです。kusanagiグループを追記すればいけるはずではあると思います。

 

とりあえずこれでやっとDBの同期もできました。ヤッター。

なんとなーくパーミッションのことも勉強できたので良かったことにしました。でも知ってなきゃいけない知らないことがまだまだいっぱいですね。まだまだヒヨッコ🐥

 

ちょっと、前回の記事も含めてシンタックスハイライトが上手く動かなくなってます。バグです。早めに直します。すみません。

それではでは〜。

 

参考リンク

Comments

コメントはありません。

現在コメントフォームは工事中です。