5〜6回は似たようなことで毎回数時間費やしている。とり頭過ぎる。メモしないとダメだ!。
サーバー側環境
- Debian GNU/Linux wheezy
インストール & 設定
% sudo aptitude install mysql-server
ログは /var/log/syslog に吐き出される。設定ファイルは/etc/mysql/my.cnf。データベースは /var/lib/mysql 以下。
外部からアクセスできるようにする。/etc/myusql/my.cnfのbind-addressを以下のようにする。
bind-address = 0.0.0.0
/etc/hosts.allowにてmysqldをアクセスできるようにする。仮に hogehoge.co.jp をアクセス可能とする。
mysqld: hogehoge.co.jp LOCAL
mysqldを立ち上げ直す。
% sudo /etc/init.d/mysqld restart
データベース tmpdbにユーザーjohnのアクセスを許す。
% mysqladmin create tmpdb -p % mysql -u root -p > GRANT ALL on tmpdb.* to 'john'@'hogehoge.co.jp' identified by 'my_password_nantyara'; > flush privileges; > quit
クライアント側からのアクセス
Debianの場合はmysql-clientをインストールしておく。MySQLが動いているサーバーをnyarayara.co.jpとすると以下のようにコマンドを打ってアクセスする。
% mysql -u john -h nyarayara.co.jp -p tmpdb
トラブルシューティング
クライアントからのアクセス時に
ERROR 2013 (HY000): Lost connection to MySQL server during query
とか
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
とでるならば、アクセス先のサーバーにおいてmysqld(通常は3302)へのアクセスを許可していない。
- my.cnfのbind-address
- /etc/hosts.allow の mysqld への許可
- iptableの設定
をチェックすること。
ERROR 1044 (42000): Access denied for user 'john'@'nyarayara.co.jp' to database 'tmpdb'
というエラーメッセージがでたならば、MySQLにおけるデータベースへの許可権限(GRANTで与える権限)の設定がうまくいっていない、あるいは、入力しているパスワードが間違っている。許可権限情報などがmysqlデータベースをチェックすること。
% mysql -u root -p > use mysql > select Host, User, Password from user;