ウェブサイト検索

LinuxでデフォルトのMySQL/MariaDBポートを変更する方法


このガイドでは、CentOS 7およびDebianベースのLinuxディストリビューションで、MySQL/MariaDBデータベースがバインドするデフォルトポートを変更する方法を学びます。LinuxおよびUnixで動作しているMySQLデータベースサーバーのデフォルトポートは3306/TCPです。

LinuxでデフォルトのMySQL/MariaDBデータベースポートを変更するには、以下のコマンドを実行してMySQLサーバーの設定ファイルを編集します。

# vi /etc/my.cnf.d/server.cnf                   [On CentOS/RHEL]
vi /etc/mysql/mariadb.conf.d/50-server.cnf    [On Debian/Ubuntu] 

[mysqld] で始まる行を検索し、以下のファイル抜粋に示したように、[mysqld] ステートメントの下に次のポートディレクティブを配置します。ポート変数を適宜置き換えてください。

[mysqld] 
port = 12345

新しいMySQL/MariaDBポートを追加した後、設定ファイルを保存して閉じ、CentOS 7に以下のパッケージをインストールして、データベースが新しいポートにバインドできるように必要なSELinuxルールを適用します。

# yum install policycoreutils-python

次に、MySQLソケットを新しいポートにバインドするために、以下のSELinuxルールを追加し、データベースデーモンを再起動して変更を適用します。以下のコマンドを実行してください。再度、MySQLポートの変数を自分のポート番号に置き換えてください。

--------------- On CentOS/RHEL --------------- 
semanage port -a -t mysqld_port_t -p tcp 12345
systemctl restart mariadb

--------------- On Debian/Ubuntu ---------------
systemctl restart mysql      [On Debian/Ubuntu]  

MySQL/MariaDBデータベースサーバーのポート設定が正常に適用されたかどうかを確認するために、netstatまたはssコマンドを実行し、grepコマンドを使って結果をフィルタリングし、新しいMySQLポートを簡単に特定してください。

# ss -tlpn | grep mysql
netstat -tlpn | grep mysql

新しいMySQLポートを表示するには、rootアカウントでMySQLデータベースにログインし、以下のコマンドを発行することもできます。ただし、ローカルホストのMySQLへのすべての接続は、TCPソケットではなく、MySQLユニックスドメインソケットを介して行われることに注意してください。しかし、-Pフラグを使用してコマンドラインからリモート接続を行う場合は、TCPポート番号を明示的に指定する必要があります。

# mysql -h localhost -u root -p -P 12345
MariaDB [(none)]> show variables like 'port';

MySQLデータベースへのリモート接続の場合、rootユーザーはすべてのネットワークまたは特定のIPアドレスからの受信接続を許可するように明示的に設定する必要があります。これは、MySQLコンソールで以下のコマンドを実行することによって行います。

# mysql -u root -p
MariaDB [(none)]> grant all privileges on *.* to 'root'@'192.168.1.159' identified by 'strongpass';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

新しいポートでコマンドラインクライアントを介してMySQLサーバーにリモートログインするには、以下のコマンドを入力します。

# mysql -h 192.168.1.159 -P 12345 -u root -p  

最後に、MySQL/MariaDB データベースサーバーのポートを変更したら、新しい TCP ポートへの接続を許可するように配布ファイアウォールルールを更新し、リモートクライアントがデータベースに正常に接続できるようにする必要があります。

関連記事: