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

MySQLデータベースへのリモートアクセスを有効にする

    通常、MySQLデータベースサーバーへのリモートアクセスは、セキュリティ上の理由から無効になっています。ただし、自宅またはWebサーバーからMySQLデータベースサーバーへのリモートアクセスを提供する必要がある場合があります。次の手順に従って有効にすることができます。

    ステップ1:SSHを使用してログインします(サーバーが環境またはイントラネットの外部にある場合)

    まず、PuTTyを使用してWindowsから、またはSSHを使用してLinuxからリモートMySQLデータベースサーバーにssh経由でログインします

    ステップ2:my.cnfファイルを編集します

    接続したら、vi:

    などのテキストエディタを使用してMySQLサーバー構成ファイルmy.cnfを編集する必要があります。
    • DebianLinuxの場合 ファイルは/etc/mysql/my.cnfにあります 場所。
    • Red Hat Linux / Fedora /CentosLinuxの場合 ファイルは/etc/my.cnfにあります 場所。

    /etc/my.cnfを編集するには、次のコマンドを実行します:

    # vi /etc/my.cnf
    • Windows 、my.iniファイルはC:\ Program Files \ MySQL \ MySQL Server X.Yにあります(X.YはMySQLサーバーのバージョン番号です)

    Windowsの場合、メモ帳でmy.iniファイルを開きます

    ステップ3:ファイルを開いたら、次のように表示される行を見つけます

    [mysqld]

    行スキップネットワークがコメント化されていることを確認し(または行を削除し)、次の行を追加します

    bind-address=YOUR-SERVER-IP

    たとえば、MySQLサーバーのIPが173.234.21.12の場合、ブロック全体は次のようになります。

    [mysqld]
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    language        = /usr/share/mysql/English
    bind-address    = 173.234.21.12
    # skip-networking
    ....

    どこで、

    • bind-address :バインドするIPアドレス。
    • スキップネットワーキング :TCP/IP接続をまったくリッスンしないでください。 mysqldとのすべての対話は、Unixソケットを介して行う必要があります。このオプションは、ローカルリクエストのみが許可されているシステムに強くお勧めします。リモート接続を許可する必要があるため、この行をmy.cnfから削除するか、コメントを付ける必要があります。

    ステップ4:ファイルを保存して閉じる

    Debian / Ubuntu Linuxでは、次のコマンドを入力してmysqlサーバーを再起動します。

    # /etc/init.d/mysql restart

    RHEL / CentOS / Fedora / Scientific Linuxで、次のコマンドを入力してmysqlサーバーを再起動します。

    # /etc/init.d/mysqld restart

    Windowsでは、管理者としてコマンドプロンプトを開き、「

    」と入力します。
    net stop MySQL
    net start MySQL

    ステップ5:リモートIPアドレスへのアクセスを許可する

    新しいデータベースへのアクセスを許可する

    ユーザーバーとリモートIP162.72.20.23用にfooという新しいデータベースを追加する場合は、mysqlプロンプトで次のコマンドを入力する必要があります。

    mysql> CREATE DATABASE foo;
    mysql> GRANT ALL ON foo.* TO bar@'162.72.20.23' IDENTIFIED BY 'PASSWORD';

    既存のデータベースへのアクセスを許可する

    162.72.20.23というリモートIPからユーザーwebadminのwebdbというデータベースに常に接続していると仮定します。既存のデータベースにこのIPアドレスへのアクセスを許可するには、mysqlプロンプトで次のコマンドを入力します。

    mysql> update db set Host='162.72.20.23' where Db='webdb';
    mysql> update user set Host='162.72.20.23' where user='webadmin';

    ステップ6:MySQLのログアウト

    mysqlからログアウトするにはexitコマンドを入力します:

    mysql> exit

    ステップ7:ポート3306を開く

    Linuxiptablesファイアウォールを開くためのサンプルiptablesルール

    /sbin/iptables -A INPUT -i eth0 -p tcp --destination-port 3306 -j ACCEPT

    または、162.72.20.23にあるWebサーバーからのリモート接続のみを許可します:

    /sbin/iptables -A INPUT -i eth0 -s 162.72.20.23 -p tcp --destination-port 3306 -j ACCEPT

    または、LANサブネット192.168.1.0/24からのリモート接続のみを許可します:

    /sbin/iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 3306 -j ACCEPT

    最後に、すべてのルールを保存します(RHEL / CentOS固有のコマンド)。
    # service iptables save

    Windowsでは、[コントロールパネル]>[Windowsファイアウォール]>[ポート3306の受信ルールの追加]に移動します

    ステップ8:MySQLデータベースへのリモートアクセスをテストする

    リモートシステムまたはデスクトップから、次のコマンドを入力します。

    $ mysql -u webadmin –h 173.234.21.12 –p

    Windowsでは、MySQLコマンドラインプログラムを実行し、MySQLルートフォルダー(Program Files \ MySQL \ MySQL Server 5.5 \ binなど)から次のコマンドを入力して、管理者としてログインします。

    C:\Program Files\MySQL\MySQL Server 5.5\bin>mysql -u webadmin –h 173.234.21.12 –p

    どこ、

    1. Oracleで日付を別の形式で表示する方法

    2. MariaDB文字列関数(完全なリスト)

    3. MariaDBでのCHAR_LENGTH()のしくみ

    4. ORA-1114データパッチの実行