Django用にMySQL8.0をインストールする

Web開発

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)

以上で完了!

タイトルとURLをコピーしました