Category - MySQL

MySQL 旧バージョンでのdump取り込み

grep -l 'utf8mb4_0900_ai_ci' xxx.dmp | xargs sed -i.bak -e 's/utf8mb4_0900_ai_ci/utf8mb4_general_ci/g'

read more

CentOS 8 MySQL インストール後


mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+

mysql> set global validate_password.length=4;
Query OK, 0 rows affected (0.00 sec)

mysql> set global validate_password.policy=LOW;
Query OK, 0 rows affected (0.00 sec)


mysql> show variables like 'validate_password%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 4 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

> CREATE USER 'USER'@'localhost' IDENTIFIED BY 'PASSWORD';
> GRANT ALL ON *.* TO 'USER'@'localhost' WITH GRANT OPTION;
> FLUSH PRIVILEGES;


read more

MySQL 日付 0000-00-00 00:00:00 対応

ERROR 1292 (22007) at line 127: Incorrect datetime value: '0000-00-00 00:00:00' for column 'created_at' at row 1

mysql> SET GLOBAL sql_mode = 'modes';
ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'modes'
mysql> SET SESSION sql_mode = 'modes';
ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'modes'

こんなエラーが出てしまった場合
my.conf で指定すると確実

[mysqld]
sql_mode = ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

read more

MySQLで文字コードを指定しデータベース作成

文字コード utf8で作成
mysql> CREATE DATABASE 【データベース名】 DEFAULT CHARACTER SET utf8;

文字コード utf8mb4で作成
mysql> CREATE DATABASE 【データベース名】 DEFAULT CHARACTER SET utf8mb4;

read more

ERROR 1071 (42000) at line 25: Specified key was too long; max key length is 767 bytes 回避

ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

innodb_large_prefix を有効にする

mysql> set global innodb_file_format = BARRACUDA;
mysql> set global innodb_large_prefix = ON;

read more

MySQL テーブルのリペアをコマンドで行う

こんな風にする

# myisamchk --silent --force --fast --update-state -variable-name=value /usr/local/mysql/var/db/table_name.MYI

read more

MySQL mroongaのインストール

MySQL全文検索エンジンmroongaのインストール UTF-8以外でも利用可能

さくらVPS Cent OS6 MySQL 5.1.67 でのイントール

MySQLをyumでインストールして起動したまま

rpm で一気にインストール

# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# yum install -y mysql-mroonga
# yum install -y groonga-tokenizer-mecab
# yum install -y install groonga-normalizer-mysql

MySQLにログイン ennginesを確認

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
5 rows in set (0.00 sec)

mroongaがまだないのでプラグインをインストール

mysql> INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';

確認

mysql> show engines;
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
| mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO |
| InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
+------------+---------+------------------------------------------------------------+--------------+------+------------+
6 rows in set (0.00 sec)


コマンド、もしくはphpMyAdmmin の「操作」でテーブルのストレートエンジンを 「mroonga」 に指定。


動作確認
# mysql -uroot -p
mysql> create database sennatest;
mysql> create table articles(
-> id int unsigned not null auto_increment primary key,
-> body text,
-> fulltext(body)
-> );
mysql> insert into articles values (null,"郵貯民営化は重要な問題だと思う "), (null,"スローライフを志向するiPodの強み - CNET Japan"), (null,"HTML, CSS, Photoshopを同時に学べるサンプル付きデザイン記事:Goodpic"), (null,"jazzanovaの日記 - 現在顧問弁護士に相談中であり、対応についても検討中"), (null,"mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に?"), (null,"むだづかいにっき♂:ネット上で議論を仕掛ける事について"), (null,"はてな perl ハッカーの方々にお聞きします。近頃ますます良い感じなperlですが、どのような開発環境で開発していますでしょうか。"), (null,"シナトラ千代子 - 投げ銭が飛び交うなかでダイアリーに立てこもる、という意味。"), (null,"Going My Way: Skypeの会話をPodcast用に録音する場合の設定方法"), (null,"Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。"), (null,"Ringo's Weblog: googleと競合しない方法2 "), (null,"Moleskin Diary - 投げ銭よりたれ銭"), (null,"第38回 海外メディアが伝えた小泉・郵政解散劇の評判 - nikkeibp.jp - 立花隆の「メディア ソシオ-ポリティクス」"), (null,"ほその日記 - フォームが変更された事を知る"), (null,"総選挙はてなと公職選挙法:北海道に住む国家公務員日記 "), (null,"はてな、政党を株式に見立てて総選挙結果を予測 - CNET Japan");

