DjangoでWebアプリケーションを作成するために、DBの設定をしてみた。今回使用するのは、MySQL version 8.0。
MySQLのインストール
MySQL(version 8.0.19)をインストールする。
MySQLのリポジトリを登録する。
# yum -y localinstall https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
以下コマンドでインストールする。
# yum -y install mysql-community-server
...
Package : mysql80-community-release-el7-3.noarch (@/mysql80-community-release-el7-3.noarch)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Is this ok [y/N]:
Didn't install any keys
上のエラーが出てきた。yum updateしてみる。
# yum update
...
Installed:
mysql-community-libs.x86_64 0:8.0.19-1.el7 mysql-community-libs-compat.x86_64 0:8.0.19-1.el7
Dependency Installed:
mysql-community-common.x86_64 0:8.0.19-1.el7
Replaced:
mariadb-libs.x86_64 1:5.5.64-1.el7
Complete!
OKみたい。もう一度、以下コマンドを実行してみる。
# yum -y install mysql-community-server
...
Installed:
mysql-community-server.x86_64 0:8.0.19-1.el7
Dependency Installed:
libaio.x86_64 0:0.3.109-13.el7 mysql-community-client.x86_64 0:8.0.19-1.el7 net-tools.x86_64 0:2.0-0.25.20131004git.el7
Complete!
以下コマンドでインストールされたのかを確認。
# mysqld --version
/usr/sbin/mysqld Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)
MySQLの設定
MySQLサーバを起動してみる。
# systemctl start mysqld
MySQLのrootユーザの一時的なパスワードがログに出力されているので、確認する。
# grep "temporary password" /var/log/mysqld.log
2020-03-28T13:03:44.336072Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XXXXXXXXXXXX
以下、コマンドでセキュア初期設定にする。
# 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:
Re-enter new password:
The 'validate_password' component is installed on the server.
The subsequent steps will run with the existing configuration
of the component.
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: 100
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,
allowing anyone to log into MySQL without having to have
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
- Dropping test database...
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!
上で設定した新パスワードでMySQLサーバにログインする。
# mysql -u root -p
以下、MySQLコマンド。Djangoで使用するDBを作成する。
mysql> create database <DATABASE>;
Query OK, 1 row affected (0.00 sec)
初期のMySQLのユーザはこうなっている。
mysql> select host,user from mysql.user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
4 rows in set (0.00 sec)
ここに、自分の使用するユーザを追加する。
mysql> CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORD>';
Query OK, 0 rows affected (0.01 sec)
https://www7390uo.sakura.ne.jp/wordpress/archives/456
=> MySQL8.0ではGrantでユーザの追加はできないみたい。
追加したユーザに権限を付与する。
mysql> GRANT ALL ON <DATABASE>.* TO '<USERNAME>'@'localhost';
Query OK, 0 rows affected (0.00 sec)
以下コマンドで権限を反映させる。
mysql> FLUSH PRIVILEGES;
ユーザが追加されていればOK。
mysql> select host,user from mysql.user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
| localhost | <USERNAME> |
+-----------+------------------+
5 rows in set (0.00 sec)
以上で完了!