WordMoveでDBのみ同期できない時の対処法メモ。
前回の記事「【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)
と
[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を再起動します。
そして/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コマンドも初めて使ったレベルでパーミッションのことがサッパリだったので、変えなかきゃいけないのはわかるけど、どう変えていいかもサッパリなわけです。
ので調べてみました。以下の記事がわかりやすかったです。
大事な部分は
①d ②rwx ③rwx ④r-- ⑤kusanagi ⑥kusanagi
で、それぞれ
- ファイルタイプ
- ⑤の所有者の権限
- ⑥のグループの権限
- 所有者でもグループでもない人の権限
- 所有者
- グループ
だそうです。
rwxはそれぞれ読み出し/書き出し/実行の権限を表示しています。
そもそも所有者とグループの違いとは・・・?となったので調べてみた。
ほうほう。でも今回のグループkusanagiって、誰が属してるの?どう調べるの?時になったので調べてみた。
ほうほう。
groups kusanagi
今回はこれで調べられるわけですな。
パーミッションを変更しよう
さてさて、ちょっと寄り道してしまいましたが、今回必要な権限はrwxです。読み出し書き出し実行ができないと最初のエラーが出てしまいます。
んで今回movefile.ymlのssh接続時のユーザが、rootでもkusanagiでもない人になっています。
この人に権限を与えてあげないといけないわけですね。
アプローチ的には
- kusanagiのグループにそのユーザを追加してあげる
- 所有者又はグループをそのユーザにする
- その他の部分をrwxにしちゃう
一番最後のはあかんでしょってのは明らかでしょう。
自分はグループ自体をそのユーザグループにしちゃいました。
chown kusanagi:接続したいユーザ wp-content
これでrwxになったのでwordmove自体はうまく行くはずです。 ただkusanagiのグループ内の別のやつから接続できなくなるわけなので、もしかするとアカンのかもしれないです。こういうときは所有者の方変えたほうがいいのかな・・・。
kusanagiグループにユーザを追加する場合は先ほどの記事でできるはずですが、少し試して見たら上手くいかなかったです。
同様なエラーが出ますが、原因はwp-contentの権限ではなく、rsyncの方の権限だと思います。
前回の記事の%wheelが許可されているためです。kusanagiグループを追記すればいけるはずではあると思います。
とりあえずこれでやっとDBの同期もできました。ヤッター。
なんとなーくパーミッションのことも勉強できたので良かったことにしました。でも知ってなきゃいけない知らないことがまだまだいっぱいですね。まだまだヒヨッコ🐥
ちょっと、前回の記事も含めてシンタックスハイライトが上手く動かなくなってます。バグです。早めに直します。すみません。
それではでは〜。
参考リンク
- 他のサーバに入れない。MySQLで他のサーバからのアクセスを許可する - ヌキのやる気のないエンジニアブログ
- MySQLインストール時に遭遇する「アクセス拒否エラー(Access denied for user 'root'@'localhost')」の対処 | Mobile First Marketing Labo
- [CentOS7]mysqlの初期rootパスが分からんのでリセットしたお話 – ADACHIN SERVER LABO
- 【一通り理解】Linuxパーミッションの基本とその設定方法
- 【初心者向け】Linuxのグループとは? ざっくりの説明
- Linuxコマンドでユーザーのグループ確認・変更。
コメントはありません。
現在コメントフォームは工事中です。