mysql> select * from articles where match (body) against ('mixi');
+----+---------------------------------------------------------------------------------------------------------------+
| id | body |
+----+---------------------------------------------------------------------------------------------------------------+
| 5 | mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に? |
| 10 | Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。 |
+----+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

全文検索ができることを確認

read more

MySQL テーブル文字コード変更

テーブルの文字コード
ALTER TABLE テーブル名 CHARSET=utf8;

カラムも含めて
ALTER TABLE テーブル名 CONVERT TO CHARACTER SET utf8;

read more

Can't load '/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so'

DBD-mysql-4.022 のコンパイル中にエラーになる場合

Can't load '/usr/local/lib64/perl5/auto/DBD/mysql/mysql.so'

ソースからインストールしたMySQLを見に行っていないのが原因

# vi /etc/ld.so.conf.d/mysq.conf

/usr/local/mysql/lib
/usr/local/mysql/lib/mysql

# ldconfig

/usr/local/mysql/bin/mysql_config --libs
で、吐き出されたデータをメモ。
 /usr/local/mysql/bin/mysql_config --cflags
で、吐き出されたデータをメモします。

コマンド生成
perl Makefile.PL --cflags=「出力結果1」 "--libs=「出力結果2」"

# perl Makefile.PL --cflags=-I/usr/local/mysql/include/mysql "--libs=-L/usr/local/mysql/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm"
# make
# make install

read more

MySQLインストール時のエラー

checking for termcap functions library... configure: error: No curses/termcap library found


yum install ncurses-devel で解決

read more

Apacheのエラー

こんなエラーが出た場合

Syntax error on line 238 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/libphp5.so into server: /usr/local/apache2/modules/libphp5.so: symbol gzdopen, version libmysqlclient_15 not defined in file libmysqlclient.so.15 with link time reference

PHPを再インストール

read more

Tritonn-MySQLインストール時のエラー

sed '/^#/ s|y\.tab\.c|sql_yacc.cc|' y.tab.c >sql_yacc.cct && mv sql_yacc.cct sql_yacc.cc
sed: y.tab.cを読み込めません: そのようなファイルやディレクトリはありません

# yum install bison
# ldconfig

read more

MySQL Server インストール 設定

インストール
# yum install mysql-server

初期化
# mysql_install_db --user=mysql

起動
# mysqld_safe &

ユーザー設定
# mysqladmin -u root password PASSWORD

停止
# /etc/init.d/mysqld stop

起動
# /etc/init.d/mysqld start

read more

MySQL文字化けの解消

my.cnf

[mysqld]
default-character-set=utf8
skip-character-set-client-handshake

read more

phpMyAdminでレコードの更新、削除、DUMPができない場合

# chmod 777 -R /var/lib/php/session/

セッション書き込みディレクトリに書き込めない場合に動作不良が起こるようです。

read more

MySQL FULLTEXT + Ngram

MySQL FULLTEXT + Ngram : LIKE検索より数十倍高速な、お手軽 日本語全文検索 について

http://www.tatamilab.jp/rnd/archives/000390.html

Perl , PHP のN-gram変換用モジュール配布中

read more

MySQL order by の null

ある項目を null を上位、または下位にしてorder by したいとき

ordr by ( 項目名 is null ) , 項目 DESC

こんな風に

read more

error: No curses/termcap library found

MySQLのconfigure途中で

error: No curses/termcap library found

ライブラリをインストールして解決
yum install ncurses-devel

read more

MySQL テーブルが壊れた場合


mysql> check table TABLE_NAME;
+-------------------------+-------+----------+-----------------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+-------------------------+-------+----------+-----------------------------------------------------------+
| TABLE_NAME | check | warning | 16 clients are using or haven't closed the table properly |
| TABLE_NAME | check | error | Found 101 keys of 88579 |
| TABLE_NAME | check | error | Corrupt |
+-------------------------+-------+----------+-----------------------------------------------------------+
3 rows in set (0.04 sec)

こんな場合

MyISAM形式のデータベースのリペアは myisamchk コマンドで行います。
直前にMySQLがクラッシュして他のホストにてフェイルオーバーした場合などは、テーブルが破損する恐れがあります。

ファイルをチェックするには –fast オプションとファイル名。

$ myisamchk –fast /var/lib/mysql/sample/table.MYI
チェックでエラーになったファイルをリペアするには「–recover」を使います。

$ myisamchk –recover /var/lib/mysql/sample/table.MYI
リペアに失敗した場合は「–safe-recover」を試します。

$ myisamchk –safe-recover /var/lib/mysql/sample/table.MYI

read more

MySQL チューニング

今のところ /etc/my.cnf で設定している値

