101

何らかの理由で、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';` 

それでも何もない!私が間違っていることは何ですか?

編集: my.cnfbind ip をコメントアウトしました。

4

7 に答える 7

355

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 を指定したくない場合はa を追加し ます

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

lsof -i -P | grep :3306

xxxの実際のIPでこのようなものが返されるはずです

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

上記のステートメントが正しく返された場合は、リモート ユーザーを受け入れることができます。ただし、リモート ユーザーが正しい権限で接続するには、ローカル ホストと「%」の両方でそのユーザーを作成する必要があります。

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;

上記と同じユーザーを作成していない場合、ローカルでログオンすると、基本的な localhost 権限が継承され、アクセスの問題が発生する可能性があります。myuser のアクセスを制限したい場合は、ここで GRANT ステートメントの構文を確認する必要があります。これをすべて実行しても問題が解決しない場合は、追加のエラー出力と my.cnf の適切な行を投稿してください。

注: lsof が返されない、または見つからない場合は、お使いの Linux ディストリビューションに基づいて、こちらからインストールできます。機能させるために lsof は必要ありませんが、期待どおりに機能しない場合に非常に便利です。

更新: in を追加/変更した後でもbind-address機能my.cnfしない場合は、最初に宣言された場所に移動して変更します。

/etc/mysql/mariadb.conf.d/50-server.cnf
于 2013-03-28T14:23:56.720 に答える
0

Mysql をリモート サーバーに接続しようとしたときに、同じ問題に直面していました。bind-address を DB サーバーの現在のプライベート IP アドレスに変更する必要があることがわかりました。しかしbind-address =0.0.0.0、ファイルに行を追加しようとしmy.cnfたときに、DBを作成しようとしたときに行を理解していませんでした。

検索すると、bind-address が宣言された元の場所がわかりました。

実際の宣言は次のとおりです。/etc/mysql/mariadb.conf.d/50-server.cnf

したがって、バインドアドレスを直接変更すると、すべてが機能しているように見えます。

于 2021-02-20T16:19:14.313 に答える