使ってみるとなかなかベンリーなPHPのコンパイルのメモ。mysql-5と連携。とりあえずapache2のDSO対応でコンパ
イル
インストール。
【mysql-5】
まずmysqlインストール。PHP-5.2の仕様かmysqlのthread-safeクライアントというのをビルドしないといけないので--enable-thread-safe-client を
付けて最適化。
以前に古い分をインストールした/されている場合、/usr/local以下に以前の物が残っていることもあるので、削除
なり事後にリンク貼りなおし等をすること。
以前のDBをダンプ出力して保存。手動で以下のようにする。もしくはphpMyAdminで抜き出したほうが色々出力設定もいじれて確実、かつ楽。
% mysqldump -A -uroot -pパスワード -Q --opt -rバックアップファイル名 #手動ダンプ
で、最適化、コンパイル。
% sudo mkdir -p /usr/local/mysql-5.0.27
% sudo rm -rf /usr/local/mysql
% sudo ln -s /usr/local/mysql-5.0.18 /usr/local/mysql
% ./configure --prefix=/usr/local/mysql \
--localstatedir=/usr/local/mysql/data \
--with-charset=binary ¥\
--with-extra-charsets=binary,utf8,cp932,eucjpms,ujis,ucs2,latin1 \
CFLAGS="-O3" \
--enable-thread-safe-client
% make
% sudo make install
% sudo ln -s /usr/local/mysql/bin/mysql* /usr/local/bin #/usr/localにリンク貼り(古い分に注意)
% sudo cp -rf support-files/mysql.server /usr/local/mysql
% sudo chmod +x /usr/local/mysql/mysql.server
% sudo ./scripts/mysql_install_db #
基本DB作成
% sudo chown -R mysql /usr/local/mysql/data #アクセス権変更
% sudo chgrp -R mysql /usr/local/mysql/*
SystemStarterの設定
% sudo mkdir
/Library/StartupItems/MySQLCOM
% sudo cp -rf
support-files/MySQLCOM /Library/StartupItems/MySQLCOM
% sudo cp -rf
support-files/StartupParameters.plist /Library/StartupItems/MySQLCOM
/etc/hostconfigに
MYSQLCOM=-YES-
の一行を追加
% sudo SystemStarter start
MySQL # mysql起動
以下mysql起動後の設定
% mysqladmin -u root password 'パスワード' #rootパスワード設定
% mysqladmin -u root -h localhost password 'パスワード' #rootパスワード設定
% mysql -uroot -pパスワード <
バックアップファイル名 #手動でバックアップからインポート/又は
phpMyAdminでインポートがお奨め
% mysql_fix_privilege_tables -uroot -pパスワード #必要なら実行(4.1以下のDBから移行時)
% mysql -uroot -pパスワード #mysqld
にログイン
mysql> delete from mysql.user where user=''; #空ユーザ削除
mysql> grant
select,insert,delete,update,create,drop,file,alter,index on *.* to ユーザ名
identified by 'パスワード'; #任意のユーザ追加
mysql> flush privileges; #仕上げ
mysql> exit
その他mysql内での操作例
#DB選択
mysql> use mydb;
#DB削除
mysql> drop mydb;
#使用可能なDB一覧
mysql> show databases;
#現在どのユーザで接続しているか確認
mysql> select user();
#ユーザ一覧
mysql> use mysql;
mysql> select host,user from user;
#ユーザ「myuser」について許可コマンド、
localhostからのみ受け付け、mydbのみ操作可能、パスワード「mypass」で認証、にする権限設定(grant)
mysql> grant select,insert,update,delete,index,create on mydb.* to
myuser@localhost identified by 'mypass';
#接続者のパスワード変更
mysql> set password=password('パスワード');
#特定ユーザのパス
ワード変更
mysql> set password for myuser@localhost=password('パスワード');
#全体に対する権限削除
(revoke)
mysql> revoke all on *.* from myuser@localhost;
#特定のDBに対する
権限削除(revoke)
mysql> revoke select,delete on mydb.* from myuser@localhost;
#ユーザの権限表示
(要チェック)
mysql> show grants for myuser@localhost;
#ユーザの削除
mysql> drop user myuser@localhost;
|
/etc/my.cnfの設定。以下のような感じに設定。
[mysqld]
default-character-set = utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
[client]
character-sets-dir=/usr/local/mysql/share/mysql/charsets
【phpMyAdmin】
DBの管理はphpMyAdminでやる。非常にわかりやすくて
楽チン。というか必須アイテム。
phpMyAdminの設定要所(config.default.phpをconfig.inc.phpとしてコピー)は以下。
$cfg['Servers'][$i]['extension'] =
'mysqli';
$cfg['Servers'][$i]['user']
= 'root';
$cfg['Servers'][$i]['password'] = 'パスワード';
【PHP-5】
phpMyAdminから普通にベタに接続させるのに
--with-mysqli をつけて最適化。
sqlインジェクション避けに
magic_quotes_gpc = Off、SJISは使うな、だそう。
% ./configure
--with-apxs2=/usr/local/apache2/bin/apxs ¥
--enable-roxen-zts ¥
--enable-zend-multibyte ¥
--with-mysql=/usr/local/mysql ¥
--enable-mbstring ¥
--enable-mbregex ¥
--disable-ipv6 ¥
--disable-cgi ¥
--disable-dom ¥
--with-mysqli=/usr/local/bin/mysql_config
% make
% sudo make install
/etc/php.ini
/usr/local/lib/php.ini の設定。うろ覚えで以下の設定あたりをいじる。
variables_order = "EGPCS"
register_globals = Off
magic_quotes_gpc = Off
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
/etc/httpd/httpd.confの設定をいじる。phpを使いたい場所のディレクティブに設定追加。
AddType application/x-httpd-php .php
DirectoryIndex index.htm index.html index.shtml index.php
以上。
【素人的phpにおけるDB操作
例】
あくまで、素人的例。
MYDB---
食材---
なまえ、色、形 、味 (要素名)
リンゴ、赤、丸い、甘い
しし唐、緑、長い、辛い
梅干し、赤、丸い、すっぱい
というデータベースがあるとして、要素の中に「すっぱい」を含む「食材」を検索して表示。
$id = "すっぱい"; #検索語句
$dbcon = mysql_connect( "サーバ名" ,"接続ユーザ名","パスワード"); #接続
if ( $dbcon ) {
mysql_select_db ( 'MYDB' );
#DB
選択
$sql = "SET NAMES utf8"; # mysqlに送信するコマンド(使用するエンコーディング指定)
$result = mysql_query ( $sql );
if ( $result ) {
$sql = "SELECT * FROM '食材'
WHERE '味'='$id'"; #mysqlに送信するコマンド
$result = mysql_query (
$sql );
}
if ( $result ) {
$rownum = mysql_num_rows (
$result );
if ( $rownum ) {
$row =
mysql_fetch_row($result);
($d1,$d2,$d3,$d4) = $row;
}
}
}
print "食材名:「".$d1."」<br>";
print "色:「".$d2."」 形:「".d3."」 味:「".d4."」";
exit;
実行結果(たぶんこうなる)
食材名:「梅干し」
色:「赤」 形:「丸い」 味:「すっぱい」
|