# 最大接続数
max_connections = 512
set-variable = wait_timeout=60

# ファイルキャッシュ
open_files=2048
table_cache=512

read more

MySQL 最大接続数変更

こんな風にする

mysql> show variables like '%connection%';
+--------------------------+-----------------+
| Variable_name | Value |
+--------------------------+-----------------+
| character_set_connection | utf8 |
| collation_connection | utf8_general_ci |
| max_connections | 100 |
| max_user_connections | 0 |
+--------------------------+-----------------+
4 rows in set (0.00 sec)

mysql> set global max_connections=512;

Query OK, 0 rows affected (0.00 sec)

mysql> show variables like '%connection%';
+--------------------------+-----------------+
| Variable_name | Value |
+--------------------------+-----------------+
| character_set_connection | utf8 |
| collation_connection | utf8_general_ci |
| max_connections | 512 |
| max_user_connections | 0 |
+--------------------------+-----------------+
4 rows in set (0.00 sec)

read more

MySQL ログ出力

/etc/my.cnf

記述追加
[mysqld]
log=myquery.log

mysqld_safe --log=myquery.log &

MySQLインストールディレクトリ/var/myquery.log が出力されます

read more

MySQL Got a packet bigger than 'max_allowed_packet' bytes

dumpファイルをインポートしようとしてこんなエラーが出た場合

ERROR 1153 (08S01) at line 3379: Got a packet bigger than 'max_allowed_packet' bytes

/etc/my.cnf 編集
max_allowed_packet=128M

mysql を再起動

read more

Tritonn-mysql インストール時のエラー

Cent OS 5 でTritonn-mysql コンパイル時のエラー

checking if struct dirent has a d_ino member... yes
checking if struct dirent has a d_namlen member... no
checking whether signal handlers are of type void... yes
checking wctype.h usability... yes
checking wctype.h presence... yes
checking for wctype.h... yes
checking wchar.h usability... yes
checking wchar.h presence... yes
checking for wchar.h... yes
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking for mbsrtowcs... yes
checking for mbrtowc... yes
checking for mbrlen... yes
checking for wctomb... yes
checking for wcwidth... yes
checking for wcsdup... yes
checking for mbstate_t... yes
checking for nl_langinfo and CODESET... yes
checking for tgetent in -lncurses... no
checking for tgetent in -lcurses... no
checking for tgetent in -ltermcap... no
checking for tgetent in -ltinfo... no
checking for termcap functions library... configure: error: No curses/termcap library found

# yum install ncurses-devel コマンドでncursesライブラリをインストールする

Dependencies Resolved

===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Installing:
ncurses-devel i386 5.5-24.20060715 base 1.6 M

Transaction Summary
===============================================================================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)

Total download size: 1.6 M
Is this ok [y/N]: y
Downloading Packages:
ncurses-devel-5.5-24.20060715.i386.rpm 19% [======= ] 0.0 B/s | 320 kB --:-- ETA
ncurses-devel-5.5-24.20060715.i386.rpm 35% [=============- ] 415 kB/s | 584 kB 00:02 ETA
ncurses-devel-5.5-24.20060715.i386.rpm 55% [=====================- ] 459 kB/s | 928 kB 00:01 ETA
ncurses-devel-5.5-24.20060715.i386.rpm 75% [============================= ] 496 kB/s | 1.2 MB 00:00 ETA
ncurses-devel-5.5-24.20060715.i386.rpm 95% [===================================== ] 535 kB/s | 1.6 MB 00:00 ETA
ncurses-devel-5.5-24.20060715.i386.rpm | 1.6 MB 00:01
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : ncurses-devel [1/1]

Installed: ncurses-devel.i386 0:5.5-24.20060715
Complete!

これでOK

read more

Tritonn-mysql インストール

TritonnはMySQLから全文検索エンジンSennaを利用可能にするための改造を行うプロジェクトです
現在はsenna, mecabオプションを付けるだけで全文検索用のMySQLがインストールできるパッケージをリリースしています
これを使うと以前ライブラリを別々にインストールしてパッチを当てたりする作業が無くなります
動作も安定しているようなのでこちらをインストールして使っています

以下のURLよりダウンロード
mecabはインストールされている前提
Senna : http://sourceforge.jp/projects/senna/files/
Tritonn : http://sourceforge.jp/projects/tritonn/

sennaインストール
tar xvzf senna-1.1.4.tar.gz
cd senna-1.1.4
./configure --prefix=/usr
make
make install


tritonnインストール
http://sourceforge.jp/projects/tritonn/releases?package_id=5498から
tritonn-1.0.12-mysql-5.0.67.tar.gzをダウンロードする

