この記事について
| 環境 | Windows、xampp(mysql)、ODBC |
|---|---|
| 目的 | 他のPCからODBC接続でxamppのmysqlに接続する |
| 結果 | GRANT文でホスト名%(ワイルドカード)のユーザーを作って接続できた |
つまずきポイント要約
- 初期設定はlocalhostのみ許可。Host is not allowed to connectエラーになる
- ホスト名を%にするとlocalhost以外からもアクセス可能になる
事象
他のPCからODBC接続でxamppをインストールしたPCのmysqlに接続を試みた際、Mysql Connecterのテスト接続でエラーが発生した。
エラー内容
Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server
原因
xamppの初期設定では、localhostからの接続だけが許可されているのでエラーになる。
他のPCから接続するには、接続の権限を持ったユーザーを作る必要がある。
対処
「mysql」という名前のデータベースに「user」という名前のテーブルがあるので、そこに新しいユーザーを加える。
書式
GRANT ALL PRIVILEGES ON 有効範囲(データベース名.テーブル名) TO ユーザー名@ホスト名 IDENTIFIED BY 'パスワード'
PRIVILEGES は、省略可。
実際のコマンド
GRANT ALL PRIVILEGES ON *.* TO testuser@'%' IDENTIFIED BY 'test'
上のコマンドだと、以下の設定をしたことになる。
・ユーザー名:testuser
・パスワード:test
・ホスト名(@以降):ワイルドカード(%)← これでlocalhost以外からもアクセス可能になる。もし「localhost」と記述すれば、他のPCからはアクセスできない。
・all privileges は、「(GRANT権限以外の)すべての権限を与える」
・*.* は、「すべてのデータベースのすべてのテーブルに有効」という意味。
これでうまくいった。
他のPCからページが見れない場合は、こちら
