TL;DR
コマンドはこれ。
$ sudo yum install -y https://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm $ sudo yum install -y --enablerepo=mysql57-community-dmr mysql-community-server $ sudo service mysqld start $ sudo grep password /var/log/mysqld.log $ mysql -uroot -p
【2015/11/05 10:05】
MySQL 5.7のGAリリースに伴い、mysql-community-releaseが新しくなっています。
2015/11/05現在だと、mysql-community-releaseは mysql57-community-release-el6-7.noarch.rpm になっており、こちらはデフォルトでmysql57-communityリポジトリーが有効になっています(ので、--enablerepoいらない)
1. MySQL :: Download MySQL Yum Repository からCentOS 6.x用(いや、本当はRHEL/Oracle Linux用のだけど)のrpmパッケージをインストールする(と、2015/06/01現在では↓の5つのリポジトリーが登録される)
| repository | enabled |
|----------------------------|---------|
| mysql-connectors-community | yes |
| mysql-tools-community | yes |
| mysql55-community | no |
| mysql56-community | yes |
| mysql57-community-dmr | no |
2. enabled= noになっているmysql57-community-dmrを--enablerepoで指定してmysql-community-serverをインストールする。
3. mysqldサービスを起動(今までOracleビルドのMySQLのrpmパッケージ .. ファイル名が MySQL-server-*.rpm になっているようなやつ .. はサービス名が "mysql" だったのが、yumリポジトリーの場合は"mysqld"になっている。たぶん、過去のRHELのBaseリポジトリーと命名規則を合わせたんではないだろうか)
/var/lib/mysqlはこの時点でmysqld --initializeで初期化される。MySQL-server-*.rpmはインストール時に初期化(= 5.6までしかMySQL-server-*.rpmは存在しないので、5.6当時でmysql_install_db)が走るが、mysql-community-server-*.rpmはservice mysqld startの中でdatadirの中身をチェックし、空っぽならば初期化が走るようになっている。
4. mysqld --initialize ということは、だ。初期パスワードは /root/.mysql_secret には *ない* 。エラーログに吐いている。デフォルトでは/var/log/mysqld.logだ。罠い。
日々の覚書: MySQL 5.7.6でデータベースの初期化が変わる mysql_install_dbからmysqld --initialize
$ sudo service mysqld start Initializing MySQL database: 2015-06-01T09:35:30.031754Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). [ OK ] Starting mysqld:
デフォルトパスワードの在り処なんてビタ1文字何も教えてくれない。罠い。
$ grep password /var/log/mysqld.log 2015-06-01T09:35:31.070842Z 1 [Warning] A temporary password is generated for root@localhost: l#KCEX1;iypk 2015-06-01T09:35:37.208351Z 2 [Note] Access denied for user 'UNKNOWN_MYSQL_USER'@'localhost' (using password: NO)
そしてなんか謎のUNKWOWN_MYSQL_USERとかいうのがログイン試行してる。謎い。
110 # Spin for a maximum of N seconds waiting for the server to come up; 111 # exit the loop immediately if mysqld_safe process disappears. 112 # Rather than assuming we know a valid username, accept an "access 113 # denied" response as meaning the server is functioning. 114 ret=0 115 TIMEOUT="$STARTTIMEOUT" 116 while [ $TIMEOUT -gt 0 ]; do 117 RESPONSE=$(/usr/bin/mysqladmin --no-defaults --socket="$adminsocket" --user=UNKNOWN_MYSQL_USER ping 2>&1) && break 118 echo "$RESPONSE" | grep -q "Access denied for user" && break 119 if ! /bin/kill -0 $safe_pid 2>/dev/null; then 120 echo "MySQL Daemon failed to start." 121 ret=1 122 break 123 fi 124 sleep 1 125 let TIMEOUT=${TIMEOUT}-1 126 done
/etc/init.d/mysqldの中身を覗いてみると、ちゃんと起動したかどうかを敢えてエラーになりそうなユーザーでmysqladmin pingして"Access denied"が返されることで起動したことを確認しているぽい。
でもこれ、UNKNWON_MYSQL_USER@localhostがいたら成功しちゃって"Access denied"が返らないんじゃね? と思ったら
mysql> create user UNKNOWN_MYSQL_USER; ERROR 1470 (HY000): String 'UNKNOWN_MYSQL_USER' is too long for user name (should be no longer than 16)
長さ制限に引っかかってそんなユーザーは作れなかった。なるほど。
何の話だかよくわからなくなってきたのでこれまで。
0 件のコメント :
コメントを投稿