tar xvzf tritonn-1.0.12-mysql-5.0.67.tar.gz
./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-senna --with-mecab --prefix=/usr/local/mysql
make
make install


ls /usr/local/
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
/usr/local/mysql/bin/mysqld_safe &
ps ax
/usr/local/mysql/bin/mysqlshow
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
/usr/local/mysql/bin/mysqladmin -u root password PASSWORD
/etc/init.d/mysql stop
/etc/init.d/mysql start

動作確認
# mysql -uroot -p
mysql> create database sennatest;
mysql> create table articles(
-> id int unsigned not null auto_increment primary key,
-> body text,
-> fulltext(body)
-> );
mysql> insert into articles values (null,"郵貯民営化は重要な問題だと思う "), (null,"スローライフを志向するiPodの強み - CNET Japan"), (null,"HTML, CSS, Photoshopを同時に学べるサンプル付きデザイン記事:Goodpic"), (null,"jazzanovaの日記 - 現在顧問弁護士に相談中であり、対応についても検討中"), (null,"mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に?"), (null,"むだづかいにっき♂:ネット上で議論を仕掛ける事について"), (null,"はてな perl ハッカーの方々にお聞きします。近頃ますます良い感じなperlですが、どのような開発環境で開発していますでしょうか。"), (null,"シナトラ千代子 - 投げ銭が飛び交うなかでダイアリーに立てこもる、という意味。"), (null,"Going My Way: Skypeの会話をPodcast用に録音する場合の設定方法"), (null,"Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。"), (null,"Ringo's Weblog: googleと競合しない方法2 "), (null,"Moleskin Diary - 投げ銭よりたれ銭"), (null,"第38回 海外メディアが伝えた小泉・郵政解散劇の評判 - nikkeibp.jp - 立花隆の「メディア ソシオ-ポリティクス」"), (null,"ほその日記 - フォームが変更された事を知る"), (null,"総選挙はてなと公職選挙法:北海道に住む国家公務員日記 "), (null,"はてな、政党を株式に見立てて総選挙結果を予測 - CNET Japan");

mysql> select * from articles where match (body) against ('mixi');
+----+---------------------------------------------------------------------------------------------------------------+
| id | body |
+----+---------------------------------------------------------------------------------------------------------------+
| 5 | mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に? |
| 10 | Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。 |
+----+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

全文検索ができることを確認

read more

MySQL query_cache_size

現在の状態を確認
#mysqladmin -uroot -p variables | grep cache

/etc/my.cnf に追加
[mysqld]
max_connections=450
thread_cache=450
table_cache=450
query_cache_size = 32M

MySQL再起動

運用状態に合わせて調整

read more

MySQL max_connections

Too many connections エラー


MySQL に接続しようとして Too many connections エラーが発生する場合は、すでに mysqld サーバに接続している max_connections クライアントが存在しています。

デフォルト(100)より多い接続を行う場合は、max_connections 変数の値を 100 より大きくして、mysqld を再起動する必要があります。

「mysqladmin -uroot -p variables | grep max_connections」コマンドで確認できます

/etc/my.cnf の[mysqld] 以下の変数定義に「max_connections=500」を追加して再起動

# mysqladmin -uroot -p variables | grep max_connections
| max_connections | 500

他、確認コマンド
mysqladmin -uroot -p extended-status | egrep 'Max|Threads'

read more

PDO_MYSQLインストール

# pecl install pdo_mysql でうまくいかない場合のメモ。

php, mysqlをソースからインストールしている場合によく起こります。

symbol lookup error: /usr/local/lib/php/20060613/pdo_mysql.so: undefined symbol: php_pdo_declare_long_constant.

こんなエラーの回避。
まずPHPの再インストール。'--disable-pdo' のオプションをつけてコンパイル。
デフォルトでPDOが有効になっているためうまく入らないようです。
php.iniは昔のままでOKです。

PHPのコンパイルが終わったらPDO, PDO_MYSQLをソースからインストール。
wget http://pecl.php.net/get/PDO-1.0.3.tgz
tar xvzf PDO-1.0.3.tgz
cd PDO-1.0.3
phpize
./configure
make
make install

wget http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz
tar xvzf PDO_MYSQL-1.0.2.tgz
cd PDO_MYSQL-1.0.2
phpize
./configure --with-pdo-mysql=/usr/local/mysql // mysqlをインストールしたディレクトリ
make
make install

php.iniに
extension=pdo.so
extension=pdo_mysql.so を追加。
php -v でエラーがなければOK。

phpinfo(); で PDO, pdo_mysql の項目があることを確認する。

read more

windows PHP MySQL設定

windowsでphpがmysqlを認識しない場合

php.ini 内のextension_dir が空のことがあります

extension_dir = "C:/php5/ext"

こんな風に書き換えてみる

read more

Cent OS 5 PHP5.2.5インストール前作業

yum install libxml2-devel
yum install libpng-devel
yum install libjpeg-devel


./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-magic-quotes --enable-mbregex --enable-mbstring --enable-zend-multibyte --with-mysql=/usr/local/mysql --with-zlib --with-gd --with-gettext --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-pdo-mysql =/usr/local/mysql

read more

readline

mysql コンパイルで --without-readline のオプションでエラーが出る場合。

readline ライブラリをインストールしなおし

wget ftp://ftp.gnu.org/gnu/readline/readline-4.3.tar.gz
tar xvzf readline-4.3.tar.gz
cd readline-4.3
./configure
make
make install
ldconfig

read more

fulltext index 追加

alter table テーブル名 add fulltext( カラム名 );

カラム名の属性はtext

read more

Senna + MySQL コンパイル

./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-named-curses-libs=/usr/lib/libncurses.so.5 --without-readline --with-senna=/usr/local/include/senna/ --prefix=/usr/local/mysql


「--with-senna=/usr/local/include/senna/」で senna.h の所在を指定していないとエラーになることがあります。

read more

mysqldumpで文字コード(charset)を指定

mysqldump DB_NAME --set-charset=ujis > DB_NAME.sql

read more

Senna + MySQL インストール

sennaインストール後、パッチを当ててMySQLをコンパイル後、インストール
senna/bindings/mysql以下にMySQLのバージョンが指定されているようです

ダインロード 
Senna : http://sourceforge.jp/projects/senna/files/
MySQL : http://downloads.mysql.com/archives.php

tar xvzf senna-0.8.2.tar.gz
cd senna-0.8.2
./configure --prefix=/usr
make
make install
cat /var/senna/senna.conf
cd ..
tar xvzf mysql-5.0.24a.tar.gz
cd mysql-5.0.24a
patch -p1 < ../senna-0.8.2/bindings/mysql/mysql-5.0.24a.senna.diff
patch -p1 < ../senna-0.8.2/bindings/mysql/mysql-5.0.24a.senna.2ind.diff
libtoolize -c -f
aclocal-1.9
autoheader
automake-1.9 -c -a -i
autoconf
touch sql/sql_yacc.yy
./configure --with-charset=utf8 --with-extra-charsets=all --with-mysqld-user=mysql --with-named-c
urses-libs=/usr/lib/libncurses.so.5 --without-readline --with-senna --prefix=/usr/local/mysql
make
make install
ls /usr/local/
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
/usr/local/mysql/bin/mysql_install_db --user=mysql
/usr/local/mysql/bin/mysqld_safe &
ps ax
/usr/local/mysql/bin/mysqlshow
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
/usr/local/mysql/bin/mysqladmin -u root password PASSWORD
/etc/init.d/mysql stop
/etc/init.d/mysql start

動作確認
# mysql -uroot -p
mysql> create database sennatest;
mysql> create table articles(
-> id int unsigned not null auto_increment primary key,
-> body text,
-> fulltext(body)
-> );
mysql> insert into articles values (null,"郵貯民営化は重要な問題だと思う "), (null,"スローライフを志向するiPodの強み - CNET Japan"), (null,"HTML, CSS, Photoshopを同時に学べるサンプル付きデザイン記事:Goodpic"), (null,"jazzanovaの日記 - 現在顧問弁護士に相談中であり、対応についても検討中"), (null,"mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に?"), (null,"むだづかいにっき♂:ネット上で議論を仕掛ける事について"), (null,"はてな perl ハッカーの方々にお聞きします。近頃ますます良い感じなperlですが、どのような開発環境で開発していますでしょうか。"), (null,"シナトラ千代子 - 投げ銭が飛び交うなかでダイアリーに立てこもる、という意味。"), (null,"Going My Way: Skypeの会話をPodcast用に録音する場合の設定方法"), (null,"Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。"), (null,"Ringo's Weblog: googleと競合しない方法2 "), (null,"Moleskin Diary - 投げ銭よりたれ銭"), (null,"第38回 海外メディアが伝えた小泉・郵政解散劇の評判 - nikkeibp.jp - 立花隆の「メディア ソシオ-ポリティクス」"), (null,"ほその日記 - フォームが変更された事を知る"), (null,"総選挙はてなと公職選挙法:北海道に住む国家公務員日記 "), (null,"はてな、政党を株式に見立てて総選挙結果を予測 - CNET Japan");

