Ubuntu上のMySQL(XAMPP)サーバーにLAN内の別PCからアクセスするまでの手順
先だってミニPCを購入したのですが、それをWindowsからLinux(Ubuntu)に入れ替えて、LAN内サーバーとして立ち上げました。
MySQLをLAN内の他のPCからアクセスしたので、それまでの手順を書き留めておきます。データベースサーバーの立ち上げまではネットや書籍などで調べることができるのですが、あくまでlocalhost内での使用に留まり、LAN内でアクセスするところまで言及されているものがなく躓きながらここまで来ました。その一連の流れを書くことで参考になるかと思います。
XAMPPのインストール
インストーラーのダウンロード
https://www.apachefriends.org/download.html
インストール
$ chmod 755 xampp-linux-x64-X.X.XX-X-installer.run $ ./xampp-linux-x64-X.X.XX-X-installer.run
MySQLサーバーの起動
XAMPPマネージャーの起動
インストール直後に自動で起動するが別途立ち上げる場合は以下のコマンドを使う。
$ sudo /opt/lampp/manager-linux-x64.run
MySQL Databaseの起動
以下の画面が出てくるので、「Manage Servers」タブを選択し、「MySQL Database」を選択後「Start」ボタンを押す。表示が「Running」になればOK。
起動チェック
ブラウザのアドレスに「localhost」を入力すると左画面になるので、右上の「phpMyAdmin」リンクをクリックして左画面になったらOK。
IPアドレスの確認
ip a
コマンドでIPアドレスを確認し控えておく。(あとで別PCからアクセスする際に必要)
アクセス権限の設定
今のままではlocalhost内でしかアクセスできないので、LAN内の他のパソコンからアクセスできるようApacheの設定ファイルを修正する。
設定ファイルの修正
以下のコマンドでApacheの設定ファイルを管理者権限で開く。編集の方法はいろいろあるがエディタで開くと楽。以下はgEditで開く例。
$ sudo gedit /opt/lampp/etc/extra/httpd-xampp.conf
設定ファイルの中から以下のコードを見つけ、Require local を Require all grantedに修正すればOK。
<Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit # Require local # コメントアウト Require all granted #追加 ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory>
上記の場合すべてのPCからアクセスを許可してしまうので、決まったPCからアクセスする場合はそのPCのIPアドレスを指定した方が良い。
<Directory "/opt/lampp/phpmyadmin"> AllowOverride AuthConfig Limit # Require local # コメントアウト Require IP 192.168.11.27 #追加 ErrorDocument 403 /error/XAMPP_FORBIDDEN.html.var </Directory>
XAMPPを再起動
$ sudo /opt/lampp/lampp restart
LAN内の他のPCからphpMyAdminにアクセスする
同じLAN内の他のPC(IPアドレスを指定したPC)のブラウザで「http://(IPアドレス)/phpmyadmin/」(例:http://192.168.11.25/phpmyadmin/)にアクセスして以下の画面になればOK。
phpAdmin上でユーザー追加
外部PCからアクセスする場合は専用のユーザーアカウントを作っておいた方が良い。
タブメニューから「ユーザーアカウント」タブを選択し、「新規作成」をクリックする。
任意のユーザー名とパスワードを入力する。それ以外はデフォルト値で良いと思う。
下にスクロールすると権限の設定画面がある。必要に応じて選択する。(特になければデータと構造を全選択でいいんじゃないかな) 最後に一番下の「実行」ボタンをクリックするとユーザーが追加される。
LAN内の別PCからPHPでアクセスしてみる
その前に以下のリンクを参考にテーブルにデータを追加しておく。
http://pineplanter.moo.jp/non-it-salaryman/2022/07/09/phpmyadmin-newdb/
以下がPHPのプログラム。bookmarkテーブルの全データを読み込む。
<?php //mysqli_connect(サーバー名, ユーザー名, パスワード, データベース名); $link = mysqli_connect('192.168.11.26', 'TEST', '(パスワード)', 'bookmarks'); // 接続状況をチェック if (mysqli_connect_errno()) { die("データベースに接続できません:" . mysqli_connect_error() . "\n"); } else { echo "データベースの接続に成功しました。\n"; } // クエリ実行 if($res= mysqli_query($link,'SELECT * from bookmark')) { while($row= mysqli_fetch_array($res, MYSQLI_NUM)) { echo $row[0].$row[1].$row[2].$row[3]."\n"; } mysqli_free_result($res); } mysqli_close($link); ?>
以下のような結果になったらOK。
スポンサーリンク