【MySQL】外部ホストからの接続方法
MySQLデータベースへ、外部ホストのサーバーから接続する方法をメモします。
WebサーバとDBサーバーをそれぞれ別々のサーバー環境に構築する際に必要な設定となります。
環境: MySQL Ver 8.0.19 for Linux, CentOS7
MySQLの設定を行う
(MySQLが存在するサーバーへログイン)
MySQLへログインする
mysql -u root -p
外部ホスト用のDBユーザーを作成
1. 外部ホストからDB接続するための※MySQLユーザを作成する
※サーバのユーザとは異なる
CREATE USER username@'xxx.xx.xxx.x' IDENTIFIED BY 'password';
CREATE USER ユーザ名@’外部ホスト名‘ IDENTIFIED BY ‘接続時のパスワード‘
接続元となるホスト名(IPアドレス)とパスワードを指定して、外部から接続するDBユーザーを作成します。
2. 作成したユーザにDBの接続許可を与える
GRANT ALL PRIVILEGES ON dbname.tablename TO username@'xxx.xx.xxx.x'
GRANT ALL PRIVILEGES ON データベース名.テーブル TO ユーザ@’外部ホスト名‘
3. MySQLを再起動して設定を反映する
# systemctl restart mysqld
注意:firewallを有効にしている場合
ファイヤーウォール(firewall)を有効にしている場合、外部から接続出来るようにするために
MySQLの接続ポート番号(デフォルトは3306)を許可しておく必要があります。
(MySQLをログアウトして)
接続許可ポートの確認
# firewall-cmd --list-ports
ポート(3306)の追加
# firewall-cmd --add-port=3306/tcp --zone=public
外部ホストから接続を行う
外部サーバーからシェル(CUI)を使って接続します。
※MySQLコマンドを使用する為、接続元となるこちらの環境にもMySQLがインストールされている必要があります。
サーバーへログインし、以下のコマンドを実行。
# mysql -u username -h xxx.xxx.xxx.xx -p -D dbname
mysql -u 作成したDBユーザ名 -h MySQLホスト名 -p -D 接続許可が与えられたDB名
パスワードを入力して接続します。