Android Studio AVD (エミュレータ) からデスクトップのローカルホストに接続させる設定

Android Studio AVD (エミュレータ) からデスクトップのローカルホストに接続させる設定

概要

MacOSX 上で Android Studio で Android アプリ開発中です。

AVD(Android Virtual Device) から Volley で API の繋ぎこみ先を
MAMP や Vagrant、Docker 等ローカル環境で構築したサーバに
接続するようにしています。

単純に emulator 上で 地球儀マークの Web ブラウザ開いて
ローカルホスト を指定しても接続できません。

その際に一手間必要でしたので以下手順です。

設定

  • AndroidStudio でAVD 起動中に以下 Shell を実行してください。

以上です。

無料SSL証明書発行しセキュリティでA+を取る! 〜Apache編〜

概要

ベリトランスモジュールバージョンアップに際して
SHA256で発行したSSL証明書が必須となりました。

テスト環境でベリトランスモジュールバージョンアップ試験を行う際に
SSL証明書導入する必要が生じました。

本番環境と同じ有料SSLを導入するまでとはいかずとも
近しい状況を構築する必要があったので無料SSL証明書を発行し導入しました。

上記の手順をまとめましたので以下に記載します。

環境

AWS Marketplace: CentOS 6 (x86_64) - with Updates HVM を利用しています。

  • CentOS release 6.7 (Final)
  • Apache 2.4.12

手順

CSR生成

事前準備として、SSLインストール対象サーバで
CSRを生成しておきます。

SHA256 対応のCSR生成方法について以下ご参考ください。

StartComに登録

ヘッダーメニューの Sign-up クリック

StartSSL

必要事項登録し「send verification code」ボタンクリック

登録E-mail宛に verification codeが送付されます。

こんな感じのメールが来ます。

verfication codeを入力し登録完了

SSL発行手続き

無料版選択

SSLのWeb Server 用を選択

Domain Validation

SSLインストール対象サーバのドメイン入力

メール送信による認証

startSSL側で指定するメールアドレスで受信可能な状態にする必要があります。

ec2インスタンスのメール受信設定は以下記事が参考になりました。ありがとうございます。

AWS上のpostfixでメールを受信してみる

上記記事中の注意点として
インスタンス作成直後に yum update 分にはいいですが
時にAWSで yum update をするとkernel panicを起こすことがあります。
pythonをyumでなくソースから独自に入れ直したり、色々してたせいか…

原因は追い切れていませんが、経年運用したインスタンスについては yum update は控えたいと思います。

うまく受信設定できない場合
  • /var/log/maillog を 常に tailしてログ確認。

  • 受信可能なメールアドレスが既にあれば aliases で向け先変える。
    postmaster@(domain) → root@(domain)

  • メールボックスで Permission denied で
    受信メールを保存できない場合は以下強引にメールディレクトリを変更する。

1
2
3
4
/etc/postfix/main.cf

- home_mailbox = Maildir/
+ home_mailbox = ../home/ec2-user/Maildir/

SSL証明書 注文へ進む

メール受信による認証がクリア後、SSL証明書注文へ進みます。

認証情報作成

情報入力後、 (domain).zip がダウンロードされる。
※ 今回は WebServer が Apache なので ApacheServer を参照します。

解凍した zipファイルの ApacheServer 内の以下2ファイルを任意のディレクトリにアップしましょう。

  • 1_root_bundle.crt
  • 2_(domain).crt

今回アップ先ディレクトリは server.key 等のあるパス (/etc/httpd/conf/ssl.csr/) にします。

ssl.conf設定

SSL証明書のインストールとは
Apacheの設定ファイルとして指定ディレクティブで読み込ませる
ことです。

主な設定は以下です。

| Item | Value | Explain |
| ———————– | —————————————– |
| SSLCertificateChainFile | /etc/httpd/conf/ssl.csr/1_root_bundle.crt | 中間証明書 |
| SSLCertificateFile | /etc/httpd/conf/ssl.csr/2_(domain).crt | SSLサーバ証明書 |
| SSLCertificateKeyFile | /etc/httpd/conf/ssl.csr/server.key | SSLサーバ証明書とペアになる秘密鍵 |

以下URLで各WebServerとopensslバージョンにより最適な設定方法を示唆いただけます。

https://ssl-config.mozilla.org/

/etc/httpd/conf.d/ssl.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
LoadModule ssl_module modules/mod_ssl.so

Listen 443

AddType application/x-x509-ca-cert .crt
AddType application/x-pkcs7-crl .crl

SSLPassPhraseDialog builtin


