これがMySQLの場合、データベースサーバーのネットワーキングはデフォルトで有効になっていません。 MySQLでネットワーキングを有効にするには、my.cnf
という名前のアクティブなMySQL構成ファイルを見つける必要があります。 。そしてそれを編集します。
Ubuntu 12.04でこれを行う方法を説明しますが、手順はほとんどのLinuxインストールで同様です。
MySQLネットワーキングを有効にする
まず、nano
などのエディターを使用してファイルを開きます 。 sudo
を介してコマンドを実行する必要がある場合があります :
sudo nano /etc/mysql/my.cnf
次に、bind-address
を使用して構成ファイル内の領域を探します オプション:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
次に、そのbind-address
を変更します 次のように設定します:
bind-address = 0.0.0.0
これが完了したら、ファイルを保存して、次のようにMySQLを再起動します。
sudo service mysql restart
これで、MySQLデータベースはリモートマシンからローカルホスト以外の接続を利用できるようになります。
MySQLポートを確認する3306
オープンです
ただし、ネットワーキングが有効になっている場合でも、nmap
などのネットワーキングツールを使用してコマンドラインからリモートマシンに接続できるかどうかを確認する必要があります。 。 192.168.1.10
にファイアウォールがある可能性があります MySQLポートのブロック3306
したがって、次のように開いているか閉じているかを確認する必要があります:
nmap 192.168.1.10 -p3306
そして、ポート3306
開いている場合、これが応答になります。 open
に注意してください STATE
の下 :
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
ただし、ポート3306
の場合 閉じている場合は、これを取得します。 closed
に注意してください STATE
の下 :
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
MySQLユーザー許可を確認する
これですべてが完了し、MySQLデータベースサーバーにネットワーク上でアクセスできるようになります。ただし、使用しているデータベースユーザーがLAN上のリモートマシンから接続できることを確認する必要があります。したがって、MySQLにログインし、次のコマンドを実行して、ユーザーに付与される可能性のあるものを確認します。
SELECT user, host FROM `mysql`.`user`;
これにより、MySQLでそれらのユーザーに接続しているユーザーとホストのリストが表示されます。ほとんどのユーザーには、localhost
へのアクセス権限しか付与されていません。 または127.0.0.1
。 %
のワイルドカードホストが付与されているものもあります 。そのリストを見て、使用するユーザーがワイルドカードホスト(%
)を持っているかどうかを確認する必要があります )またはそれらに接続されている特定のIPアドレス。ユーザーのGRANT
を確認できます ■このような行を実行する。もちろん、[your_database_user]
を変更します および[hostname]
設定に合わせて:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
利用可能なGRANT
のリストが表示されます。 ■特定のホスト上のユーザーの場合。 GRANT
がある場合 ■ワイルドカード%
の使用などのリモートアクセスを許可する ホスト-これですべての設定が完了しました。 GRANT
がない場合 ■次のMySQLコマンドを実行できます。もちろん、[your_database]
を変更します および[your_database_user]
設定に合わせて:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
両方のGRANT
行は、かなり標準的なアクセス権のセットをデータベースに適用します。最初の行は、192.168.x.x
のLANネットワーク範囲内のすべての接続にそれらを適用します 。 2行目は、10.x.x.x
のLANネットワーク範囲内のすべての接続にそれらを適用します。 。私はそれを内部ネットワークのすべての基盤をカバーするために行うのが好きです。最後のFLUSH PRIVILEGES;
lineは基本的に、MySQLにユーザー権限テーブルをリロードしてそれらの付与を有効にするように指示します。