MySQLでメールアドレスのドメイン部分を別のドメインに置き換えてマスクする方法
データベースに保存されたユーザーのメールアドレスを、そのまま公開したり他システムへ連携したりするのは避けたいケースは多くあります。本記事では、MySQLのREPLACE()関数を使って、メールアドレスのドメイン部分(例:@gmail.com)を別のドメイン(例:@amz.com)に一括置換し、マスクする手順を解説します。
1. サンプルテーブルを作成する
まず、メールアドレスを格納するテーブルを作成します。
mysql> create table DemoTable1345
-> (
-> UserEmailAddress text
-> );
Query OK, 0 rows affected (0.42 sec)
UserEmailAddressというTEXT型のカラムを1つだけ持つシンプルなテーブルです。
2. テストデータを挿入する
次に、INSERTコマンドを使ってサンプルのメールアドレスを登録します。
mysql> insert into DemoTable1345 values('Carol123@gmail.com');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1345 values('987Sam@gmail.com');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1345 values('David_Miller@gmail.com');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1345 values('Bob@gmail.com');
Query OK, 1 row affected (0.14 sec)ここでは4件のGmailアドレスを登録しました。ローカルパート(@より前の部分)には英数字やアンダースコアなど、さまざまな形式が含まれています。
3. 現在のデータを確認する
SELECT文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1345;
実行結果は以下のとおりです。
+------------------------+
| UserEmailAddress |
+------------------------+
| Carol123@gmail.com |
| 987Sam@gmail.com |
| David_Miller@gmail.com |
| Bob@gmail.com |
+------------------------+
4 rows in set (0.00 sec)
4. ドメイン部分を別ドメインに置き換える
いよいよメールアドレスをマスクするクエリです。UPDATE文とREPLACE()関数を組み合わせることで、「@gmail.com」を「@amz.com」へ一括変換できます。
mysql> update DemoTable1345 set UserEmailAddress=replace(UserEmailAddress, '@gmail.com','@amz.com');
Query OK, 4 rows affected (0.18 sec)
Rows matched: 4 Changed: 4 Warnings: 0
REPLACE(対象文字列, 置換前の文字列, 置換後の文字列)という構文になっており、カラム内のすべての該当箇所が置き換えられます。実行結果を見ると、4行すべてが更新されたことがわかります。
5. 更新結果を確認する
もう一度テーブルの中身を確認しましょう。
mysql> select * from DemoTable1345;
実行結果は以下のとおりです。
+----------------------+
| UserEmailAddress |
+----------------------+
| Carol123@amz.com |
| 987Sam@amz.com |
| David_Miller@amz.com |
| Bob@amz.com |
+----------------------+
4 rows in set (0.00 sec)
すべてのメールアドレスのドメインが「@amz.com」に置き換わり、ローカルパートは元のまま保持されていることが確認できます。
補足:マスキング時の注意点
- バックアップを取ってから実行する:
UPDATEによる置換は元に戻せないため、本番環境では必ず事前にバックアップやトランザクションを活用してください。 - WHERE句での絞り込み: 特定のドメインだけを対象にしたい場合は、
WHERE UserEmailAddress LIKE '%@gmail.com'のように条件を追加すると安全です。 - 大文字・小文字の扱い: MySQLのデフォルトの照合順序では比較時に大文字小文字が区別されない場合があります。厳密に制御したい場合は照合順序(COLLATE)を指定しましょう。
このように、REPLACE()関数を使えばSQL一文だけで大量のメールアドレスのドメインを簡単にマスクできます。テストデータの生成や個人情報の保護など、さまざまな場面で活用できるテクニックです。
-
Outlook.comでメールアドレスをホワイトリストに登録する方法
Outlook.comユーザーの中には、信頼できる差出人からのメールが迷惑メールフォルダに振り分けられてしまい、大切な連絡を見逃してしまうという経験がある方も多いのではないでしょうか。実は、信頼できる連絡先をあらかじめホワイトリストに登録しておけば、この問題は簡単に解決できます。 差出人を「安全な差出人」として登録すると、その相手からのメールは必ず受信トレイに届くようになります。設定するには、まず画面右上にある設定ボタン(歯車アイコン)をクリックし、オプションを選択してください。 次に、「安全な差出人と受信拒否する差出人」のリンクをクリックします。 すると、3つのオプションが表示されます。
-
iCloudメールでカスタムメールドメインを使う方法|iCloud+の設定手順を徹底解説
カスタムメールドメインは、多くのiCloudユーザーが長年求めてきた機能であり、AppleはついにiCloud+としてこれを実現しました。では、カスタムメールドメインとは何か、なぜiCloudを使うべきなのでしょうか。早速詳しく見ていきましょう。カスタムメールドメインとは?メールドメインとは、メールアドレスの「@」以降の部分を指します。「カスタムドメイン」のメールアドレスとは、gmail.com、outlook.com、yahoo.comなど以外の独自ドメインを使用したものです。例えば、「david@thisisanicloudtest.com」というメールアドレスの場合、「thisisani