Cent OSでのMySQLの設定
0. はじめに
初心者向けMySQLの始め方を読んで、自分用のまとめとして、
昔書いたhttp://www.x-shenwu.net/~home_page/sakura_vps/mysql.htmlに加筆したものをここに書く。
- 設定ファイルの編集(主に文字コード)
- 起動方法
- mysqlコマンドの起動
- ユーザ作成と権限
- トラブルシューティング
- 参考資料を読んで気づいたこと
といった内容を書いている。
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
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. 参考資料を読んで気づいたこと
参考先の設定ファイルは以下のようになっているようだ
[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