mysql> select * from articles where match (body) against ('mixi');
+----+---------------------------------------------------------------------------------------------------------------+
| id | body |
+----+---------------------------------------------------------------------------------------------------------------+
| 5 | mixi非公式ニュースサイト - mixiの問題人物Kusakabe氏、強制退会に? |
| 10 | Kusakabeさんがmixiの一部?を賑わしている。彼にmixi強制退会が言い渡されたのだ。 |
+----+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

全文検索ができることを確認

read more

MySQL コマンド 結果出力を縦に表示する

select * from [TABLENAME] \G;

|\G を最後につける。

※mysqlに接続する際に-Eオプションを渡してもよい

mysql -u[USER] -p [DBNAME] -E;

read more

MySQL コマンド入力の際にTabキーを利かせる設定

/usr/local/etc/rc.d/mysql-server stop

/etc/my.cnf
[mysql]
auto-rehash

/usr/local/etc/rc.d/mysql-server start

read more

MySQL ユーザーのパスワード変更

/*ユーザ追加*/
insert into user (Host,User,Password)values('localhost','usename',password('password'));

/*権限付加*/
update user set
Select_priv= 'Y' ,
Insert_priv= 'Y' ,
Update_priv= 'Y' ,
Delete_priv= 'Y' ,
Create_priv= 'Y' ,
Drop_priv= 'Y' ,
Reload_priv= 'Y' ,
Shutdown_priv= 'Y' ,
Process_priv= 'Y' ,
File_priv= 'Y' ,
Grant_priv= 'Y' ,
References_priv= 'Y' ,
Index_priv= 'Y' ,
Alter_priv= 'Y' ,
Show_db_priv= 'Y' ,
Super_priv= 'Y' ,
Create_tmp_table_priv= 'Y' ,
Lock_tables_priv= 'Y' ,
Execute_priv= 'Y' ,
Repl_slave_priv= 'Y' ,
Repl_client_priv= 'Y' ,
Create_view_priv= 'Y' ,
Show_view_priv= 'Y' ,
Create_routine_priv= 'Y' ,
Alter_routine_priv= 'Y' ,
Create_user_priv= 'Y' where User='hoge';

grant all on DBNAME.* to username@localhost identified by 'password';

/*password更新*/
update user set Password = password('hoge') where User = 'hoge';

/*更新*/
flush privileges;

read more

windows MYSQL インストール後のファイル書き換え

my.cnf

[client]
default-character-set=ujis

[mysqld]
default-character-set=ujis
character-set-server = ujis
collation-server = ujis_japanese_ci
skip-character-set-client-handshake

[mysqldump]
default-character-set=ujis

[mysql]
default-character-set=ujis

read more

AMP on a USB 設定

USBメモリ内に Apache + PHP + MySQL の開発環境を設定することができます。
これで外出先でのデモや開発が容易に行えます。

本家サイトはこちら。
http://www.firepages.com.au/php_usb.htm
   ちなみにこのサイトは数年前にApache + PHP + MySQL を一括でインストールするツールを配布していたサイトでした。 トレードマークのマイケルジャクソンに見覚えがありました。

php_usb というZIPファイルをダウンロードして解凍後、USBメモリにコピーします。
本家サイトどおりにやりました。
ディレクトリ構成はこうなります。

$usb:/
-------------start.bat
-------------pdrive/
------------------------php.ini
------------------------start.php
------------------------apache-2.0.50/
------------------------php-5.0.3/
------------------------mysql/
------------------------www/ *ドキュメントルート
------------------------sess/ *セッションデーターのための空ディレクトリ

私はApache, NySQLはWindowsにインストールしているものをそのままコピーしています。
Apache
C:\Program Files\Apache Group\Apache2以下を USB:\pdrive\apache-2.0.50以下にコピーして
conf ファイルのみ配布されているものに置き換えます。

MySQL
C:\Program Files\MySQL\MySQL Server 5.0以下を USB:\pdrive\mysql以下にコピーしました。

PHP
PHP本家サイトよりphp-5.0.3-Win32.zip をダウンロードして解凍後、USB:\pdrive\php-5.0.3にコピーしました。

これで準備はほぼ完了です。
しかしこのままでは動かなかったのでconfファイルの書き換えが必要でした。
こんな風にしてチェックしてみるといいでしょう。

USB:\pdrive\apache-2.0.50\conf\httpd.conf の56行目
「LoadModule ssl_module modules/mod_ssl.so」をコメントにします。
これはもともとインストールしていたApacheが apache_2.0.51-win32-x86-no_ssl.exe でSSL対応でなかったためと思われます。

