1. ホーム
  2. mysql

[解決済み] リモートコネクション Mysql Ubuntu

2023-01-27 01:30:01

質問

何らかの理由で、MySQL サーバーにリモートで接続することができなくなりました。すべて試しましたが、まだエラーが発生します。

root@server1:/home/administrator# mysql -u monty -p -h www.ganganadores.cl
Enter password:
ERROR 1045 (28000): Access denied for user 'monty'@'server1.ganganadores.cl' (using password: YES)

さて、試しに

 GRANT ALL ON *.* to monty@localhost IDENTIFIED BY 'XXXXX'; 
 GRANT ALL ON *.* to monty@'%' IDENTIFIED BY 'XXXXXX';` 

を実行しても、何も起こりません。 何が間違っているのでしょうか?

EDIT : my.cnf は、bind ip をコメントアウトしています。

どのように解決するのですか?

MySQL を localhost 以外に公開するには、次の行を追加する必要があります。

mysqlバージョン5.6以下の場合

でコメントアウトされていない /etc/mysql/my.cnf で、ループバックではなく自分のコンピュータのIPアドレスに割り当ててください。

mysqlバージョン5.7以上の場合

でコメントアウトされていない /etc/mysql/mysql.conf.d/mysqld.cnf で、ループバックではなく自分のコンピュータのIPアドレスに割り当ててください。

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

または bind-address = 0.0.0.0 IPを指定したくない場合は

その後、MySQLを停止し、新しいmy.cnfのエントリで再起動します。起動したらターミナルに移動し、以下のコマンドを入力します。

lsof -i -P | grep :3306

このように、xxxの部分にあなたの実際のIPが表示されるはずです。

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

上記のステートメントが正しく返された場合、リモートユーザーを受け入れることができます。しかし、リモートユーザが正しい権限で接続するためには、次のように localhost と '%' の両方でそのユーザを作成する必要があります。

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

にしてから

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

で、最後に

FLUSH PRIVILEGES; 
EXIT;

上記のように同じユーザーを作成していない場合、ローカルにログオンすると、ローカルホストの基本権限を継承し、アクセスに問題が発生する可能性があります。myuser が持つアクセス権を制限したい場合は、GRANT ステートメントの構文について読む必要があります。 こちら もし、これだけやってもまだ問題があるようなら、追加のエラー出力と my.cnf の適切な行を投稿してください。

注意: lsof が返されないか、見つからない場合は、インストールすることができます。 こちらへ を参照してください。lsof は物事を動かすのに必要ではありませんが、物事が期待通りに動いていないときには非常に便利です。

UPDATE: もし、追加/変更後に bind-addressmy.cnf が動作しない場合、それが最初に宣言された場所に行って変更してください。

/etc/mysql/mariadb.conf.d/50-server.cnf