SSLSessionCache shmcb:/var/cache/mod_ssl/scache(512000)
SSLSessionCacheTimeout 300


#SSLMutex default
Mutex default ssl-cache

SSLRandomSeed startup file:/dev/urandom 256
SSLRandomSeed connect builtin
#SSLRandomSeed startup file:/dev/random 512
#SSLRandomSeed connect file:/dev/random 512
#SSLRandomSeed connect file:/dev/urandom 512

SSLCryptoDevice builtin

<VirtualHost _default_:443>

DocumentRoot "/var/www/html"
ServerName (domain):443

ErrorLog /var/log/ssl_error_log
TransferLog /var/log/ssl_access_log
LogLevel warn

SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.csr/2_(domain).crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.csr/server.key
SSLCertificateChainFile /etc/httpd/conf/ssl.csr/1_root_bundle.crt


<Files ~ "\.(cgi|shtml|phtml|php3?)$">
SSLOptions +StdEnvVars
</Files>
<Directory "/var/www/cgi-bin">
SSLOptions +StdEnvVars
</Directory>


SetEnvIf User-Agent ".*MSIE.*" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0

CustomLog logs/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

<Directory "/var/www/html">
AllowOverride All
Options -Indexes +FollowSymLinks +Includes +ExecCGI
Order allow,deny
Allow from all
</Directory>

</VirtualHost>

SSLProtocol all -SSLv2 -SSLv3

SSLCipherSuite ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS

SSLHonorCipherOrder on

SSLCompression off
SSLSessionTickets off

パフォーマンスチューニングを一切していません。
あくまで SSL証明書インストールを対象としていますのでご注意ください。

設定ファイルの構文確認

1
2
3
4
5
// 構文チェック
# httpd -t

// 構文エラーがない場合は以下のように表示されます。
Syntax OK

構文エラーが発生している場合は対象箇所が表示されますのでチェックし直してください。
但し、構文エラーがないからと言ってApache再読み込み時にエラーが発生しないとは限らないので
万が一の為、即元に戻せるようなコマンドを作っておくと良いでしょう。

例えば
ssl.conf を ssl.conf.bk にリネームして Apacheの設定ファイルとして見ないようにさせるなど。

Apache 設定ファイル再読み込み

1
2
# service httpd reload
Reloading httpd: [ OK ]

ブラウザからアクセス

Chromeでアクセスしました。

  • 認証の詳細な情報

セキュリティチェック

以下サイトで診断できます。
QUALYS SSL LABS

「A」が取れました!

ちなみに
常に https通信で問題ないサイトであれば以下のように設定すると

1
2
3
4
5
<VirtualHost *:443>
...
Header always set Strict-Transport-Security "max-age=15768000"
...
</VirtualHost>

「A+」取得できました!

常時httpsはセキュアではありますがサイトの仕様次第なところもあるので状況によりけりです。

以上

Clam AntiVirus 導入

Clam Antivirus

略称ClamAV はUnix系OSで動作するウィルススキャンOSSです。

http://www.clamav.net

wiki - Clam_AntiVirus

個人的にさくらVPSを借りて
ミドルウェア入れて動作確認していたら
気づくとDos攻撃を受けて「サーバ停止します」と連絡が来て
焦ったことがあり、導入した経緯があります。

導入手順

以下2つの方法どちらでも良いです。
yum 経由の方が起動スクリプト付きで
パスに配置してくれるので導入が安易です。

  • yum 経由
1
# yum install clamav clamav-update
  • ソースからbuild
1
2
3
4
5
6
7
# cd /usr/local/src
# wget http://www.clamav.net/downloads/production/clamav-0.99.tar.gz
# tar zxf clamav-0.99.tar.gz
# cd clamav-0.99
# ./configure --enable-milter
# make
# make install

設定ファイル更新

/etc/clamd.conf

1
2
3
4
5
// 定義ファイル更新 User clalmのコメントアウトを外す
# sed -i 's/^User\s\+clam$/#\0/' /etc/clamd.conf

// 設定更新
# freshclam

起動設定

1
2
3
4
5
// 起動
# service clamd start

// 自動起動設定
# chkconfig clamd on

実行確認

1
2
3
4
5
6
7
8
9
10
11
# clamscan --infected --remove --recursive

----------- SCAN SUMMARY -----------
Known viruses: 4269611
Engine version: 0.99
Scanned directories: 2
Scanned files: 8
Infected files: 0
Data scanned: 0.20 MB
Data read: 0.10 MB (ratio 1.92:1)
Time: 10.934 sec (0 m 10 s)
Option Explain
–infected ウィルス感染されたファイルのみ表示
–remove ウィルス感染されたファイルを削除
–recursive サブディレクトリを再帰的に検査

