人気ブログランキング |
mytips.exblog.jp ブログトップ

タグ:mysql ( 25 ) タグの人気記事
mysql datadir 移動
FreeBSD +  port の多くの場合で発生する問題のようだが、HDDのパーティション割当が小さい /varディレクトリがmysqlのデフォルトのDBデータのスペースの為、保存先を別のパーティションに切り替える必要が発生した。

元のdbスペース

/var/db/mysql

これを
/home/db/mysql
にディレクトリ(+パーミッションを維持して)コピー

su -
cd /home
mkdir db
cd db
cp -rp /var/db/mysql .

続いて、my.cnfを編集

vi /usr/local/etc/my.cnf

最終行に
datadir = /home/db/mysql
と書き加えるが
通常
mysqld_safe &
コマンドで起動しているので(推奨されている起動コマンド)、my.cnfへの追記は

[mysqld_safe]
datadir = /home/db/mysql
と2行をつくる(my.cnf上にコマンドに対応するセクション [ ] を宣言して、設定値を書き入れる書式)
by sato025 | 2010-02-05 01:22
openx Database Permissions
http://www.openx.org/en/docs/2.6/adminguide/System+requirements#Systemrequirements-DatabasePermissions

--------------
mySQLの構文では
--------------
GRANT
ALTER,
SELECT,
INSERT,
UPDATE,
DELETE,
CREATE,
CREATE TEMPORARY TABLES,
DROP,
INDEX,
LOCK TABLES ON openx.* TO [ユーザー名]@localhost IDENTIFIED BY '[パスワード];
by sato025 | 2009-08-19 18:07
MySQL InnoDB MyISAM エンジン確認コマンド
データベースを選択状態で

show table status;
または
show table status \G;
by sato025 | 2009-01-28 11:10
MySQL テーブル単位でCSVに出力
簡単なデータ出力方法(タブ区切り)

書き出し
SELECT * FROM table_name INTO OUTFILE 'hogehogehoge.tab';

読み込み
LOAD DATA INFILE "ファイル" INTO TABLE テーブル名;
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;

※FILEの権限が無いと INTO OUTFILEは実行できないので、rootユーザでやるか、Grantで利用ユーザに権限を設定する


自分のMacなら以下に保存される
/opt/local/var/db/mysql5/[database name]/

FreeBSDなら
/var/db/mysql
by sato025 | 2008-11-12 10:41
MySQL 現在のGRANT
show grants for [見たいユーザ]@localhost;
show grants for root@localhost;





MySQL5.1 GRANTの説明ページ
by sato025 | 2008-11-12 10:33
mysql 不要なデータ容量を消す (バイナリログの削除)
大量のデータinsertなど行うとDB自体の領域の他、mysql-bin.0000XX などのバイナリログが保存されて、容量を大量に使ってします。
おそらく放置しても自動的に削除はされない

以下のコマンドをrootなどの権限で使うと
/var/db/mysql 以下のバイナリログを消す事ができる。


mysql-bin.index
も合わせて消さないと、だめ。

mysqlにログインして
PURGE MASTER LOGS BEFORE '2008-11-11 09:00:00';
by sato025 | 2008-11-11 10:48
FreeBSD7にphp + mysqlをportでセットアップ


バリアント(オプション)の設定などに、クセがあるのでconfigファイルへの書き込みなどを事前に行ってからportinstallする必要があります。
さらにphpのインストールは、驚くことにconfigを編集しないと、apacheで利用できない設定がデフォルトになっています。

1)phpをapacheで使うことを設定する
phpのMakefileを編集(orgをコピーしておくこと)
vi /usr/ports/lang/php5/Makefile

OPTIONS= の中の
APACHE "Build Apache module" off

APACHE "Build Apache module" on
に変更

備考-----------------------
portsのソースのある場所を検索する方法
cd /usr/ports
make search name=apache
など
----------------------

■apache22のインストール
su
cd /usr/ports
portinstall www/apache22

起動を設定
echo 'apache22_enable="YES" >> /etc/rc.conf
echo 'apache22_http_accept_enable="YES"' >> /etc/rc.conf

httpd.confを編集
バックアップしておく
cp /usr/local/etc/apache22/httpd.conf /usr/local/etc/apache22/httpd.conf.org
vi /usr/local/etc/apache22/httpd.conf

それぞれ別の行なので、ディレクティブを確認して適切な場所に下の2行を書き込む
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html index.htm


■php5のインストール
portinstall lang/php5

●php.iniを設定(コメントを外すなど)
バックアップ
cp /usr/local/etc/php.ini-recommended /usr/local/etc/php.ini

変更箇所
display_errors = On
include_path = ".:/usr/local/share/pear:/usr/local/www/apache22/data/libs" (←自分の設定で)
allow_url_include = On
(↑モバイル版 Google Adsenseを使う場合、ネット越しのphpを読み込むので)

