28. 5月 2012 · Write a comment · Categories: WEB制作 · Tags: , ,

PHPロゴ
色々やっていたので若干遠回りになるかもしれないけど、メモ。

Navicatでアクセスできるようにする

root権限で、localhost以外でもアクセスできるユーザをひとつ追加しておく。

GRANT ALL PRIVILEGES ON *.* TO dbmanager@’%’ INDENTIFIED BY password;

ただ、これを実行したら

ERROR 1045 (28000): Access denied for user ‘root’@’%’ (using password: YES)

などと仰る。取り急ぎひとつのデータベースさえいじれれば良かったので、

GRANT ALL PRIVILEGES ON dbname.* TO dbmanager@’%’ INDENTIFIED BY password;

とやったら通った。この後でもう一度上記の *.* を実行したら、OKになった。なんじゃらほい。
最後に FLUSH PRIVILEGES; を実行する。

latin1とUTF8に関する文字化け

5/29追記:最終的にこちらが一番参考になった。

MySQLとPHPの連携:: set names utf8以外の文字化け対策 | KennyQi PHP Blog

MySQL 5.5で「default-character-set」が使えず文字化けする→「character-set-server」にするとOK | KennyQi PHP Blog

Mysql5.5以上の場合、/etc/my.cnf に

[mysqld]?
character-set-server=utf8
skip-character-set-client-handshake

を追加して?/etc/init.d/mysqld restart で再起動。

・・・で、見た目的にはすべてutf8になっているのだけど、実際に稼働させても文字化けが直らず。
mysql_client_encoding で調べてみると案の定、latin1 が返ってくる。

さらに mysql クライアントのオプションとしては character-set-client ではなく default-character-set のままなので注意が必要です。

ということなんだろう。

PHPとMySQLの個人的まとめ ? ぱんぴーまっしぐら

PHPはmy.cnfで[mysql]、[client]を設定しようがクライアントの文字コードはビルド時に指定されたキャラクタセット(通常latin1)。

ということなので、リビルドできる状況ではないため、mysqlに接続したあと mysql_set_charset(‘utf8’); を入れて解決。

—————

参考サイト

MySQLでrootなのにgrantコマンドが実行できない場合の対処法 – eth0jpの日記

Navicat.jp -データベースの管理・運用をより簡単にスムーズに-


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA