mysqlのrootのパスワードを初期化
なぜかMySQLにログインできなくなってあたふた。原因がよく分かっていないのですが、直前にパスワード関連でいじったのは、こちらのエントリでの認証プロトコル程度。といっても認証プロトコル変更後も、しばらくはログインできていたので謎です…。
ともかく、パスワードを初期化することにしました。例によってMySQLリファレンス参照です。
http://dev.mysql.com/doc/refman/5.1/ja/resetting-permissions.html
パスワード変更方法
まず適当なディレクトリ以下に、適当なテキストファイルを作成します。今回はC:\以下にmysql-init.txtを作成しました。
# touch mysql-init.txt
# ls mysql* mysql-init.txt
ちゃんとファイルが作成されていることを確認したら、mysql-init.txtを編集して保存します。必要なのはたった一行。
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('ぱすわーど');
準備が整ったところで、MySQLサーバを停止します。マニュアルに従い、コントロールパネルから落としました。「コントロールパネル>管理ツール>サービス」と進んで、ローカルのサービスからMySQLを選択、「サービスの停止」を指定します。
次に、MySQLのインストールディレクトリ(便宜上"MYSQL_HOME"と表示)へ移動します。続いて、コマンドを入力。
# cd [MYSQL_HOME] # ./bin/mysqld-nt --init-file=C:/mysql-init.txt
これで初期化完了です!
Ruby/MySQLのインストール
Rubyスクリプトを書いていて、MySQLに接続したくなったため、探してきました。
RubyからMySQLを使おうとした場合、Ruby/MySQLか、あるいはMySQL/Rubyなどといったライブラリが必要になります。すごく…似てます……、と思ったら、どちらもとみたまさひろさんが作者とのこと。
Ruby/MySQL : http://www.tmtm.org/ruby/mysql/
MySQL/Ruby : http://www.tmtm.org/mysql/ruby/
http://www.gesource.jp/programming/ruby/database/mysql.htmlによれば、二つのライブラリの特徴は、以下のように分かれているようです。
MySQL/RubyはCで書かれているため高速ではあるもののコンパイラが必要。
Ruby/MySQLはRubyで書かれているため低速ではあるもののコンパイラは不要。
MySQL/Rubyの方が高速とのことで、初めはこちらを使おうと考えていました。ところが、作者の方によれば"MySQL/Ruby終了のお知らせ"とのこと。Ruby/MySQLをインストールすることにしました。
MySQL/Ruby終了のお知らせ : http://www.slideshare.net/tmtm/mysqlruby
インストール方法
公式サイトを参考にインストールしていきます。
http://www.tmtm.org/ruby/mysql/
大きな流れとしては
- DL・解凍
- 解凍して出てきたtest.rbを用いてMySQLに接続できるか確認
- インストール
となっています。
MySQLのUNIXドメインソケットを調べるというステップもあるようですが、今回はWindows環境の為、必要がないようでした。
test.rbの実行
・コマンド
# ruby ./test.rb localhost root ぱすわーど
・エラー
「ソケット'/tmp/mysql.sock'を通じてローカルのMySQLサーバーに接続することが出来ません」
"localhost"の部分を"127.0.0.1"にしたことで解決。けれども再び別のエラー
・コマンド
# ruby ./test.rb 127.0.0.1 root ぱすわーど
・エラー
Client does not support authentica tion protocol requested by server; consider upgrading MySQL client (Mysql::Error )
サーバとクライアント間のMySQLのバージョン差異から発生したエラーと読めます。パスワードのハッシュの持ち方が違うらしく、認証プロトコルの互換性がないようです。
MySQLのリファレンスを参考に、MySQLにログインした上で以下のコマンドを実行。
mysql> set password = old_password('ぱすわーど'); mysql> flush privileges;
今度こそtest.rbを実行!
# ruby ./test.rb 127.0.0.1 root ぱすわーど connect.............ok create_db...........ok create_table........ok insert..............ok select..............ok update..............ok drop_table..........ok drop_db.............ok close...............ok
無事に実行できたようです。
余談
"Can't connect to local MySQL server through socket"に関連して、このページが分かりやすかったです!
http://www.hi-ho.ne.jp/tsumiki/book_sup2.html
おしまい。
新しくブログ始めます。
こんにちは。
istwar改め@moko_istです。
夏季休暇を終えて、新しくWebアプリを作っています。丁度良い区切りですので、今日から学習内容はこちらの方でまとめてようと思います。
しばらくはテーマをちょこちょこ変更する可能性が高いです…。
よろしくお願いします。
phpMyAdminでインポートできない大きなSQLファイルを、BigDumpで簡単インポート
以前そこそこ大きなMySQLのダンプを別サーバにインポートしようとしました。
普段利用しているphpMyAdmin経由でインポートしようとしたのですが、やはりファイルサイズの制限やらタイムアウトやらで引っかかりました。もちろんphp.iniを編集しても良いのですが、以前も設定しなおした記憶が蘇ります…。そんなときBigDumpなるものを耳にしたので、試しに利用してみました。
結果。とっても簡単に扱えてすぐにインポートが終わりました。ご満悦。ということで、今回はBigDumpの使い方をメモしておこうと思います!
ローカルなら
mysql hogedb < hogedb.sql -u root -p
の一行で済んだのに…
BigDumpとは
phpのフリーソフトで、巨大なSQLファイルを分割してインポートしてくれます。
公式サイト:http://www.ozerov.de/bigdump.php
使い方目次
使い方詳細
1. DL・解凍
前述の公式サイトからDLします。
http://www.ozerov.de/bigdump.php
解凍すると、bigdump.phpがこんにちは。
2. bigdump.php編集
bigdump.php を編集しましょう。
編集するといってもたかだか5行程度で事足りました。
38〜41行目付近。
$db_server = ''; //サーバ名 $db_name = ''; //DB名 $db_username = ''; //ユーザ名 $db_password = ''; //パスワード
参考サイトさんではこの4行で良いとありましたが、私は文字化けを起こしてしまったので、文字コードも設定しました。
66行目付近。
$db_connection_charset = 'utf8';
設定はたったこれだけ。
3. サーバ上に任意のディレクトリを作成し、作成ディレクトリ以下にbigdump.phpとsqlファイルをアップロード
サーバ上に任意のディレクトリを作成します。
そして、作成したディレクトリ以下に、bigdump.phpとsqlファイルをアップロードしてください。
例えば…
"bigdump"という名前のフォルダを作成。
http://hogehoge/bigdump/bigdump.php
http://hogehoge/bigdump/hogehoge.sql
といった具合です。
4. ブラウザからbigdump.phpにアクセス
さっきの例ですと、
http://hogehoge/bigdump/bigdump.php
と打ち込みましょう。
5. "Start Import"クリックでインポート開始
設定が正しければ、アップロードしたダンプファイルが一覧に表示されているはずです。
対象ファイルを見ると、"Start Import into 'DB名' at 'サーバ名'"と書いてあるので、Start Importをクリック。
これだけでインポートされます。
どこまでインポートできたか%が表示されるのがちょっと嬉しい。