mbstring.language = Japanese
(↑クエリーパラメータでエンコードした日本語がある場合の内部処理の挙動が変わります。)
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = 12307;




■phpエクステンションをインストール
これでmysqlと連携できる

cd /usr/ports
portinstall lang/php5-extensions

終わったら

vi /var/db/ports/php5-extensions/options
として
WITH_MYSQL=true
を確認

■mysql初期化
cd /usr/local/bin
./mysql_install_db
cd /var/db
chown -R mysql:mysql mysql
起動設定
echo 'mysql_enable="YES"' >> /etc/rc.conf

configをつくる
cp /usr/local/share/mysql/my-medium.cnf /usr/local/etc/my.cnf
chmod 644 /usr/local/etc/my.cnf
by sato025 | 2008-10-29 12:31 | FreeBSD
組み合わせ、順列、生成メモ
tableAにキーワードAをいれる
tableBにキーワードBをいれる
CROSS JOINで組み合わせをすべて出力
select A.text, B.text from A cross join B;
select A.text, B.text from A cross join B where A.text < B.text;
-----------
mysqlで簡単に出力する方法

mysql -uORE -p ORE_DB > hoge.txt

[プロンプトはなにも返らないけど続けて]
select * from ORE_TABLE
quit


mysql -uroot -p MyDB > hoge.txt
select kw_spot.text, kw_area.text from kw_spot cross join kw_area;
quit

-----------
hoge.txtに出力したら
コマンドで、
cat hoge.txt |sort |uniq |sort > all_cross_kw.txt




--------------------------------------
--------------------------------------
--------------------------------------

テーブルに同じデータをいれている場合には、単一テーブルと同じ結果
厳格な組み合わせにはなっていない。
出稿キーワードの生成など、おおざっぱな組み合わせデータに利用できる

■2種■

異なるテーブルから重複のぞく組合せ(順序こみ)
SELECT kw_1.text AS k1, kw_2.text AS k2 FROM kw_1 , kw_2 WHERE kw_1.text <> kw_2.text;

異なるテーブルからユニークな組合せ
SELECT kw_1.text AS k1, kw_2.text AS k2 FROM kw_1 , kw_2 WHERE kw_1.text < kw_2.text;



同じテーブルから重複のぞく組合せ(順序こみ)
SELECT k1.text AS k1, k2.text AS k2 FROM kw_1 k1, kw_1 k2 WHERE k1.text <> k2.text;


同じテーブルからユニークな組合せ
SELECT k1.text AS k1, k2.text AS k2 FROM kw_1 k1, kw_1 k2 WHERE k1.text < k2.text;




■3種■

異なるテーブルから重複のぞく組合せ(順序こみ)
SELECT kw_1.text AS k1, kw_2.text AS k2, kw_3.text AS k3 FROM kw_1 , kw_2, kw_3 WHERE kw_1.text <> kw_2.text AND kw_2.text <> kw_3.text AND kw_1.text <> kw_3.text;


異なるテーブルからユニークな組合せ
SELECT kw_1.text AS k1, kw_2.text AS k2, kw_3.text AS k3 FROM kw_1 , kw_2, kw_3 WHERE kw_1.text < kw_2.text AND kw_2.text < kw_3.text AND kw_1.text < kw_3.text;


同じテーブルから重複のぞく組合せ(順序こみ)
SELECT k1.text AS k1, k2.text AS k2 , k3.text AS k3 FROM kw_1 k1, kw_1 k2, kw_1 k3 WHERE k1.text <> k2.text AND k2.text <> k3.text AND k1.text <> k3.text;

同じテーブルからユニークな組合せ
SELECT k1.text AS k1, k2.text AS k2, k3.text AS k3 FROM kw_1 k1, kw_1 k2, kw_1 k3 WHERE k1.text < k2.text AND k2.text < k3.text AND k1.text < k3.text;



■3種■
3つすべてに異なるデータを入れる

異なるテーブルから重複のぞく組合せ(順序こみ)
SELECT kw_1.text AS k1, kw_2.text AS k2, kw_3.text AS k3 FROM kw_1 , kw_2, kw_3 WHERE kw_1.text <> kw_2.text AND kw_2.text <> kw_3.text AND kw_1.text <> kw_3.text;

+------+------+------+
| k1 | k2 | k3 |
+------+------+------+
| 1 | A | あ |
| 2 | A | あ |
| 3 | A | あ |
| 1 | B | あ |
| 2 | B | あ |
| 3 | B | あ |
| 1 | C | あ |
| 2 | C | あ |
| 3 | C | あ |
| 1 | A | い |
| 2 | A | い |
| 3 | A | い |
| 1 | B | い |
| 2 | B | い |
| 3 | B | い |
| 1 | C | い |
| 2 | C | い |
| 3 | C | い |
| 1 | A | う |
| 2 | A | う |
| 3 | A | う |
| 1 | B | う |
| 2 | B | う |
| 3 | B | う |
| 1 | C | う |
| 2 | C | う |
| 3 | C | う |
+------+------+------+
27