各option は clamscan -h で確認できます。

但し

あくまでウィルススキャンツールを導入しただけであって
日進月歩の技術で侵入されないとは限らない為
セキュリティは常に動向に注意しましょう。

PHP+OpenSSLバージョンアップ

PHP+OpenSSLバージョンアップ

概要

ベリトランスモジュールのバージョンアップに際して
2016 年以内にSSL v3.0/TLS 1.0 無効化処理が必須となりました。

世界的なセキュリティ対策の一環として必須事項なので
ベリトランス以外の決済も、また決済以外でもシステムの対策必須です。

Google、SSL 3.0 の脆弱性「POODLE」を公表、SSL 3.0 は今後サポート廃止の意向

EC-CUBE でベリトランスの決済モジュールでは
PHP から OpenSSL ライブラリを利用して決済へ通信を実施しています。

その PHP の OpenSSL ライブラリを 1.0.1i 以上(最新が推奨)に
バージョンアップする必要があります。

対応する ToDo としては以下になります。

TLS1.1 以上を利用するには openssl 1.0.1i 以上を利用する必要アリ
→ openssl バージョンアップ (1.0.1i 以上)
→ PHP の再コンパイルし OpenSSL ライブラリ(1.0.1i 以上)をバージョンアップ

上記対応をまとめました。

※ Apache の SSL v3.0/TLS1.0 利用不可設定は別途
ググればすぐ出てきます ♪

環境

  • CentOS release 6.6 (Final)
  • PHP 5.3.9
  • openssl 1.0.1g

手順

PHP で利用している OpenSSL のライブラリバージョン確認

これから PHP をコンパイルし直すので
OpenSSL support が disable でも問題ないです。

※今回では既にインストール済みであるというケースを想定しています。

1
2
3
4
5
6
# php -i | grep OpenSSL

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.1g 28 Jan 2016
OpenSSL Header Version => OpenSSL 1.0.1g 28 Jan 2016
OpenSSL support => enabled

PHP でで利用される OpenSSL Library, Header Version が 1.0.1g であることが確認できました。

既存 openssl バックアップ

既にインストール済みかと思いますので
現行バージョンを一旦退避します。

1
2
3
4
5
6
7
8
# openssl version
1.0.1g

# which openssl
/usr/local/bin/openssl

// 名前変更でバックアップとして残す
# mv /usr/local/bin/openssl /usr/local/bin/openssl1.0.1g

何か不具合が発生した場合にまきもどせるように、念のためバックアップをとりました。

openssl バージョンアップ

ソースからビルドします。

1
2
3
4
5
6
7
# cd /usr/local/src
# wget http://www.openssl.org/source/openssl-1.0.2f.tar.gz
# tar xzvf openssl-1.0.2f.tar.gz
# cd openssl-1.0.2f
# ./config --prefix=/usr/local shared -fPIC
# make
# make install

-fPIC は 動的共有オブジェクト(DSO)として mod_ssl をビルドし
PHP のバイナリ実行ファイルからフックして利用する為に必要、
と言ったところでしょうか。

openssl バージョンアップ確認

正しくバージョンアップされていることを確認しました。

1
2
3
# openssl version

OpenSSL 1.0.2f 28 Jan 2016

PHP 再コンパイル

  • 既存 PHP がどのように configure されているか確認
1
2
3
# php -i | grep config

Configure Command => './configure' '--enable-mbstring' '--enable-zend-multibyte' '--with-mysql' '--with-mysqli' '--enable-mbregex' '--with-gd' '--with-jpeg-dir=/usr/lib' '--with-png-dir=/usr/lib' '--with-freetype-dir=/usr/lib' '--with-zlib-dir' '--with-libdir=lib64' '--enable-soap' '--with-apxs2=/etc/httpd/bin/apxs' '--with-openssl=/usr/local'

--with-openssl がない場合は上記のように追加します。
今回は既に指定済みです。

上記の conigure 情報を利用して
–with-openssl があることを確認した上で
再コンパイルします。

  • 再コンパイル
1
2
3
4
# cd /usr/local/src/php-5.3.9
# ./configure --enable-mbstring --enable-zend-multibyte --with-mysql --with-mysqli --enable-mbregex --with-gd --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-freetype-dir=/usr/lib --with-zlib-dir --with-libdir=lib64 --enable-soap --with-apxs2=/etc/httpd/bin/apxs --with-openssl=/usr/local
# make
# make install

