Last Modifide Thursday, 17-Feb-2005 10:17:33 JST
玄箱/HG(KURO-BOX/HG) - MySQL / PHP4 / perl5.6
MySQL / PHP4 / perl5.6 の導入
MySQL
パッケージのインストール
設定
- デフォルトのユーザ
UserName | Passwd | Host | Grant | 用途 |
root@localhost | - | localhost | 全て | 管理ユーザー |
@localhost | - | localhost | test*に対して全ての操作 | localhostの匿名ユーザー |
debian..... | - | localhost | … | Debianからのコントロール |
この下…出先でのメモ書きです。。。(^-^;
ユーザーの登録と権限
mysqlコマンドをroot権限で使用して、新しいユーザーを作成する。ローカルホストから接続するユーザーで、権限は与えない(USAGE)で後からDBレベル、TABLEレベルの権限を与えるようにする。
mysql> grant USAGE on *.* to user@localhost;
mysql> grant ALL on user_db.* TO 'user'@'localhost'; ← user に対しuser_db への権限を与える
MySQLのユーザーはlinuxユーザとは別に登録する。linuxのユーザとは完全に切り離して考えてよい(同じ名前にすることはあっても)。登録されたユーザに対しては適当な権限を与える。データベースが無くてもデータベースレベルの権限を設定できるので、データベース登録と権限の設定はどちらが先でも良い
データベースの登録と権限
新規のデータベースはmysqladminコマンドで作成する。権限のあるユーザー以外はデータベースを作成できない。mysqlコマンドでは create database...
mysql> create database user_db;
データベース名は大文字と小文字が区別される
その他(ユーザーデータベースの考え方)
レンタルスペースなどでのデータベース使用は、ユーザ毎に唯一のデータベースを作成して複数のテーブルを各ユーザーが作成して使用する。その場合、データベースのサイズやテーブル数などの制限をかける。そのデータベースはそのサーバー(localhost)からユーザーのMySQLでのID(user)とパスワード(password)でのアクセスを行う。規模の大きなデータベースアプリケーションはテーブルの接頭語を決めるなどして、一つのデータベース内でテーブルで区別する。アクセスもとのhostは、データベースに対してSQL発行などを発行するクライアントの動作するhost…シェルでのmysqlコマンドやPHPなどのwebアプリケーションで、そのクライアントが動作しているサーバのこと。webサーバとDBサーバが同じならhostはlocalhostとなる?
確認
こんなPHPスクリプトで試してみます。
権限の範囲なら何でも出来てしまいますので注意!
sql.php
<?php
$user = "user"; // ユーザー名
$pswd = "passwd"; // パスワード
$host = "localhost"; // サーバー名
$db = "database"; // データベース名
$tabl = "table"; // テーブル名
?>
<html>
<form action='sql.php' method='post'>
実行するSQL文を入力
<input type=text name=sql size=40 maxlengh=40>
<input type=submit value="実行"><input type=reset value="取消">
</input><br>
<?php
// $HTTP_POST_VARSによりフィールドの内容を取り出し格納
$sql = $HTTP_POST_VARS["sql"];
if( $sql ){
print( "[".$sql."]<hr>\n" );
//DBへ接続
$dbHandle = mysql_connect( $host, $user, $pswd );
if( $dbHandle == False) { print ( "DBに接続できません\n" ); exit; }
if( !mysql_select_db( $db ) ){ print( "DBが存在しません\n" ); exit; }
//SQL文を実行する
$result = mysql_query( $sql );
if( $result == False ){ print( "SQLの実行に失敗しました<br>\n" ); exit; }
// 列数を取得する
$fields = mysql_num_fields( $result );
// ヘッダーの取得・表示
print ("<table width='100%' border=1 cellspacing=0>\n<tr>");
for ( $i=0; $i < $fields; $i++ ){
print("<td>".mysql_field_name( $result, $i )."</td>");
}
print("</tr>\n");
// 各行のデータを取得・表示
while( $row = mysql_fetch_array( $result ) ){
print("<tr>");
for( $j=0; $j < $fields; $j++ ){
print("<td>".$row[$j]."</td>");
}
print("</tr>\n");
}
print("</table>\n");
mysql_free_result( $result ); //結果レコードを開放
mysql_close( $dbHandle ); //DBからの切断
}
?>
</html>
PHP4
パッケージのインストール
- apt-getでインストール
# apt-get install php4 php4-mysql
- インストール時の質問に対して
Do you want me to run the apacheconfig script now[y/N]? ←No(default)
>Do you want me to add it now [Y/n]? ←Yes(default) MySQL
設定
/etc/apache/httpd.conf
- PHP4モジュールの組み込み指定
LoadModule php4_module /usr/lib/apache/1.3/libphp4.so
- デフォルトドキュメントにindex.phpを指定
DirectoryIndex index.html index.htm index.shtml index.cgi index.php
- ドキュメントタイプの追加
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
/etc/php4/apache/php.ini
確認
以下のファイルを test.php 等のファイル名で作成しブラウザで確認する。
全ての設定が表示されますので確認したら、消しておきましょう
<?php
phpinfo();
?>
perl5.6(多分、perlは導入済み)
パッケージのインストール
- パッケージのインストール
# apt-get install perl-5.6 apache-perl
webmin用のMySQLモジュールのインストール
パッケージのインストール
- パッケージのインストール
# apt-get install webmin-mysql
- webminの再起動
# /etc/init.d/webmin restart
参考リンク
MySQL / PHP4 / perl5.6
玄箱全般
Debian GNU/Linux 公式サイト
[an error occurred while processing this directive]


