MariaDB が SQL バックアップを拒否するのはなぜですか?

MariaDB が SQL バックアップを拒否するのはなぜですか?

前回の質問のソースが動作しなかったため、Linode を Debian 9 に再構築する必要がありました。

私はこのセットアップガイドすべてを再構成し、新しい Debian ディストリビューションに再インストールします。

ただし、これを行う前に、

$ mysqldump --add-drop-table -h vps.sensation-experience.com -u wordpress -p wordpressDB > backup.sql

外付けハードドライブに保存しました。

MariaDB をセットアップし、安全なスクリプトを実行してルート パスワードを作成し、ホスト名とホスト ファイルを変更し、localhost からのアクセスを拒否した後、次の行を実行してみました。

mysql --user wordpress --password < backup.sql

注意してください、私はすでにバックアップが保存されているディレクトリにいました。私が受け取ったエラーは次のとおりです。

 ERROR 1698 (28000): Access denied for user 'wordpress'@'localhost'

これを回避する方法はありますか? それとも、新しいデータベースを作成し、以前にエクスポートした XML を使用してそれをインポートするべきでしょうか?

答え1

以下のようにバックアップユーザーにアクセス権を付与します。

MariaDB [(none)]> GRANT LOCK TABLES, SELECT ON *.* TO 'wordpress'@'localhost' IDENTIFIED BY 'your-password';

MariaDB [(none)]> flush privileges;

そして、もう一度試してください。

答え2

おそらく、まだ MariaDB にユーザーがいないでしょうwordpress。また、バックアップを復元するには、ユーザーが持っている権限よりも広範な権限が必要になる場合がありますwordpress。データベース ユーザーとして復元することをお勧めしますroot。Debian システムでは、MariaDB にログインする最も簡単な方法は、システムにユーザーとしてログインしているときに、引数なしでroot実行することです。mysqlroot

root@tux:~$ echo "CREATE DATABASE wordpressDB;" | mysql
root@tux:~$ mysql < backup.sql

注意:ないlocalhostDebian システムでデフォルトで設定されている Unix ドメイン ソケットを介して接続する場合に指定します。Unix ドメイン ソケットにアクセスできるすべてのユーザー (デフォルトではシステム ユーザーのみroot) には自動的にrootMariaDB の権限が付与されるため、ユーザー名/パスワードを指定する必要はありません。

関連情報