2007年04月14日(土) [長年日記]
- 土曜日だが職場へ。
- 結局MySQLの設定しかしていないじゃないか!
■ [ruby][db] RailsをMySQLと一緒に使った
今まではSQLiteを使っていたけど、ちょっとMySQLを導入してみた。
パッケージのインストール
Fedora Core 6を使っているので、
# yum install mysql-server
でよい。バージョン 5.0.27 がインストールされた。
後に「Lost connection to MySQL server during query」エラーが多発したので、MySQL Connection Problemsなどを参考にして次もインストールした。
# yum install mysql-devel # gem install mysql -- --with-mysql-config=`which mysql_config`
MySQLの設定
MySQL使うのは1年ぶりくらいかな。もう何もかも忘れている。パッケージをインストールしたら /etc/my.cnf ができていたので、[mysqld] セクションに「skip-networking」を追加しネットワークアクセスを禁止したつもり。
後に文字化け問題が発生したので、くまくまーを参考にして「default-character-set=utf8」「skip-character-set-client-handshake」も記述した。
/etc/init.d/mysqld スクリプトを使ってMySQLのプロセスを起動したら、自動的にデータファイルを作ってくれた。で、
$ /usr/bin/mysqladmin -u root password 'new-password' $ /usr/bin/mysqladmin -u root -h HOST_NAME password 'new-password'
によりrootのパスワードを設定した。
データベースの作成
MySQLに接続して、アプリケーション用のデータベースを作成する。
mysql> create database oreore_production; mysql> create database oreore_development; mysql> create database oreore_test;
アプリケーションが使用するアカウントも作成する。
mysql> grant all on oreore_production.* to oreore@localhost IDENTIFIED BY 'password'; mysql> grant all on oreore_development.* to oreore@localhost; mysql> grant all on oreore_test.* to oreore@localhost;
MySQLのユーザ管理は謎めいていて頭が痛い。これで問題ないのかな?権限を与えすぎている可能性あり。
Railsの設定
database.ymlを作成する。railsコマンドが作ってくれる雛形に対して、
socket: /var/lib/mysql/mysql.sock
のような行を追加した。MySQLが mysql.sock を作成する場所に合わせる。
database.ymlにDB接続のパスワードを平文で書き込むのが嫌だ。何か対策があるはずだと思うが未調査。
問題点
「MySQL server has gone away」というエラーが発生することがある。未解決。
(追記)
続きがあります。
■ やること
- 年金
- スポンジ
- 歯ブラシ