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