CentOS7にMariaDBをインストールして外部ホストから接続する方法


やりたいこと

  • MariaDBインストール
  • 外部ホストからMariaDBに接続

前提条件

  • CentOS7インストール済み
  • 外部ホストにmysqlコマンドの実行環境を作成済み

手順

  1. CentOS7にMariaDBをインストール
  2. MariaDB起動
  3. ローカルからMariaDBにログイン
  4. 外部ホスト用 MariaDBユーザ作成
  5. ポート3306を開放
  6. 外部ホストからMariaDBにログイン

1. CentOS7にMariaDBをインストール

MariaDBをインストールします

リポジトリセットアップ用スクリプトをダウンロードして実行
バージョンを指定する場合は-s -- --mariadb-server-version=[バージョン]を末尾に追記

$ curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

MariaDBサーバ・MariaDBクライアントをインストール

$ yum install MariaDB-server MariaDB-client

mariadb.serviceがサービスに追加されていることを確認

$ systemctl list-unit-files | grep maria
mariadb.service                             enabled 

2. MariaDB起動

MariaDBのサービスmariadb.serviceを起動します

$ systemctl start mariadb

サービスステータスActive: active (running)を確認

$ systemctl status mariadb
● mariadb.service - MariaDB 10.3.10 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
  Drop-In: /etc/systemd/system/mariadb.service.d
           └─migrated-from-my.cnf-settings.conf
   Active: active (running) 
...
...

3. ローカルからMariaDBにログイン

デフォルトで用意されているrootユーザでローカルからMariaDBにログインします

$ mysql -u root -h localhost

デフォルトではログインパスワードは設定されていません
セキュリティ向上のため mysql_secure_installation の実行が推奨されています

4. 外部ホスト用MariaDBユーザ作成

外部ホストのIPを[接続元ホスト]に指定して、ユーザを作成します

CREATE USER [ユーザ名]@[接続元ホスト] IDENTIFIED BY [パスワード];
サンプル

-- ユーザ名  : user1
-- 接続元IP  : 172.112.0.0 〜 172.112.0.255
-- パスワード : password

CREATE USER 'user1'@'172.112.0.%' IDENTIFIED BY 'password';

ユーザに権限を付与
(スキップ可。接続確認はデフォルトの権限で可能です)

GRANT [権限種別] ON [データベース名].[テーブル名] TO [ユーザ名]@[接続元ホスト] [WITH オプション];
サンプル

-- 権限種別  : ALL
-- 権限範囲  : 全てのデータベースの、全てのテーブル

GRANT ALL ON *.* TO 'user1'@'172.112.0.%';

 ALLで付与される権限に以下は含まれません。必要に応じて別途付与します
 ・ データベースレベル・グローバルレベルの権限(ファイル操作権限など)
 ・ GRANT OPTION権限

ユーザが追加されたことを確認

-- ユーザ名・接続元ホストを確認
SELECT User,Host FROM mysql.user;

-- 権限も含め全てのユーザ情報を確認
SELECT * FROM mysql.user;

5. ポート3306を開放

MariaDBのデフォルトポート3306を開放します

ファイアウォールにポート3306を追加(恒久対応)

$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

ファイアウォールサービスのリロード

$ firewall-cmd --reload

ポート3306がファイアウォールに追加されたことを確認

$ firewall-cmd --list-ports
3306/tcp

6.外部ホストからMariaDBにログイン

先ほど作成したユーザで外部ホストからMariaDBにログインします

$ mysql -u [ユーザ名] -h [MariaDBサーバのIP] -p
サンプル
$ mysql -u user1 -h 172.112.0.201 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20
Server version: 5.5.5-10.3.10-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Welcome to the MySQL monitor. と表示されたら接続成功

参考文献

MariaDB Package Repository Setup and Usage - MariaDB Knowledge Base
CREATE USER - MariaDB Knowledge Base
GRANT - MariaDB Knowledge Base
mysql_secure_installation - MariaDB Knowledge Base(en)
mysql_secure_installation - MariaDB Knowledge Base(ja)
curl option 覚え書き
CentOS 7 firewalld よく使うコマンド