Mysqlにリモートから外部アクセスした件
環境
・Cent OS 7 ・Mysql Ver 14.14 Distrib 5.7.20
外部アクセス
Mysqlにリモートからアクセスする必要があって、設定してくとたくさんエラーでてきたわーいww
エラー
まずリモートからアクセスするために/etc/my.cnfにbind-address=remote-IPしてやればいいんだろ?とmy.cnfにIPを追加
my.cnfをさわる
# For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid bind-address = IP
再起動!
$ sudo systemctl status mysqld ● mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled) Active: deactivating (final-sigterm) (Result: exit-code) since 木 2017-11-09 12:41:13 JST; 1min 57s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 19349 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=1/FAILURE) Process: 19332 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 16770 (code=exited, status=0/SUCCESS) CGroup: /system.slice/mysqld.service └─19353 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
久しぶり!またあったね!FaOk!!
原因がわかんない
/var/log/mysql見てもエラーは出てるんだけどおそらくそう言うエラーじゃないだろうと判断 my.cnfからbindの行をコメントしたらsystemctlで普通に起動するんだよ んで、調べて行くとmysqlの設定じゃねえのか?となる ということでさっきのbindの行は削除
mysql側の設定
とりあえずrootでログイン そして外部からアクセスする用のユーザを作成して権限を与える
mysql> grant all privileges on DBNAME.* to avalon@"10.0.0.0" identified by '*******' with grant option; Query OK, 0 rows affected, 1 warning (0.00 sec)
権限の与え方とかはgrant文で
そして確認してみる
mysql> select user,host from mysql.user; +---------------+-----------+ | user | host | +---------------+-----------+ | avalon | 10.0.0.0 | | avalon | localhost | | mysql.session | localhost | | mysql.sys | localhost | | root | localhost | +---------------+-----------+
おるやん そして一度mysqldを再起動してアクセスを試みる
ERROR 2003 (HY000): Can't connect to MySQL server on '10.0.2.0' (113)
バーローがぁぁぁ!!
最終的な解決
なんでだチキショー!! って思っていたら ん?待てよ...俺firewall設定したか?初歩の初歩だぞ...
$ firewall-cmd --list-all
なかった...サービスのとこにmysqlが...バカだ俺は...
$ firewall-cmd --add-service=mysql --zone=public --premanent $ firewall-cmd --reload
アクセスを試みる
いけた!! firewallの設定で詰まるとか...ナンセンスかよ
Mysqlへ外部アクセスする際の手順
- mysql側で外部アクセス用のユーザを作成して権限を付与する
- firewallの設定をする
- 3306のポートが開いていて、プロセスがいるか確かめる
たった3ステップ!!!!それに詰まった俺...
yodan
更新がものすごく遅くなってたんだけど、それにはちゃんと理由がある!
最近、Markdown式のメモサーバを自宅に立てて備忘録は基本そっちでやってた!
だって、htmlで書くよりMarkdownの方が早いじゃんね( =A= )
だけど、はてなもMarkdownできるんかい!!ってことでこれからどんどん移植すると思う!