以下のようなエラーが出る場合は、手順)「openssl バージョンアップ」をご確認下さい。
新たに openssl をソースからコンパイルしてビルドしたときなどに出るエラーです。

1
configure: error: Cannot find OpenSSL's <evp.h>

PHP で利用する OpenSSL ライブラリのバージョン確認

1
2
3
4
5
6
# php -i | grep OpenSSL

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 1.0.2f 28 Jan 2016
OpenSSL Header Version => OpenSSL 1.0.2f 28 Jan 2016
OpenSSL support => enabled

OpenSSL Library, Header Version が共に指定通りとなりました。

以上です。

Install latest Git on CentOS.

Install latest Git on CentOS.

Environment Information

  • CentOS release 6.6 (Final)

Install required modules

1
# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker

Compile & Install

Please access the below url, get latest archive.
Official Repository

1
2
3
4
5
6
# cd /usr/local/src
# wget https://www.kernel.org/pub/software/scm/git/git-2.7.2.tar.gz
# tar xvf git-2.7.2.tar.gz
# cd git-2.7.2
# make prefix=/usr/local all
# make prefix=/usr/local install

Show git version.

1
2
3
# git --version

git version 2.7.2

Thank.

MacOSX python 3.4.3 インストール

概要

機械学習養成読本という素晴らしい本を頂き早速学習を深めています。

115ページ 第2部 第1章
「Pythonのインストール」がすんなりいかなかったのでメモです。

pyenv install 3.4.3 を実行すると以下のようなエラー出ませんでしたか?

1
2
3
4
5
6
7
8
9
Downloading Python-3.4.3.tgz...
-> https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tgz
Installing Python-3.4.3...
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/yyuu/pyenv/wiki/Common-build-problems

BUILD FAILED (OS X 10.11.2 using python-build 20150519)

環境

  • MacOSX ElCapitan 10.11.2(15C50)
  • Homebrew 0.9.5
1
2
3
4
5
6
7
8
$ brew install sqlite3
$ brew install readline
$ brew install openssl
$ brew install pyenv
$ export CFLAGS="-I$(brew --prefix openssl)/include"
$ export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix sqlite3)/lib"
$ export CPPFLAGS="-I$(brew --prefix sqlite3)/include"
$ pyenv install 3.4.3

以下コンパイラに渡す変数の設定が肝でした。

  • CFLAGS
  • LDFLAGS
  • CPPFLAGS

10.3 Variables Used by Implicit Rules

気をつければいけないのはMacにデフォルトでインストールされているPython
Python のPATH(/usr/local/bin)から外す

1
2
3
4
$ which python
/usr/local/bin/python

$ mv /usr/local/bin/python /usr/local/bin/python2.7.10

pip もインストール済みであるならば同様にパスから外す。

1
2
3
4
$ which pip
/usr/local/bin/pip

$ mv /usr/local/bin/pip /usr/local/bin/pip2.7

他にPythonのPATHをexportしていなければ
pyenv でインストールしたPythonにパスが通るはずです。

1
2
$ which python
/Users/kenzo/.pyenv/shims/python ←このように表示されればOK♪

Pythonエラー対応: UnicodeEncodeError: 'ascii' codec can't encode characters

結論

Pythonの文字コードを utf-8 に設定する。

概要

python で以下のような画像URLから画像をダウンロードする処理を実装した所
掲題のエラーが発生しました。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-

import urllib
import urllib2
import os.path
import sys
from HTMLParser import HTMLParser

def download(url):
img = urllib.urlopen(url)
localfile = open(os.path.basename(url),'wb')
localfile.write(img.read())
img.close()
localfile.close()
  • 具体的にはここでこけてました。
1
localfile.write(img.read())

環境

  • CentOS Linux release 7.0.1406 (Core)
  • Python 2.7.5

文字コード確認

以下対話式で確認してみると ascii と表示されました。
これを utf-8 に変更します。

1
2
3
4
$ python
>>> import sys
>>> sys.getdefaultencoding()
'ascii'

pip パス確認

バージョン確認時にパスが出力されます。

1
2
$ pip --version
pip 7.1.0 from /usr/lib/python2.7/site-packages (python 2.7)

site-packages配下に sitecustomize.py を作成

1
vi /usr/lib/python2.7/site-packages/sitecustomize.py
1
2
import sys
sys.setdefaultencoding('utf-8')

上記内容で保存。

再度文字コード確認

utf-8 になりました。

1
2
3
4
$ python
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

これで掲題のエラーが解決されました。

no-ipでAWSインスタンスの動的ip更新対応 ~いつも同じドメイン名でアクセスしたい~

