Edited at

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

More than 1 year has passed since last update.


やりたいこと


  • 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. と表示されたら接続成功:slight_smile:


参考文献

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 よく使うコマンド