Original post: http://anothermysqldba.blogspot.com/2014/07/mysql-ubuntu-mysqld-does-not-have.html
だから、今日、私はいくつかのテーブルを回復できるよう、バックアップからMySQLデータベースを復元する必要があるために起こる。 私は、ポート3306を経由して実行されている彼の本番データベースを残しながら、私はポート3307を経由してバックアップを設定します。
しかし、私はmysql_restoreディレクトリ内の3307ポートを介して別のバージョンを起動しようとしましたが、私はいくつかのエラーに遭遇した....
だから私はまず、ディレクトリのアクセス権をチェックし、それが700に設定されており、MySQLを所有していたことを確実にした。 私はまた、データディレクトリ内のディレクトリは700に設定されており、MySQLを所有していたことを確実にした。 残りのファイルは、すべて600(-RW-RW ----)に設定されています。 念のため私はまた、ディスクがいっぱいではなかったことを確実にした。
ように、エラー·ログには、アクセス許可の問題を示していますが、一目見ただけですべての権限が正しいことを確認します。 だから、それは何ですか?
私はRHEL、または関連の枝にあった場合も、私は、SELinuxを考えるだろう。 それは何とかそれをブロックした。
UbuntuのAppArmorは、この場合に検討する必要がありました。
デフォルトの「VAR / libに/ MySQLは「アドレス指定されていることに注意してください。 私が作成した復元ディレクトリは、しかしではなかった。 だからとAppArmorの再起動を追加することによって、私は、成功してMySQLを起動することができました。
必要に応じて見直しのための追加のURL:
だから、今日、私はいくつかのテーブルを回復できるよう、バックアップからMySQLデータベースを復元する必要があるために起こる。 私は、ポート3306を経由して実行されている彼の本番データベースを残しながら、私はポート3307を経由してバックアップを設定します。
しかし、私はmysql_restoreディレクトリ内の3307ポートを介して別のバージョンを起動しようとしましたが、私はいくつかのエラーに遭遇した....
/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf
[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test
[Warning] Can't create test file /var/lib/mysql_restore/localhost.lower-test
Can't find file: './mysql/plugin.frm' (errno: 13)
InnoDB: Completed initialization of buffer pool
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
# perror 13
OS error code 13: Permission denied
だから私はまず、ディレクトリのアクセス権をチェックし、それが700に設定されており、MySQLを所有していたことを確実にした。 私はまた、データディレクトリ内のディレクトリは700に設定されており、MySQLを所有していたことを確実にした。 残りのファイルは、すべて600(-RW-RW ----)に設定されています。 念のため私はまた、ディスクがいっぱいではなかったことを確実にした。
ように、エラー·ログには、アクセス許可の問題を示していますが、一目見ただけですべての権限が正しいことを確認します。 だから、それは何ですか?
私はRHEL、または関連の枝にあった場合も、私は、SELinuxを考えるだろう。 それは何とかそれをブロックした。
UbuntuのAppArmorは、この場合に検討する必要がありました。
# cat /etc/apparmor.d/usr.sbin.mysqld
...
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
...
デフォルトの「VAR / libに/ MySQLは「アドレス指定されていることに注意してください。 私が作成した復元ディレクトリは、しかしではなかった。 だからとAppArmorの再起動を追加することによって、私は、成功してMySQLを起動することができました。
# vi /etc/apparmor.d/usr.sbin.mysqld
...
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
/var/lib/mysql_restore/ r,
/var/lib/mysql_restore/** rwk,
...
/etc/init.d/apparmor {start|stop|restart|reload|force-reload|status|recache}
/var/lib/mysql_restore# /etc/init.d/apparmor restart
...
/usr/bin/mysqld_safe --defaults-file=/etc/my_3307.cnf
...
# mysql -P 3307 --socket=/var/lib/mysql_restore/mysqld_3307.sock
必要に応じて見直しのための追加のURL: