CentOS7にMySQL5.7をインストールする手順

CentOS7にMySQL5.7をインストールする手順を解説します。
データベースの定番MySQL。
ネットをみればそこら中に情報があるとはいえ、バージョンが少し変わるだけでも厄介ですよね。
今回はCentOS7にMySQL5.7を導入した手順を記事にしました。

mariadbがはいってたら消す

rpm -qa | grep maria
mariadb-libs-5.5.56-2.el7.x86_64

sudo yum remove mariadb-libs
rm -rf /var/lib/mysql/

conflictしないようにまっさらな状態で。あれば消す

rpm -qa | grep mysql

sudo yum remove mysql…..(上ででてきたのをコピペ)

リポジトリ追加

sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

パッケージの詳細情報を確認

sudo yum info mysql-community-server

install

sudo yum -y install mysql-community-server

サーバーを起動したら自動的に MySQL Server が起動するように設定

systemctl enable mysqld.service

MySQL Server を起動

systemctl start mysqld.service

root ユーザーの初期パスワード確認

MySQL 5.7 では、初回起動と同時に root ユーザーにランダムな文字列がパスワードとして設定され、インストールを行う度に変わります。

初期パスワードはCentOS の場合 /var/log/mysqld.log にパスワードが記載されています。

[Note] A temporary password is generated for root@localhost: hWeo%plpe9/;
# ;まで含めたものを下記でコピペ

mysql_secure_installation

mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 初期パスワードを入力する
# ;まで含めたものをコピペ

The existing password for the user account root has expired. Please set a new password.

New password: 新しいパスワードを入力する
# ... Failed! Error: Your password does not satisfy the current policy requirements というエラーの場合
初期値はパスワードのセキュリティがMEDIUMらしく、最低 1 つの数値文字を含み、1 つの小文字および大文字を含み、1 つの特殊文字 (英数字以外) を含む必要がある(とりあえず適当に設定してLOWに変更可能)


Re-enter new password: 再度同じ新しいパスワードを入力する

VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?

Press y|Y for Yes, any other key for No: y

There are three levels of password validation policy:

LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Using existing password for root.

Estimated strength of the password: 100 
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password: ポリシーに沿った新しいパスワードを入力

Re-enter new password: 再度新しいパスワードを入力する

Estimated strength of the password: 50 
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user, a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y Success.

- Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done! 

UTF8、パスワード有効期限の解除

# /etc/my.cnf

[mysqld]
...
character-set-server = utf8
default_password_lifetime = 0

config/database.ymlの編集

# CentOSの場合、Socketを以下に設定する
  socket: /var/lib/mysql/mysql.sock
# MacOSの場合は以下
  socket: /tmp/mysql.sock

# database.ymlはgit管理しないので別々に設定

database.ymlに合わせてuser作成

root でログイン

systemctl start mysqld.service
mysql -uroot -p<PASSWORD>

ユーザー作成

mysql> create user <USERNAME>@localhost identified by '<PASSWORD>';

ユーザーの権限を確認

mysql> show grants for <USERNAME>@localhost;

ユーザーに権限付与

mysql> grant all privileges on *.* to <USERNAME>@localhost;

権限の反映

mysql> flush privileges;

データベースを選択

mysql> use mysql;

登録されているユーザーとホストを確認

mysql> select user, host from mysql.user;

指定のユーザーでログイン

exit
mysql -u<USERNAME> -p<PASSWORD>

データベース作成

mysql> create database portfolio;
mysql> create database portfolio_development;

文字コードのデフォルトを utf8 に設定

mysql> alter database portfolio default character set utf8;
mysql> alter database portfolio_development default character set utf8;