sql >> データベース >  >> RDS >> Mysql

LAN経由でMySQLデータベースWebサービスにアクセスする方法は?

    これが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にユーザー権限テーブルをリロードしてそれらの付与を有効にするように指示します。




    1. SQL Serverの2つの日付の間のすべての週の開始日と終了日を取得するにはどうすればよいですか?

    2. Oracle SQL-NULL値のmax()

    3. 列番号はデータベースのパフォーマンスに影響を与えませんが、行数は影響を与えるというのは本当ですか?

    4. 明示的に設定されていても、PreparedStatementがタイムアウトすることはありません