Cent OSでのMySQLの設定

0. はじめに

初心者向けMySQLの始め方を読んで、自分用のまとめとして、
昔書いたhttp://www.x-shenwu.net/~home_page/sakura_vps/mysql.htmlに加筆したものをここに書く。

  1. 設定ファイルの編集(主に文字コード
  2. 起動方法
  3. mysqlコマンドの起動
  4. ユーザ作成と権限
  5. トラブルシューティング
  6. 参考資料を読んで気づいたこと

といった内容を書いている。

1. 設定ファイル(my.cnf)

設定ファイルの場所
  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • /user/local/mysql/etc/my.cnf
  • $MYSQL_HOME/my.cnf
  • --defaults-extra-fileで指定したもの
  • $HOME/.my.cnf

参考資料を引用させていただきました。
後勝ちだそうです。

my.cnfを編集

[mysqld]に以下を追加

# character-set
default-character-set=utf8
skip-character-set-client-handshake

ファイル末尾に以下を追加

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqldump]
default-character-set=utf8
Cent OSの文字コードも合わせる

/etc/sysconfig/i18n

LANG="C"  →  LANG="ja_JP.UTF-8"

2. 起動方法

/etc/rc.d/init.d/mysqld start &

3. mysqlコマンドの起動

# mysql -u root

4. ユーザ作成と権限

rootのパスワード変更
mysql> UPDATE mysql.user SET Password = PASSWORD('設定するパスワード')  WHERE User = 'root';
mysql> FLUSH PRIVILEGES;
パスワードの変更方法(参考資料のがよさそうなので引用)

自分自身のパスワード変更

mysql > set password = password('パスワード');

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

mysql> set password for root@'127.0.0.1' = password('パスワード');
mysql> Ctrl-D
MySQLの再起動
# /etc/init.d/mysqld restart
mysqlのユーザを表示
mysql> select user,host from mysql.user;
user作成
mysql> create user ユーザ名@localhost identified by 'パスワード';
権限付与
mysql > grant all on DB名.* to ユーザ名@localhost;
権限剥奪
mysql > grant 権限 on DB名.テーブル名 to ユーザ名@localhost;

5. トラブルシューティング

rootのパスワードを間違えてUPDATEしてquitしてしまった場合
ERROR 1045 (28000): Access denied for user ‘root’@'localhost’ (using password: NO)

もしくは

ERROR 1045 (28000): Access denied for user ‘root’@'localhost’ (using password: YES)

と出て入れなくなってしまう。

skip-grant-tablesで起動する
# /etc/rc.d/init.d/mysqld stop

MySQLを停止し、

# mysqld_safe --user=mysql --skip-grant-tables &

で起動して、パスワードを再設定すればよい。

6. 参考資料を読んで気づいたこと

localhost127.0.0.1

localhostは /tmp/mysql.sock を使うUNIXソケット

InnoDBを使おう

トランザクション使えるしね。

参考先の設定ファイルは以下のようになっているようだ
[mysqld]
user=mysql
character-set-server=utf8
log-error=/var/log/mysqld.err
skip-name-resolve
innodb-file-per-table

[mysql]
default-character-set=utf8show-warnings