メモの日々


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」というエラーが発生することがある。未解決。

(追記)

続きがあります。

やること

  • 年金
  • スポンジ
  • 歯ブラシ