前提・実現したいこと
XAMPP上のWordPressが稼働しているMySQL(MariaDB)サーバに、LAN上にある外部PCから接続したい
(目的)
- WordPressのDBにEXCELファイルから直接データをインポートしたい
- ユーザにWPの画面を操作させたくないので、EXCEL上の操作だけで完結したい
- その為、EXCEL(VBA)の動作するPCから直接 MariaDBのデータをCRUDしたい
発生している問題・エラーメッセージ
- サーバ起動直後は、以下2通りの方法で外部PCから接続を確認できている
A. Powershellで Test-NetConnectionを実行すると TcpTestSucceededがTrueと返ってくる
B. MySQLAdministratorで、MariaDBに接続しテーブル等を確認することができる
2. ところが、サーバあるいは外部PCから以下の操作(のいずれか)を行うと、上の接続確認ができなくなる
A. phpMyAdminを使ってDBを表示する
B. WPの操作画面を表示する
C. WPで作成されたサイトを表示する
3. Powershellで入力したコマンドとエラー内容は次の通り
Powershell
1PS C:\WINDOWS\system32> test-netconnection 192.168.1.79 -port 3306 2警告: TCP connect to (192.168.1.79 : 3306) failed 3 4ComputerName : 192.168.1.79 5RemoteAddress : 192.168.1.79 6RemotePort : 3306 7InterfaceAlias : VPN3 8SourceAddress : 192.168.1.152 9PingSucceeded : True 10PingReplyDetails (RTT) : 13 ms 11TcpTestSucceeded : False
(InterfaceAliasはVPN3になっているが、イーサネットでもWiFiでも同様)
4. クライアント側で ODBCデータソースアドミニストレーター(64ビット)を使って新しいMariaDB ODBC 3.1 Driverを追加し「Test DSN」ボタンをクリックすると、次のようなエラー画面が表示される
(設定画面)
(エラー画面)
5. 一方、サーバ上では2)接続後でも Test-NetConnectionで正常に接続確認が行える
6. 外部PC側からmySQLコマンドでサーバに接続(-hオプションでIPアドレスを指定)を試みると、以下の現象が発生する
- サーバ起動直後には正常に接続できる
- 一旦サーバ上にWordPressで構築されているサイトを表示すると、正常に接続できなくなる(尚、外部からrootで接続できるよう、サーバ側でroot@%に変更している)
###エラー発生手順
- サーバを再起動させる
- 外部PCからmySQLコマンドでサーバに接続する
- 上記(正常接続時)画面が外部PC側に表示される
- 外部PCから、Webブラウザで以下アドレスにアクセスし、Webサイトを表示する
http://192.168.1.79/SiteName
("SiteName"はXAMPP上に載っているWordPressで実装したサイト)
5. 外部PCからmySQLコマンドでサーバに再接続する
6. 上記(接続エラー時)画面が外部PC側に表示される
7. 外部PCから接続不可になった場合でも、サーバ側でmysqlコマンドを実施すると、正常動作を確認できる
(サーバ側接続正常画面 -ローカル接続なので -hオプションの指定なし)
(WordPressではいくつかのサイトを構築しており、どのサイトでも、最終的には同様のエラーに至る、含 phpMyAdmin)
(サーバ側でブラウザを使ってアクセスしても、最終的には同様のエラーに至る)
8. サーバ側で mysqlコマンドを -hオプションを使って接続する場合、'localhost' '127.0.0.1' '192.168.1.79' の3通りにおいて、いずれも下記画面のように正常に接続できることを確認できる
(サーバ側で -hオプションで接続した際のコマンドと実行結果)
これまで試したこと(今は戻した部分あり)
######my.ini
- skip-name-resolve を追加
- enable-named-pipe のコメントを外す
- bind-address を①削除 ②0.0.0.0を指定 の2通り試す
- connect_timeout=30 を追加
- interactive_timeout=30 を追加
- max_connections=100 を追加
my.ini
1[client] 2# password = your_password 3port=3306 4socket="C:/xampp/mysql/mysql.sock" 5 6# Here follows entries for some specific programs 7 8# The MySQL server 9default-character-set=utf8mb4 10[mysqld] 11port=3306 12socket="C:/xampp/mysql/mysql.sock" 13basedir="C:/xampp/mysql" 14tmpdir="C:/xampp/tmp" 15datadir="C:/xampp/mysql/data" 16pid_file="mysql.pid" 17enable-named-pipe 18key_buffer=16M 19max_allowed_packet=1M 20sort_buffer_size=512K 21net_buffer_length=8K 22read_buffer_size=256K 23read_rnd_buffer_size=512K 24myisam_sort_buffer_size=8M 25log_error="mysql_error.log" 26skip-name-resolve 27 28# Change here for bind listening 29bind-address = 0.0.0.0 30# bind-address = ::1 # for ipv6
######php.ini
- mysqli.allow_persistent=0 に変更
- mysqli.default_host=localhost に変更
php.ini
1;;;;;;;;;;;;;;;;;;;;;; 2; Dynamic Extensions ; 3;;;;;;;;;;;;;;;;;;;;;; 4extension=bz2 5extension=curl 6extension=fileinfo 7extension=gd2 8extension=gettext 9;extension=gmp 10;extension=intl 11;extension=imap 12;extension=interbase 13;extension=ldap 14extension=mbstring 15extension=exif ; Must be after mbstring as it depends on it 16extension=mysqli 17;extension=oci8_12c ; Use with Oracle Database 12c Instant Client 18;extension=odbc 19;extension=openssl 20;extension=pdo_firebird 21extension=pdo_mysql 22;extension=pdo_oci 23;extension=pdo_odbc 24;extension=pdo_pgsql 25extension=pdo_sqlite 26;extension=pgsql 27;extension=shmop 28 29; The MIBS data available in the PHP distribution must be installed. 30; See http://www.php.net/manual/en/snmp.installation.php 31;extension=snmp 32 33;extension=soap 34;extension=sockets 35;extension=sodium 36;extension=sqlite3 37;extension=tidy 38;extension=xmlrpc 39;extension=xsl 40 41[MySQLi] 42 43mysqli.max_persistent= -1 44;mysqli.allow_local_infile = On 45mysqli.allow_persistent=1 46mysqli.max_links=-1 47mysqli.default_port= 48mysqli.default_socket= 49mysqli.default_host= 50mysqli.default_user= 51mysqli.default_pw= 52mysqli.reconnect=0
######httpd-xampp.conf
- Alias /phpmyadmin "C:/xampp/phpMyAdmin/" を Require all granted に変更
httpd
1# 2# XAMPP settings 3# 4 5<IfModule env_module> 6 SetEnv MIBDIRS "C:/xampp/php/extras/mibs" 7 SetEnv MYSQL_HOME "\xampp\mysql\bin" 8 SetEnv OPENSSL_CONF "C:/xampp/apache/bin/openssl.cnf" 9 SetEnv PHP_PEAR_SYSCONF_DIR "\xampp\php" 10 SetEnv PHPRC "\xampp\php" 11 SetEnv TMP "\xampp\tmp" 12</IfModule> 13 14# 15# PHP-Module setup 16# 17LoadFile "C:/xampp/php/php7ts.dll" 18LoadFile "C:/xampp/php/libpq.dll" 19LoadModule php7_module "C:/xampp/php/php7apache2_4.dll" 20 21<FilesMatch ".php$"> 22 SetHandler application/x-httpd-php 23</FilesMatch> 24<FilesMatch ".phps$"> 25 SetHandler application/x-httpd-php-source 26</FilesMatch> 27 28# 29# PHP-CGI setup 30# 31#<FilesMatch ".php$"> 32# SetHandler application/x-httpd-php-cgi 33#</FilesMatch> 34#<IfModule actions_module> 35# Action application/x-httpd-php-cgi "/php-cgi/php-cgi.exe" 36#</IfModule> 37 38 39<IfModule php7_module> 40 PHPINIDir "C:/xampp/php" 41</IfModule> 42 43<IfModule mime_module> 44 AddType text/html .php .phps 45</IfModule> 46 47ScriptAlias /php-cgi/ "C:/xampp/php/" 48<Directory "C:/xampp/php"> 49 AllowOverride None 50 Options None 51 Require all denied 52 <Files "php-cgi.exe"> 53 Require all granted 54 </Files> 55</Directory> 56 57<Directory "C:/xampp/cgi-bin"> 58 <FilesMatch ".php$"> 59 SetHandler cgi-script 60 </FilesMatch> 61 <FilesMatch ".phps$"> 62 SetHandler None 63 </FilesMatch> 64</Directory> 65 66<Directory "C:/xampp/htdocs/xampp"> 67 <IfModule php7_module> 68 <Files "status.php"> 69 php_admin_flag safe_mode off 70 </Files> 71 </IfModule> 72 AllowOverride AuthConfig 73</Directory> 74 75<IfModule alias_module> 76 Alias /licenses "C:/xampp/licenses/" 77 <Directory "C:/xampp/licenses"> 78 Options +Indexes 79 <IfModule autoindex_color_module> 80 DirectoryIndexTextColor "#000000" 81 DirectoryIndexBGColor "#f8e8a0" 82 DirectoryIndexLinkColor "#bb3902" 83 DirectoryIndexVLinkColor "#bb3902" 84 DirectoryIndexALinkColor "#bb3902" 85 </IfModule> 86 Require local 87 ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 88 </Directory> 89 90 Alias /phpmyadmin "C:/xampp/phpMyAdmin/" 91 <Directory "C:/xampp/phpMyAdmin"> 92 AllowOverride AuthConfig 93 #Require local 94 Require all granted 95 ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 96 </Directory> 97 98 Alias /webalizer "C:/xampp/webalizer/" 99 <Directory "C:/xampp/webalizer"> 100 <IfModule php7_module> 101 <Files "webalizer.php"> 102 php_admin_flag safe_mode off 103 </Files> 104 </IfModule> 105 AllowOverride AuthConfig 106 Require local 107 ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var 108 </Directory> 109</IfModule>
######ファイアウォール
- サーバ側、クライアント側ともに、3306の受信許可を追加
- サーバ側、クライアント側ともにFWを無効に設定
######netstat
- サーバ側で netstat -an で 0.0.0.0:3306 Listening を確認
補足情報(FW/ツールのバージョンなど)
######サーバ
OS:Windows10 Home 64bit
XAMPP : 3.2.4
MariaDB : 10.4.8(port 3306)
Apache : 2.4.41
PHP : 7.3.11
phpMyAdmin : 4.9.1
IP:192.168.1.79(Ethernet)
######外部PC
OS : Windows10Home 64bit
MySqlAdministrator : 1.1.9
IP:192.168.1.104 or 109(DHCPによる)
ネット接続:社内LAN(192.168.1.0)
Ethernet、WiFi、VPN 全て同様の症状
以上になります
先週からずっと悩んでおりまして、ネット上でも色々と探したのですが、未だに解決できておりません
どうぞよろしくお願いします
###ログ情報・手順
- my.iniにログ設定変更を加えない前の、サーバ再起動後からの mysql_err.log の内容
2. my.ini [mysqld] に以下の3行を追加
log_warnings=9
general_log=1
general_log_file="mysql_general.log"
3. サーバを再起動
4. サーバ再起動直後のログファイル
- mysql_err.logに以下が追加される
2) mysql_general.logに以下が追加される
5. 外部PCから mysqlコマンドでサーバに接続
mysql -h 192.168.1.79 -u root
select host, user from mysql.user;
exit
- mysql_err.log
ログへの追記なし
2) mysql_general.logに以下が追加される
6. 外部PCからサーバ上に構築しているWordPressのサイトを表示する
サイト名:ProtoWeb
DB名:protoweb
DB接頭辞:pw
- mysql_err.log
ログへの追記なし
2) mysql_general.logに以下が追加される
7. 外部PCから再度mysqlコマンドでサーバに接続するが、エラー表示になる
mysql -h 192.168.1.79 -u root
ERROR 2002 (HY000): Can't connect to MySQL server on '192.168.1.79' (10060)
- mysql_err.log
ログへの追記なし
2) mysql_general.log
ログへの追記なし
あなたの回答
tips
プレビュー