異なるテーブルからユニークな組合せ
SELECT kw_1.text AS k1, kw_2.text AS k2, kw_3.text AS k3 FROM kw_1 , kw_2, kw_3 WHERE kw_1.text < kw_2.text AND kw_2.text < kw_3.text AND kw_1.text < kw_3.text;
+------+------+------+
| k1 | k2 | k3 |
+------+------+------+
| 1 | A | あ |
| 2 | A | あ |
| 3 | A | あ |
| 1 | A | い |
| 2 | A | い |
| 3 | A | い |
| 1 | A | う |
| 2 | A | う |
| 3 | A | う |
+------+------+------+
9 rows in set (0.00 sec)


1つのテーブルに、異なる値をいれる


同じテーブルから重複のぞく組合せ(順序こみ)
SELECT k1.text AS k1, k2.text AS k2 , k3.text AS k3 FROM kw_1 k1, kw_1 k2, kw_1 k3 WHERE k1.text <> k2.text AND k2.text <> k3.text AND k1.text <> k3.text;


同じテーブルからユニークな組合せ
SELECT k1.text AS k1, k2.text AS k2, k3.text AS k3 FROM kw_1 k1, kw_1 k2, kw_1 k3 WHERE k1.text < k2.text AND k2.text < k3.text AND k1.text < k3.text;
----------------------
以上、条件の組合せなので、値が同じになってしまうことがある。
これを除くためにGROUP BY を最後に追加

同じテーブル
SELECT k1.text AS k1, k2.text AS k2, k3.text AS k3 FROM kw_1 k1, kw_1 k2, kw_1 k3 WHERE k1.text < k2.text AND k2.text < k3.text AND k1.text < k3.text group by k1,k2,k3;

----------------------
各テーブルに、同じ値が重複しない場合は、Where句はいらない
異なるテーブル
SELECT
kw_1.text AS k1
, kw_2.text AS k2
, kw_3.text AS k3
FROM
kw_1
,kw_2
,kw_3

----------------------
各テーブルに、同じ値が重複している場合は、Whereが必要

SELECT
kw_1.text AS k1
, kw_2.text AS k2
, kw_3.text AS k3
FROM
kw_1
,kw_2
,kw_3
WHERE
kw_1.text <> kw_2.text
AND kw_2.text <> kw_3.text
AND kw_1.text <> kw_3.text

これはダメ
各テーブルに重複が存在してしまう場合 where < は使うと抜ける場合がある

SELECT
kw_1.text AS k1
, kw_2.text AS k2
, kw_3.text AS k3
FROM
kw_1
,kw_2
,kw_3
WHERE
kw_1.text < kw_2.text
AND kw_2.text < kw_3.text
AND kw_1.text < kw_3.text



select concat(kw_1.text, ' ', kw_2.text, ' ', kw_3.text, ' ** 20 ** ' , kw_1.url) as str from kw_1 , kw_2, kw_3 where kw_1.text > kw_2.text;

SELECT
concat(kw_1.text, ' ', kw_2.text, ' ', kw_3.text, ' ** 20 ** ' , kw_1.url)
FROM
kw_1
,kw_2
,kw_3

SELECT concat(kw_1.text, ' ', kw_2.text, ' ', kw_3.text, ' ** 20 ** ' , kw_1.url) FROM kw_1 ,kw_2 ,kw_3
by sato025 | 2008-10-23 15:07
カラム名変更
original を original_idに変更。型の指定も必須(descで元の型をしらべて)
alter table song change original original_id int(11);

カラムにデフォルトを追加
alter table song alter iscover set default 0;
by sato025 | 2008-05-19 00:10
[MySQL]重複行の削除
data_tableからdateとtypeが重複している行を削除

delete data_table from data_table inner join (
select id from data_table inner JOIN (
select date,type from (
select id,count(*) c,date,type from data_table group by date,type) as u where u.c = 2
) res ON data_table.date = res.date AND data_table.type = res.type
) d
ON d.id = data_table.id


u.c = 2なので、2件のものを削除
uc >= 2なら以上
by sato025 | 2008-03-04 11:06
|
検索
タグ
カテゴリ
以前の記事
最新のトラックバック
Tool
from adgj.net wiki ..
Googleウェブマスタ..
from i yahoo i.com:..
[Mac] NAV fo..
from あるネットワーク管理者(よっ..
ライフログ
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧


var gaJsHost = (("https:" == doc ument.loc ation.protocol) ? "https://ssl." : "http://www.");doc ument.write(unesc ape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));var pageTracker = _gat._getTracker("UA-103429-5");pageTracker._trackPageview();