はじめに
mysqlのインストールメモ。
何度もやってるし前も書いてるんですが
入れる一連を改めて書いておこうと思い立っただけのメモの②で初期設定
yumやrpmでのインストールはこちらも参考に。
→mysqlをyum、rpm、ソースでそれぞれインストール(5.1と5.5)
アジェンダ
1. my.cnfを用意する
my.cnfについては別記事で補足してるのでそちらを参考に
→【mysql】mysql5.5を使う - ②-2 - my.cnfの種類と読み込み順序
今回はMySQLメインサーバというわけではないので、my-medium.cnf
を使います。
※ 所有権とかも変えたくないので-apオプションでコピー $ sudo cp -ap /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
2. mysqlの設定(my.cnfの編集)
設定は主に下記について変更します
InnoDBについて
# Uncomment the following if you are using InnoDB tables
と書かれた行の下からがInnoDBの設定になります。
$ sudo vi /etc/my.cnf
中身
InnoDBについてはデフォルトコメントアウトされるのでこんな感じにしました
# Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /usr/local/mysql/data innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = /usr/local/mysql/data # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 512M innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 128M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50
補足
innodb_buffer_pool_size
とinnodb_log_file_size
の設定値としてはこちらも参考になります
→MySQLの「innodb_buffer_pool_size」と「innodb_log_file_size」の設定
文字コードの設定
日本語も扱うでしょうからやっておいたほうがいいですね。
$ sudo vi /etc/my.cnf
中身
文字コードついては[client]などのグループ指定の後にそれぞれこんな感じで追記しました
[client] default-character-set = utf8 [mysqld] character-set-server = utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
3. mysqlの自動起動の設定
※ 自動起動スクリプト場所にコピー $ sudo cp /usr/local/mysql/support-files/mysql.server /etc/init.d/. ※ 設定 $ sudo chkconfig --add mysql.server ※ 確認 $ chkconfig --list mysql.server mysql.server 0:off 1:off 2:on 3:on 4:on 5:on 6:off
4. mysqlの起動
mysqlを起動して入ってみます
※ 起動 $ sudo /usr/local/mysql/bin/mysqld_safe --user=mysql & [1] 26162 150611 02:14:32 mysqld_safe Logging to '/usr/local/mysql/data/tk2-223-21094.vs.sakura.ne.jp.err'. 150611 02:14:32 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data ※ 入ってみる $ /usr/local/mysql/bin/mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.5.44-log MySQL Community Server (GPL) mysql>
5. mysqlのセキュリティ設定
mysql_secure_installation
でセキュリティ設定をします。
たとえばですが今の状態でユーザを見てみると、
rootのパスワードが設定されていなかったり、userが空欄の匿名ユーザがいることがわかるかと思います。
mysql> select user, password, host from mysql.user; +------+----------+-------------------------------+ | user | password | host | +------+----------+-------------------------------+ | root | | localhost | | root | | hogehogehoge.ne.jp | | root | | 127.0.0.1 | | root | | ::1 | | | | localhost | ← 匿名ユーザ | | | hogehogehoge.ne.jp | ← 匿名ユーザ +------+----------+-------------------------------+ 6 rows in set (0.00 sec)
mysql_secure_installation
では いろいろ聞かれますが主に下記を行います。
- rootユーザのパスワード設定
- 匿名ユーザを削除
- localhost接続のみ許可(リモートからのrootアクセスを禁止)
- testデータベース削除
※ rootユーザになっておこなう $ sudo su ※ スクリプトを実行 $ /usr/local/mysql/bin/mysql_secure_installation ---- 入力 ---- ※ 何も入力せずEnter Enter current password for root (enter for none): ※ 新しいrootパスワードを設定するのでYを入力 Set root password? [Y/n] ※ 新しいrootパスワードを設定 New password: ※ 歳入力 Re-enter new password: ※ 匿名ユーザを削除するのでYを入力 Remove anonymous users? [Y/n] ※ リモートからのrootアクセスを禁止 Disallow root login remotely? [Y/n] ※ testデータベース削除 Remove test database and access to it? [Y/n] ※ 設定をすぐ反映するか、なのでYを入力 Reload privilege tables now? [Y/n] --------------
補足
mysql_secure_installation
の実行時にこんなエラーになることがあります
$ /usr/local/mysql/bin/mysql_secure_installation Can't find a 'mysql' client in PATH or ./bin
その際はパスを通すか、実行前にexportしてからやってみましょう
$ export PATH=/usr/local/mysql/bin
確認
再度ユーザを見てみます。
rootユーザのパスワードの設定がうまくいってない場合は空白になってるので
mysqlにはいった状態で設定します。
mysql> select user, password, host from mysql.user; +------+----------+-----------+ | user | password | host | +------+----------+-----------+ | root | | localhost | | root | | 127.0.0.1 | | root | | ::1 | +------+----------+-----------+ 3 rows in set (0.00 sec) ※ パスワードを設定 mysql> UPDATE mysql.user SET Password=PASSWORD('あたらしいパスワード') WHERE User='root'; ※ 即反映 mysql> FLUSH PRIVILEGES;
いちど出てユーザ名rootのみではいってみます
$ /usr/local/mysql/bin/mysql -uroot ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) ※ これで入れる $ /usr/local/mysql/bin/mysql -uroot -p ※ 暗号化された状態でパスワードが入っている mysql> select user, password, host from mysql.user; +------+-------------------------------------------+-----------+ | user | password | host | +------+-------------------------------------------+-----------+ | root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | localhost | | root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | 127.0.0.1 | | root | *B47031AB80C905DD6FE60C3113C09C122272E5E3 | ::1 | +------+-------------------------------------------+-----------+ 3 rows in set (0.00 sec)
と、こんな感じで基本的な設定できました。
6. pathの追加
/usr/local/mysql/bin/mysql -uroot -p
と毎回打つのは面倒なのでパスを追加します
$ vi ~/.bashrc ---- vi追記 ---- export PATH=/usr/local/mysql/bin ---------------
参考
こちらはけっこー参考にさせて抱きました!thx!
→誰でも簡単!MySQLのインストールと初期設定(初期設定編)
おわり
設定らへんは何度もやることではないですが、my.cnfの調整は運用していくと触ることも多いと思うのですこしずつでも覚えたいですね!
enjoy\(^o^)/