またUSB:\pdrive\php.ini も修正していたほうがよさそうです。
「session.save_path = "\\pdrive\\sess"」をコメントに
 *phpMyAdminを使ったときにセッションをこのディレクトリに見に行って失敗していました。
   セッション保存領域は明示的にしないほうがよさそうです。

これが終わったら start.bat をダブルクリックして起動してみましょう。
http://localhost:85/ でブラウザが起動してディレクトリが見えれば成功です。

うまくいかない場合は、start.bat で呼び出されるUSB:\pdrive\start.php 内部をコメントにしたりして試してみてください。
これがUSB内のアプリケーションを制御している大本になっています。

echo "starting MySQL ....\n";
pclose(
popen(
'start pdrive\\mysql\\bin\\mysqld-nt.exe --basedir=/pdrive/mysql --datadir=/pdrive/mysql/data --port=3307 --console --standalone'
,'r' )
);
echo "starting apache....\n";
flush();
pclose(popen('start pdrive\\apache-2.0.50\\bin\\apache.exe','r'));
flush();
sleep(5);
echo 'opening localhost';
exec( 'start http://localhost:85');

read more

DB定義書出力プログラム

Perlモジュールを使ってエクセルファイルを作ります
ソースはこんな感じ。
設定を変えればPostgreSQL, MySQL 両方で使えます

#!C:\Perl\bin\perl
#!/usr/local/bin/perl

use strict;
use DBI;
use Jcode;
use Spreadsheet::WriteExcel;
use DBIx::DBSchema;

#設定
my $DSN = 'dbi:mysql:DB名:サーバー名';
my $DB_USER = 'ユーザー名';
my $DB_PASSWD = 'パスワード';
my $XLS_FILE = '出力ファイル名';

my $dbh = DBI->connect($DSN, $DB_USER, $DB_PASSWD) or die $DBI::errstr;
my $xls = Spreadsheet::WriteExcel->new($XLS_FILE);
my $schema = new_native DBIx::DBSchema $dbh;

