ソフトウェアエコシステムは、分散システムの概念にとって新しいものではありません。リモートでホストされているソフトウェアとやり取りするために、物理的に存在している必要はありません。
したがって、 MySQL その機能機能を十分に活用するために、ローカルマシンに常駐する必要はありません。これで、MySQLをリモートの専用サーバーで実行しても、ローカル/デスクトップマシンで実行されているMySQLの場合と同じデータベースセキュリティとパフォーマンスが保証されます。
この記事ガイドでは、 MySQLへのリモートアクセスの設定と有効化について説明します。 Linuxのサーバー。 MySQLをホストしているリモートサーバー/マシン上 データベースソフトウェアの場合、認証されたリモートユーザーがアクセスできるようにするには、いくつかの構成手順を実行する必要があります。
新しいMySQLユーザーを作成する
ルートMySQLでもないリモートユーザーと連携することをお勧めします ユーザーは、 MySQLをホストしているリモートサーバーに関連付けられていません データベースソフトウェア。
リモートのMySQLにアクセスします SSHを介したサーバーとデータベース 。
$ ssh [email protected] $ mysql -u root -p
新しいMySQLユーザーを作成するには、コマンド構文に従います。
CREATE USER 'username'@'%' IDENTIFIED BY 'your_user_password';
お気づきのとおり、‘username’ @’%’という表記を使用しています。 「username」@「localhost」ではありません このユーザーは、 MySQLにアクセスするのに十分な動的である必要があるためです。 異なるIPアドレスを持つ他のホストマシンからのサーバー。
mysql> CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password1122';
このユーザーにいくつかのデータベース権限を付与しましょう。たとえば、このユーザーは、rootユーザーがホストマシンにバインドされている場合にのみ、rootユーザーと同じデータベース権限を持つことができます。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%'; mysql> FLUSH PRIVILEGES; mysql> exit;
[あなたも好きかもしれません:phpMyAdminを介して新しいMySQLユーザーを作成する方法]
リモートMySQLアクセスを有効にする
リモートユーザーが作成されたので、次はいくつかの追加の構成変更を実行します。デフォルトでは、MySQLバインドアドレスは 127.0.0.1 これは、ローカルホストユーザーのみがMySQLデータベースと対話できることを意味します。
データベースサーバーへの他のユーザーのIPアドレスへのアクセスを許可するには、ファイルMySQL構成ファイルに移動して開きます。
$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf OR $ sudo vi /etc/my.cnf
MySQLデータベースサーバーへのリモートアクセスを許可するには、フィールド bind-address およびmysqlx-bind-address コメントアウトする必要があります。これらの構成変更により、MySQLデータベースソフトウェアをホストしているサーバーがローカルホスト(127.0.0.1)接続のみに依存することがなくなります。その後、すべてのIPアドレスがアクセスできるようになります。
ファイルを保存して閉じます。
MySQLサーバーを再起動してから、MySQLサーバーのIPアドレスを特定します。
$ sudo systemctl restart mysql $ ifconfig
リモートMySQLデータベースアクセスの試行
MySQLに直接接続するには データベースサーバーをリモートで、次のMySQL構文に準拠します。
$ mysql -u username -h mysql_server_ip_adress -p
この場合、コマンドは次のようになります。
$ mysql -u remote_user -h 192.168.50.130 -p
スクリーンキャプチャに示されているように上記のエラーが発生した場合は、ネイティブパスワードを使用するようにMySQLユーザーを構成する必要があります。 SSH経由でMySQLサーバーにサインインし、次のコマンドを実装します。
mysql> ALTER USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password1122'; mysql> exit;
その後、MySQLデータベースシェルを終了し、MySQLデーモンを再起動します。
$ sudo systemctl restart mysql
MySQLサーバーへのリモートアクセスを再試行します。
$ mysql -u remote_user -h 192.168.50.130 -p
そして、まさにそのように、選択したIPアドレスに構成されたリモートクライアントコンピューターからMySQLデータベースサーバーに直接およびリモートでアクセスできます。
ファイアウォールでリモートMySQLアクセスを有効にする
リモートサーバーでファイアウォールを有効にしている場合は、MySQLのデフォルトポート 3306へのアクセスを許可する必要がある場合があります remote_ip_address
へのアクセスを許可します 示されているように。
UFWファイアウォール
$ sudo ufw allow from remote_ip_address to any port 3306
FirewallD
$ sudo firewall-cmd --new-zone=mysqlrule --permanent $ sudo firewall-cmd --reload $ sudo firewall-cmd --permanent --zone=mysqlrule --add-source=remote_ip_address $ sudo firewall-cmd --permanent --zone=mysqlrule --add-port=3306/tcp $ sudo firewall-cmd --reload
Iptables
$ sudo iptables -A INPUT -p tcp --dport 3306 -j ACCEPT $ sudo iptables -A INPUT -p tcp -s remote_ip_address --dport 3306 -j ACCEPT
それで全部です!この記事では、LinuxでのリモートMySQLアクセスの一般的なアイデアについて役立つ洞察を学びました。