概要

AWSの起動停止をするとElasticIPを設定していない限り
Public IPが変更されてしまいます。

ElasticIPは設定するとAWSを停止していても費用が発生します。

検証用環境など一時的に利用するインスタンスについて
起動時にIPが変更したことを関係者に周知するなどの手間が掛かります。

その為No-IPを利用しドメインを固定しIP変更に対応するようにしました。

No-IPは無料のドメインサービスで動的IP変更を検知するLinux用モジュールも配布しています。

環境

  • Amazon Linux AMI release 2015.09
  • noip 2.1.9

手順

まずnoipサイトで会員登録し利用したいドメインを登録します。
ipはとりあえず適当で良いです。

http://www.noip.com/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// rootユーザで実行
$ sudo su
# cd /usr/local/src

// noipモジュール
# wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
# tar xzf noip-duc-linux.tar.gz
# cd noip-2.1.9
# make
# make install

// 起動スクリプト作成
# cp redhat.noip.sh /etc/init.d/noip
# chmod 755 /etc/init.d/noip

// 起動設定
# /sbin/chkconfig noip on

// 起動
# /etc/init.d/noip start

起動後、no-ipのコンソール上で指定ドメインのIPが
1分もしない程度で切り替わっていることが確認できます。

今後

No-IPはMicroSoftによりマルウェアの温床となっておりユーザを保護すべく
22のNO-IPドメイン差し止めを連邦裁判所に申し立て、受理されましたが

No-IP側としては相談していただければ対応もできた、とし申し立て後
対応し随時ドメインの復活を果たしています。

ある程度セキュリティを加味して利用する必要がありますね。
今の所、AWSのセキュリティグループで特に外部アクセスはなく
問題なく動作しています。

また、
以下のようなGREEさんの記事がありました。

AWS EC2 での最強の Public IP 取得方法

内部関係者に聞いてみたいと思います。

===追記===

GREEさんの記事の件、内部関係者に聞いた所ubuntuのみで利用しているそうです。

CentOS7用 Revel(Golang)フレームワークの起動スクリプト 書いてみた。

CentOS7用 Revel(Golang)フレームワークの起動スクリプト 書いてみた。

起動スクリプト作成

まず成果物から

1
# vim /usr/lib/systemd/system/revel.service
1
2
3
4
5
6
7
8
9
10
[Unit]
Description=RevelBuildScript
After=nginx.service mysqld.service

[Service]
Type=simple
ExecStart=/bin/bash /var/golang/run.sh

[Install]
WantedBy=multi-user.target

※After … 上記では nginx と mysqld 起動後に revel を起動させるという設定です。

※ExecStart … /bin/bash /var/golang/run.sh については
以前の記事でローカルビルドによる
デプロイ方法を採用しているというお話をしましたが
その際に作成される run.sh のパスを指しています。

起動設定

1
# systemctl enable revel.service

起動

1
# systemctl start revel.service

停止

1
# systemctl start revel.service

以上です。

導入経緯

AWS での運用をしていると検証環境は
検証時のみに利用し余計なコストは掛けたくないものです。

なので、しょっ中、起動・停止を繰り返します。

Revel フレームワークは起動スクリプトが標準装備されていない為
インスタンス起動時に手動で起動する手間が発生していました。

その為、デザインの修正でもシステムさんお願いします〜というような依頼があり
相互に手間が発生していたのでその解決として作成しました。

現在は Slack 経由で hubot から Jenkins ジョブを実行させ
Revel の乗ってる AWS インスタンスの起動・停止できるようにしています。

ip も ElasticIP は使用せず、No-IP を利用して Public IP が変更されても
同ドメインでアクセスできるようにしています。

こちらもインスタンス起動時にドメイン管理している No-ip へ Public IP を通知し
動的にドメインと IP を紐付けるようにしています。

http://www.noip.com/

極力費用を抑えた、AWS における検証環境構築の参考にもしていただければと思います。

以上です。

※ 検証環境 はローカル開発環境と異なり、あくまで本番デプロイ前の検証用という認識です。

MySQLトラブルシューティング - mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)

概要

以下のように mysqldump コマンド実行時に掲題のエラーが発生しました。

1
2
3
$ mysqldump --lock-all-tables --events -h <host_name> -u <user> -p<password> --no-create-info <db_name> <table, ...> > output.sql

mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)

対策

エラー文の通り、RELOAD権限を付与する。

1
2
mysql> GRANT RELOAD ON *.* TO '<user>'@'<host_name>';
mysql> FLUSH PRIVILEGES;

以上