for my $table ($schema->tables()) {
my $work = $xls->addworksheet("$table");

$work->write(0, 0, 'INDEXES');
my $index_ref = $dbh->selectall_arrayref("SHOW INDEX FROM $table");
write_worksheet($work, $index_ref, 1);

$work->write(3 + $#{$index_ref}, 0, 'COLUMNS');
my $column_ref = $dbh->selectall_arrayref("DESCRIBE $table");
write_worksheet($work, $column_ref, 4 + $#{$index_ref});
}

$dbh->disconnect;


sub write_worksheet {
my($work, $ref, $offset) = @_;
for my $row (0 .. $#{$ref}) {
for my $col (0 .. $#{$ref->[$row]}) {
$work->write($row + $offset, $col, $ref->[$row]->[$col]);
}
}
}

read more

Pear DB MySQL 文字コードセット

$db = DB::connect($dsn);
if (DB::isError($db)) { die($db->getMessage()); }

この後に
「$db->query('SET NAMES ujis');」 でujis設定します

?charset=ujis では不十分でした
MySQL 5 にアップグレードするときは要注意

read more

mysql データリストア

dumpからのリストアです

データベースを作る ない場合のみ
mysqladmin create DBNAME

mysql -u USERNAME DBNAME < DUMPNAME

バックアップはこんな感じ
/usr/local/mysql/bin/mysqldump --opt -v -uUSRNAME -pPASSWORD DBNAME > DBNAME.sql

read more

MySQL DumpImport

MySQLの大きなサイズのdumpファイルを取り込むときは
BigDumpというツールが便利です

BigDump: Staggered MySQL Dump Importer
http://www.ozerov.de/bigdump.php

アーカイブ展開後、ソースの下記4点に記入
$db_server = '';
$db_name = '';
$db_username = '';
$db_password = '';

dumpふぁいると一緒にアップロードしてブラウザからアクセスするだけ

read more

ActivePerl での DBD::mysql インストール

Windows XPでのお話

>cpan
>install DBI
>install DBD::mysql

ここでなせがエラーが出て先に進まなくなった。
なのでここから DBD-mysql-3.0002.zipをダウンロードしてインストールすることに
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/

ppm install C:\download\DBD-mysql-3.0002\DBD-mysql.ppd

できたっぽい

read more

MySQL バックアップ

/usr/local/mysql/bin/mysqldump --opt -v -uUSERNAME -pPASWORD DBNAME >DBNAME.dump

USERNAME, PASSWORD, DBNAME は環境に合わせてください
これでdumpがとれます ただし文字コードはUTF-8になるみたいです

圧縮するときはこんな風に

/usr/local/mysql/bin/mysqldump --opt -v -uUSRNAME -pPASSWORD DBNAME | gzip >DBNAME.sql.gz

PostgreSQLのpg_dump みたいにcron に登録しておきます

read more

MySQL 4.0.xインストール

ftp://ftp.iij.ad.jp/pub/db/mysql/Downloads/MySQL-4.0/ よりmysql-4.0.27.tar.gz をダウンロードする

tar xvzf mysql-4.0.27.tar.gz
cd mysql-4.0.27
./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --enable-local-infile --prefix=/usr/local/mysql
make
make install

環境設定
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql

起動
/usr/local/mysql/bin/mysqld_safe &

テスト
/usr/local/mysql/bin/mysqlshow
うまくいけばこういう風に表示されます
+-----------+
| Databases   |
+-----------+
| mysql     |
| test     |
+-----------+

起動スクリプト設定
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

mysql のrootパスワードを設定
/usr/local/mysql/bin/mysqladmin -u root password [パスワード]
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password [パスワード]

動作確認
/etc/init.d/mysql start
/etc/init.d/mysql stop

read more

phpMyAdmin インストール

MySQLの管理ツール phpMyAdmin のインストールです

wget http://jaist.dl.sourceforge.net/sourceforge/phpmyadmin/phpMyAdmin-2.8.0.4.tar.gz
tar xvzf phpMyAdmin-2.8.0.4.tar.gz
cd phpMyAdmin-2.8.0.4
cp libraries/config.default.php config.inc.php

config.inc.php を作成して下記3点の修正でOK
vi config.inc.php
$cfg['Servers'][$i]['host'] ='localhost' // MySQL hostname or IP address
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'password'; // MySQL password (only needed

ブラウザからアクセスできるようにすればすぐに使えます
$cfg['Servers'][$i]['auth_type'] = 'config';  のままBasic認証をかけて使っています

read more

MySQL インストール

MySQL 3.23.58のインストールメモです ちょっと古いけど・・・
ユーザー mysql と グループ mysql は作っておくものとします

tar xvzf mysql-3.23.58.tar.gz
cd mysql-3.23.58

./configure --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql --with-innodb --enable-local-infile --prefix=/usr/local/mysql --with-unix-socket-path=/mp/mysql.sock

make
make install > install.log
cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf
chown -R mysql /usr/local/mysql
chgrp -R mysql /usr/local/mysql

#DB初期化
/usr/local/mysql/bin/mysql_install_db --user=mysql

#準備
mkdir /mp
touch /mp/mysql.sock
chown mysql -R /mp
chmod 666 /mp/mysql.sock

#起動
/usr/local/mysql/bin/safe_mysqld --user=mysql &

うまくいかないときは
/usr/local/mysql/var/localhost.localdomain.err のエラーログを見てみる
おそらく/mp/mysql.sock の権限か/usr/local/mysql/var/のオーナーだ
chown mysql.mysql -R /usr/local/mysql/
chown mysql.mysql -R /mp

# 起動
/usr/local/mysql/bin/mysqld_safe --user=mysql &

インストールに成功したかどうかテストします。
# テスト
/usr/local/mysql/bin/mysqlshow

# インストールに成功していれば、データベース一覧が表示されます。
+-----------+
| Databases  |
+-----------+
| mysql     |
| test      |
+-----------+

#mysql のrootパスワードを設定します パスワードは任意の文字列でOK
/usr/local/mysql/bin/mysqladmin -u root password [パスワード]
/usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password [パスワード]

#起動スクリプト設定
cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql

/etc/init.d/mysql start で起動 
/etc/init.d/mysql stop で停止


【忘れたrootのパスワードを再設定する方法】 

設定手順

MySQLは、rootのパスワード忘れてしまった場合、いったん権限を無効にして起動すれば、パスワードを忘れてしまっても再設定できます。

いったんMySQLを停止し、以下のコマンドオプション("--skip-grant-tables")を付加して起動します。

# service mysqld stop
# /usr/bin/safe_mysqld --skip-grant-tables
Starting mysqld daemon with databases from /var/lib/mysql

以下のコマンドでMySQLを立ち上げて以下のようにコマンドを入力すれば変更できます。

# mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('mynewpassword') WHERE User='root';
mysql> FLUSH PRIVILEGES;

変更後は、MySQLを落として、通常の設定で起動します。
/etc/init.d/mysql start


 

read more

Recent entry

Search

Tag Cloud

Page Top