2011年10月4日火曜日

MySQLに他のサーバーから接続したい

MySQLにlocalhost以外の他のサーバーからアクセスするには設定が必要です。
ユーザ(tester/pass)だけ作って、アクセスしようとすると、こんなエラーになります。

$  mysql -u tester -ppass -h 10.20.30.40
ERROR 1045 (28000): Access denied for user 'tester'@'10.20.30.40' (using password: YES)

接続したいサーバーにて、権限を付与します。
いろいろごそごそやってるとおかしなことになるので、一旦クリーンな形にします。
% DELETE FROM mysql.user Where user = 'tester';
% REVOKE ALL PRIVILEGES ON xxx_db.* FROM tester@'%';
% FLUSH PRIVILEGES;

改めて下記を設定。
% GRANT USAGE ON *.* TO tester@'%' IDENTIFIED BY 'pass';
% GRANT ALL PRIVILEGES ON xxx_db.* to 'tester'@'%';
% SELECT USER,HOST FROM mysql.user;
権限の確認
% SHOW GRANTS for tester;
GRANT USAGE ON *.* TO 'tester'@'%' IDENTIFIED BY PASSWORD '*945E2AF30B5AA2DC36C9B6363D9B1D52A3E5CD1B'
GRANT ALL PRIVILEGES ON `xxx_db`.* TO 'tester'@'%'

上記まで行ったら、つながりました!
$ mysql -u tester -ppass -h 10.20.30.40
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 53
Server version: 5.1.37-1ubuntu5 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

これでも繋がらない?!という場合は、iptableやufwを疑ってみるのもありかもしれません。
私はufwで引っかかってました…。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。