‘mysql’ カテゴリーのアーカイブ

phpMyAdminのインストール&エラーメッセージ集

2008 年 10 月 22 日 水曜日

phpMyAdminのインストール手順&エラーメッセージ集

MySQLをコマンドラインで操作するのは、意外と面倒です。まあ最初は概念を体感するためにコマンドで勉強した方がいいんですけど、手軽に操作したい場合はやはりphpMyAdminが便利ですね。

と言うわけで設置手順とエラーメッセージへの対応方法を簡単にまとめます。

phpMyAdminのインストール

  1. ダウンロード
    こちらから好きなバージョンをダウンロード。3.0移行は、phpが5.2移行でないと使えません。
  2. インストール
    ターミナル操作の場合、unzipやtarで解凍、Windows+FTPの場合は解凍してできたフォルダを全部任意の場所にアップロード。
  3. コンフィグファイルの作成
    セットアップスクリプトは意外と不親切で分かりづらいので、手動で作成します。
    config.inc.sample.phpをconfig.inc.phpの名前でコピーします。
    デフォルトでは
    • サーバー:localserver
    • 認証タイプ:cookie

    になっているので、特に変更しなくても大丈夫だと思います。
    一点だけ、blowfish_secretに暗号化用の文字を入れないと動きません。

エラーメッセージ

PHP を 5.2 以降にアップグレードしてください

phpMyAdmin3.0以降は、PHPが5.2以降になっている必要があります。
PHPのアップグレードをしたくない場合は、phpMyAdmin 2.11.9.2など2系の安定版を使用しましょう。

mcrypt 拡張をロードできません。PHP の設定を確認してください


# yum -y install php-mcrypt
でphp-mcryptをインストールします。

PHP の mbstring 拡張が見つかりませんでした。マルチバイト文字セットを使用しているようですが、mbstring拡張がないとphpMyAdmin は文字列を正しく分割できないため予期しない結果になることがあります

# yum -y install php-mbstring

でphp-mbstringをインストールします。日本語のようなマルチバイト文字を処理するために必要です。

設定ファイルが秘密のパスフレーズ(blowfish_secret)を必要とするようになりました


インストール手順でも説明しましたが、blowfish_secretが空のままだとこのエラーが出ます。
config.inc.phpを開いて、適当な文字列を入力して保存します。この文字列は、暗号化の際に使われるコードであってパスワードではないので、特に今後入力を求められる機会はありませんから、適当でOKです。

「’」と「`」は違う

2008 年 9 月 25 日 木曜日

いつもphpMyAdminに頼りっぱなしだと、いざというときに困ってしまうので、単純なデータベース操作のときくらいコマンドラインを使ってみようと思ったものの、何度やってもエラーになってしまう。

mysql> create database 'test_3' default character set utf8 collate utf8_general_ci;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test_3' default character set utf8 collate utf8_general_ci' at line 1

なんでだろう…。とりあえず教科書通りに大文字にしてみようか。

mysql> CREATE DATABASE 'test_3' DEFAULT CHARACTER SET UTF8 COLLATE UTF8_general_ci;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''test_3' DEFAULT CHARACTER SET UTF8 COLLATE UTF8_general_ci' at line 1

うおー、なんでだ。エラーメッセージが”test_3…から始まっていると言うことは、ひとまず「create database」までは合っているわけだ。その後に何が…。

あきらめてphpMyAdminから実行して、「実行したSQL」の部分をじっと眺めて漸く気付いた。

正しい方

CREATE DATABASE `test_3` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

間違っている方

CREATE DATABASE 'test_3' DEFAULT CHARACTER SET UTF8 COLLATE UTF8_general_ci;

データベース名を囲むチョンチョンが違う! これ、フォント指定の違いで’(Shift+7)が違う風に表示されているのかと思いきや、違う文字だった。
これ、`(Shift+@)だったんですねぇ…。

(今まで何でこの問題に突き当たらなかったかというと、コマンドラインで打つときはチョンを付けていなかったからのようです。付けなかったらそれはそれでOK。)

mySQLに新規データベースを作成、ユーザー特権を与えるまで

2008 年 9 月 19 日 金曜日

phpMyAdminでラクばかりしてたら、コマンドがさっぱり分からなくなってしまったので備忘録。とりあえずWordPressを新規にセットアップするための最低条件、
・rootでログイン
・新規データベースを作成
・WordPress用のユーザー特権を追加

の3つを行なうコマンド。

mysql> CREATE DATABASE `blog_database` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.14 sec)

mysql> GRANT ALL PRIVILEGES ON `blog\_database` . * TO 'username'@'localhost' WITH GRANT OPTION ;
Query OK, 0 rows affected (0.26 sec)

_(アンダーバー)はエスケープしなきゃいけないので注意。

SQLiteと管理ツールについて

2008 年 9 月 5 日 金曜日

SQLiteは、その名の通りライトなSQLのデータベース管理システムです。
postgresやMySQLなど一般的なデータベースはサーバサイドですが、SQLiteはアプリケーションに組み込んで使う計量データベースです。

データ型、ユーザー、パスワードなどの概念がなく、単一ファイルとして動くので扱いやすく引っ越しもしやすいんですが、その点セキュリティ面での不安もあるし、大規模システムには不向きですね。

ブログや掲示板のデータベースとしての選択肢はアリだと思う(実際、サーバーの仕様により、MovableTypeなどでSQLiteを使用している人も多いはず。php不可、Mysqlナシのさくらのライトプランとか)んですが、PhpMyadminみたいな管理ツールがあればもっと普及するのではないか?

と、検索してみたらありました。
phpguru.org - phpSQLiteAdmin
スクリーンショットは、MyAdminとそっくりで、Php***Adminシリーズといった感じですね。

・他 参考情報
Web用SQLite管理ツールの紹介 : PHPとSQLite rakutoネット
代表的なSQLite管理ツールと、自作のSQLite管理ツールが紹介されています
SQLite - Wikipedia

MySQLからcsvで出力する方法

2008 年 9 月 3 日 水曜日

MySQLからDumpして変換ではなく、直接CSVで出力する方法を探していると、こんなやり方が紹介されていた。

データをCSVで入出力する方法

CSVに出力(エクスポート)する方法

以下のように、データベースと出力ファイルを指定すれば出力されます。

mysql> select * from database into outfile "/tmp/dump.csv" fields terminated by ',';

CSVから入力(インポート)する方法

以下のように、入力ファイルとデータベースのテーブルを指定すれば入力できます。

mysql> load data local infile "/tmp/dump.csv" into table tablename fields terminated by ',';

区切りの改行コードを指定するには、”LINES TERMINATED BY”で指定します。

fields terminated by ',' LINES TERMINATED BY '\r\n';

ダブルクォーテーションで囲まれたデータの入出力すには、”ENCLOSED BY ‘”‘”を付加します。

fields terminated by ',' ENCLOSED BY '"';

データをCSV(Excel)で入出力する方法

CSVに出力(エクスポート)する方法

以下のように、データベースと出力ファイルを指定すれば出力されます。

mysql> set character set sjis;
mysql> select * from database into outfile "/tmp/dump.csv"
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

CSVから入力(インポート)する方法

以下のように、入力ファイルとデータベースのテーブルを指定すれば入力できます。

mysql> set character set sjis;
mysql> load data (local) infile "/tmp/dump.csv" into table tablename
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

入れ替える場合は、以下のように指定します。

mysql> set character set sjis;
mysql> load data (local) infile "/tmp/dump.csv" replace into table tablename
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';

MySQLの小技

上下の何が違うのか詳細を把握していない、というかまだうまく言っていないので何とも言えないんだけど、
ERROR 1046 (3D000): No database selected
と怒られてしまう。データベースは最初の「select * from データベース名」で指定しているはずなんだけどな…。

0905追記
→解決。

よく考えてみれば当たり前の話で、CSVは単一シートだからテーブル一つ分しか出力できない。つまりまずデータベースを選び(use database-name)、その中でテーブル名を指定して実行する
select * from table名 into outfile・・・
のが正解だった。

mySQLのrootユーザーにパスワード設定

2008 年 9 月 2 日 火曜日

インストール直後のMySQLにはrootにパスワードが設定されていないので、mySQLにログイン後、パスワードを設定する。

mysql内での設定

mysql> SET PASSWORD FOR root=PASSWORD('hoge');

mysqladminでの設定

コマンドラインでmysqladminを使用しても設定できる。

mysqladmin -u root password 新しいパスワード
mysqladmin reload

reloadをすると、即設定が有効になる。

Mysqlに「Can’t connect to local MySQL server through socket」が出て接続できない

2008 年 9 月 2 日 火曜日

MySQLに接続しようとすると(ターミナルでもphpMyAdminでもMovableTypeでも何でも)、 「Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’」といったエラーが表示されて接続できない場合。

このメッセージは

「ソケットを通じてMySQLサーバーに接続することができません」の意味。socketとはプロセスやネットワーク間の通信機構のことで、MySQLサーバとクライアントをつなぐソケットが機能していない場合にこのメッセージが出る。

対処

1.ソケットがあるかチェック

接続ファイル(/etc/my.cnf)を見て、socketがあるかどうか調べてみる。
socket=/var/lib/mysql/mysql.sock
とソケットのパスが書いてあるが、そこに置かれているかどうか、エラーメッセージのパスと比較して確認。

2.MySQLを(再)起動してみる

もしもそこに何もなかったら、MySQLがそもそも一度も起動されていない可能性が高い。MySQLを起動しよう。

service mysqld start

MySQLが起動すると、自動的にsocketが作成される。何らかの事情で誤って削除してしまっていた場合も再作成される。