CentOS7にMySQL5.7をインストールする手順を解説します。
データベースの定番MySQL。
ネットをみればそこら中に情報があるとはいえ、バージョンが少し変わるだけでも厄介ですよね。
今回はCentOS7にMySQL5.7を導入した手順を記事にしました。
目次
- 1 mariadbがはいってたら消す
- 2 conflictしないようにまっさらな状態で。あれば消す
- 3 リポジトリ追加
- 4 パッケージの詳細情報を確認
- 5 install
- 6 サーバーを起動したら自動的に MySQL Server が起動するように設定
- 7 MySQL Server を起動
- 8 root ユーザーの初期パスワード確認
- 9 mysql_secure_installation
- 10 UTF8、パスワード有効期限の解除
- 11 config/database.ymlの編集
- 12 database.ymlに合わせてuser作成
- 13 root でログイン
- 14 ユーザー作成
- 15 ユーザーの権限を確認
- 16 ユーザーに権限付与
- 17 権限の反映
- 18 データベースを選択
- 19 登録されているユーザーとホストを確認
- 20 指定のユーザーでログイン
- 21 データベース作成
- 22 文字コードのデフォルトを utf8 に設定
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;
リンク