mysqlのユーザー作成でハマる (^_^;)

シェアする

  • このエントリーをはてなブックマークに追加

ハマってばっかりでどんだけアホなんだろうって思いますが。

古いサーバーから新しいサーバーに移行するのにmysqlのmysqlデータベースのuser をリストアすれば良いんですがせっかくなのでユーザー名を変えてやろうと思ったのが悪かったんですね(^_^.)

GRANT SELECT,INSERT,UPDATE,DELETE ON *.* TO hogehoge@’%’ IDENTIFIED BY ‘password’;

なんて感じでユーザーを作成しそのユーザーでDBにアクセスすると、・

Access denied ~

なんてエラーが。

はい。

もうわかりますよね(^_^.)

localhostのユーザーでアクセスする場合は

hogehoge@localhost

とちゃんと指定してあげないとダメです。

ワイルドカード指定は効きません。

4.8.2. MySQL への新規ユーザの追加

ってページにもちゃんと書いてあります。

抜粋してみると、

monty というユーザ名と some_pass というパスワードのアカウントが 2つ存在します。どちらもフル権限を持つスーパーユーザのアカウントです。’monty’@’localhost’) というアカウントは、ローカル ホストから接続するときにだけ使用できます。一方の ‘monty’@’%’ というアカウントは、どのホストからでも接続できます。注意: monty というアカウントは両方とも、monty としてどこからでも接続できる必要があります。この localhost でアカウントを持っていない場合、monty でローカル ホストから接続したときに、mysql_install_db で作成している localhost のエントリで、匿名ユーザのアカウントとして優先になります。つまり、 monty が匿名ユーザとして扱われます。この理由は、’monty’@’%’ よりも、匿名ユーザの方が具体的な Host カラム値にあるため、匿名の方が、user テーブルのソート順で先にきます。. (user テーブルのソートに関しては、「アクセス制御の段階 1: 接続確認」 を参照してください。)

だそうです。

要はlocalhostで稼動しているmysqlサーバーにlocalhostから接続するユーザーは @localhost を付けなさい。

という事で。

なぜこのような事が起きるかもちゃんと書いてありますよ。

4.7.5. アクセス制御の段階 1: 接続確認

ちなみになんでこういう失敗をしたかと言うと単純に新規ユーザーのインサート文をシェルで作ってたときに@’%’をつけていたのが原因。

もう注意散漫過ぎ(-_-;)

でわでわ。

High Performance MySQL: Optimization, Backups, and Replication
High Performance MySQL: Optimization, Backups, and Replication

シェアする

  • このエントリーをはてなブックマークに追加

フォローする