mysqlサーバーにLAN内のリモートホストから接続するとき、
mysqlサーバーの/etc/mysql/my.conf 内の
bind-address = xxx.xxx.xxx.xxx
を削除すれば接続できますが、
LAN(192.168.1.0/24)内のリモートホストとサーバー自身からの接続に限定しようとして
/etc/mysql/my.confに
bind-address = 127.0.0.1
bind-address = 192.168.1.0/24
を記述すると、mysqlが起動しません。
( Ubuntu/LInuxで、# service mysql restart や # /etc/init.d/mysql を実行したらプロンプトに戻らない)
bind-address = 127.0.0.1
bind-address = 192.168.1.1
と記述しても起動しません。
bind-address = 127.0.0.1 192.168.1.0/24
と記述すると、起動はしますがlocalhostからしか接続できません。
localhostと特定のリモートホストに接続を限定する方法はないでしょうか?
2011年9月6日
No.3ベストアンサー
- 回答日時:
nora1962様、たびたびありがとうございます。
「mysqlに接続するhostを制限する」という質問の趣旨にはこの方法が適しています。
【個別アプリで問題が片付かなければ、システムで対処してみる】ということですね。
2011年9月6日
No.2
- 回答日時:
bind-address は接続元リモートホストのIPアドレスを制限するものではなく、
「サーバが複数の IPアドレスを持っている場合に、特定のアドレスでしか
待ち受けないようにする」オプションだそうです。
http://www.mysql.gr.jp/mysqlml/mysql/msg/9635
http://www.nilab.info/zurazure2/000318.html
http://somenotes.seesaa.net/article/140067960.html
http://dev.mysql.com/doc/refman/5.1/en/server-op …
LANからの接続に限るというのであれば、
bind-address = サーバーのLANのIPアドレス
になるかと思います。(その場合サーバー自身から 127.0.0.1 で接続できなくなると思われます)
手元の環境で実験してみました。
設定を変えて再起動し、netstat -lntp で待ち受けの状態を調べました。
MySQLのバージョンは 5.0.77 です。
(1) bind-address 記述なし
サーバーが持っている全てのIPアドレスで待ち受けています。
-----------------------------------------------
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 9383/mysqld
-----------------------------------------------
(2) bind-address = 0.0.0.0
記述なしの場合と同じです。
-----------------------------------------------
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 365/mysqld
-----------------------------------------------
(3) bind-address = 127.0.0.1
127.0.0.1 でのみ待ち受けています。
-----------------------------------------------
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 32707/mysqld
-----------------------------------------------
(4) bind-address = xxx.xxx.xx.xx (サーバーIPアドレス、伏せてます)
サーバーのIPアドレスで待ち受けしています。
ちなみにこの時はサーバー自身から mysql -h 127.0.0.1 で接続できませんでした。
-----------------------------------------------
tcp 0 0 xxx.xxx.xx.xx:3306 0.0.0.0:* LISTEN 695/mysqld
-----------------------------------------------
(5) bind-address = 192.168.0.1 (サーバーが持っていないIPアドレス)
MySQLサーバーが起動しません。
TCP/IPポートのバインドができないとのことで異常終了しています。
-----------------------------------------------
110906 19:21:35 [ERROR] Can't start server: Bind on TCP/IP port: Cannot assign requested address
110906 19:21:35 [ERROR] Do you already have another mysqld server running on port: 3306 ?
110906 19:21:35 [ERROR] Aborting
-----------------------------------------------
(6) 2行書いてみた
bind-address = 127.0.0.1
bind-address = xxx.xxx.xx.xx
最後に書いてあるものが有効になるようです。
-----------------------------------------------
tcp 0 0 xxx.xxx.xx.xx:3306 0.0.0.0:* LISTEN 1927/mysqld
-----------------------------------------------
(7) スペース区切りで並べて書いてみた
bind-address = 127.0.0.1 xxx.xxx.xx.xx 192.168.0.1
最初のアドレスが有効になるようです。
-----------------------------------------------
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2652/mysqld
-----------------------------------------------
tomaju様、非常に詳細に御確認頂き、大変ありがとうございます。
my.confでのbind-addressの書式の問題ではなく、そういう仕様ということで了解しました。
2011年9月6日
No.1
- 回答日時:
検索したらこんなの見つけました。
http://pman0214.blog37.fc2.com/blog-entry-129.html
bind-addressで複数の接続先の範囲設定はできないのでGRANT構文でユーザー名の指定のところでIPアドレスを指定するばいいとのことらしい。
家庭内LANなので実際有効か検証できないけれど
GRANT ALL ON root@'192.168.11.%' identified by 'xxxx';
は通った(接続もできる)。
nora1962様、ありがとうございます。
御指摘と同様の
mysql> grant all privileges on DB.* to USER@"192.168.1.%" identified by 'PASSWORD' with grant option ;
を既に実行しております。
確かに、これでユーザーとホストの限定ができるのですが、my.confの設定で一つのIPネットワークしか指定できないのは変な感じがしますので、今は「my.confの設定ではどこまでできるのか」を知りたいです。
2011年9月6日
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- ネットワーク 自作のサーバーPCが自宅内のネットワークに接続できない 3 2023/01/24 16:58
- Windows 10 リモートデスクトップ接続 1 2022/07/12 14:30
- その他(パソコン・周辺機器) チャレンジタッチ3 改造 アプリインストールできない 1 2022/07/01 14:43
- PHP ログイン機の付きの掲示板サイトを作りたいです。 2 2022/10/09 04:33
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- MySQL XamppでインストールしたMySQLのフォルダのWinRARでのバックアップについて 1 2022/06/22 18:55
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLサーバのコンピュータ名変...
-
ログイン履歴について
-
接続ができません
-
ユーザ追加して、パスワード無...
-
UTF-8にしても文字化けが直らない
-
my.cnf と my.ini の違い
-
Float型の時の計算結果がおかしい
-
mysqldが実行できない
-
VBAで変数内に保持された二次配...
-
【MySQL】時間を格納したり計算...
-
INT型は金額の型に使用するべき...
-
SQLのVARCHARとVARCHAR2の違い
-
DECIMALの範囲について
-
列数が多いと結果が行単位に改...
-
MySQL エラー Duplicate entry...
-
cseデータ閲覧時に文字化け
-
ADOのバージョンを確認する方法
-
さくらのレンタルサーバで文字...
-
MySQLのエラーコード1064の見方
-
ORACLE6でバージョンの表示方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでエラーがでて前に進めま...
-
mysql_close();の必要性について
-
DBから取得した値を加工して別...
-
MySQL sleep が溜まる
-
ポート3306へつながらず、MySQL...
-
MySQLにリモートホストから接続...
-
mysqlにドメインで接続できない。
-
mySQLでエラーが出ます。
-
MySQLサーバのコンピュータ名変...
-
ログイン履歴について
-
ACCESSとXサーバーをODBCで接続...
-
Puttyでサーバー上のMySQLを操...
-
ローカル以外のMySQLをphpMyAdm...
-
クエリー実行中に強制終了した場合
-
max_sp_recursion_depthを設定...
-
VB.NETからMYSQLへ接続 (する...
-
PHPで「myql関数」が使用できな...
-
ACCESSとMySQLとの連携 TEXT型...
-
外部からのMYSQLへの接続方法と...
-
XAMPPのMySQLを外部から接続で...
おすすめ情報