#1044 Access denied for user 'ユーザ名'@'ホスト名' to database 'データベース名'

#1044 - ユーザー'ユーザ名'@'ホスト名' によるデータベース 'データベース名' へのアクセスは拒否されました。

wprdpressを運用しているサーバーを移転させる必要があったので、旧サーバーからデータベースをエクスポートしてsplファイルとしてローカルに保存した後に、新しいレンタルサーバーに元から入っているphpmyadminにインポートしようとしたら上のようなエラーが出ました。

原因はレンタルサーバー(お名前.comサーバー)の管理画面で作成できるmysqlのユーザーにグローバルレベルの権限がなく、管理画面から既存のデータベースごとにユーザーに編集権を与える必要があるために、インポートによって新しいデータベースを作成することができないからでした。

 

解決策 同名のデータベースをあらかじめ作成して上書きする

 

で、どうやって解決できたかというと、レンタルサーバーの管理画面から空のデータベースを作成し、編集権を与えておきます。

 

お名前ドットコムサーバーでデータベースをインポートするために新しいデータベースを作成する

 

次にインポートするローカルのデータベースを編集して、データベース名をさっき作成したからのデータベース名に変更します。

あと、

CREATE DATABASE tips_db DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;

のところを消します

 

インポート権限がないユーザーでデータベースをインポートするために編集権のある空のデータベースと同じ名前にしておく

 

見にくいですが、上の画面のUSE~のところを編集してください。コメントアウトされてるDatabaseのところは編集しなくて大丈夫(だと思います)。

そのあとに普通にインポートすることで、ユーザーが編集権を持つ空のデータベースにインポートしたデータが上書きされるのでグローバルレベルの権限がなくてもデータベースをインポートできます。ちなみに、サーバー側のデータベースに既にデータが入っているとエラーが出ます。

たぶんですが、今借りているお名前.comのレンタルサーバーもSSHで入れば普通にグローバル権限持ったアカウントを作成することができると思います。ただ、めんどくさいですし、SQLの操作なんていちいち覚えてないですよね。

それか、自前でphpmyadminをインストールさせるのもアリだと思いますが、結局SSHで操作する羽目になりそうなんでやめておきました。

 

それでは。