「インストール - MySQL8」の版間の差分

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
29行目: 29行目:


== MySQL公式リポジトリの追加と設定 ==
== MySQL公式リポジトリの追加と設定 ==
MySQL8.0をインストールするには、まず、[https://dev.mysql.com/downloads/repo/suse/ MySQL公式サイト]からリポジトリをインストールする必要がある。<br>
MySQL8.0をインストールするには、まず、以下のMySQL公式Webサイトからリポジトリをインストールする必要がある。<br>
openSUSE15用のリポジトリをダウンロードする。<br>
* CentOS(CentOS7系は、RHEL7系のパッケージをダウンロードする)
*: [https://dev.mysql.com/downloads/repo/yum/ CentOS向けMySQL公式サイト]
* SUSE
*: [https://dev.mysql.com/downloads/repo/suse/ SUSE向けMySQL公式サイト]
<br>
または、以下のコマンドを実行して直接インストールする。<br>
または、以下のコマンドを実行して直接インストールする。<br>
# CentOS
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# SUSE
  sudo zypper install https://dev.mysql.com/get/mysql80-community-release-sl15-3.noarch.rpm
  sudo zypper install https://dev.mysql.com/get/mysql80-community-release-sl15-3.noarch.rpm
  sudo zypper refresh
  sudo zypper refresh
このリポジトリを追加することで、MySQL8.0のいずれかを選択して、インストールすることができるようになる。<br>
<br>
このリポジトリを追加することで、MySQL5.5~5.7、8.0のいずれかを選択して、インストールすることができるようになる。<br>
<br>
<br>
リポジトリが追加されたかどうかは、以下のコマンドで確認できる。<br>
リポジトリが追加されたかどうかは、以下のコマンドで確認できる。<br>
# CentOS
sudo yum repolist all | grep mysql
# SUSE
  sudo zypper repos | grep mysql
  sudo zypper repos | grep mysql
<br>
上記のリストで[有効]と表示されている項目が、標準でインストールされるパッケージである。<br>
上記のリストで[有効]と表示されている項目が、標準でインストールされるパッケージである。<br>
<br><br>
<br><br>

2020年10月5日 (月) 15:19時点における版

概要

標準でインストール可能なMySQLは、MariaDBというMySQL派生のDBである。
MySQLとほぼ同じなので、そのまま使用しても問題ないが、本番環境でMySQL8.0を使用する場合は、同じバージョンに揃えたい時がある。

ここでは、MySQL8.0をインストールする方法を記載する。


MariaDBのアンインストール

もし、既にMariaDBがインストールされている場合は、MariaDBをアンインストールする。
まず、インストールされているパッケージの確認するため、以下のコマンドを実行する。

# CentOS
sudo rpm -qa | grep maria

# SUSE
sudo zypper search -i --detail | grep maria


CentOSの場合、mariadb-libs-<バージョン名>.el<バージョン名>.x86_64と表示されるので、このパッケージをアンインストールする。
SUSEの場合、mariadbと表示されるので、このパッケージをアンインストールする。

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

# SUSE
sudo zypper remove mariadb-libs
sudo rm -rf /var/lib/mysql/


依存性関連のパッケージが存在すれば、同時に削除される。


MySQL公式リポジトリの追加と設定

MySQL8.0をインストールするには、まず、以下のMySQL公式Webサイトからリポジトリをインストールする必要がある。


または、以下のコマンドを実行して直接インストールする。

# CentOS
sudo yum install https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

# SUSE
sudo zypper install https://dev.mysql.com/get/mysql80-community-release-sl15-3.noarch.rpm
sudo zypper refresh


このリポジトリを追加することで、MySQL5.5~5.7、8.0のいずれかを選択して、インストールすることができるようになる。

リポジトリが追加されたかどうかは、以下のコマンドで確認できる。

# CentOS
sudo yum repolist all | grep mysql

# SUSE
sudo zypper repos | grep mysql


上記のリストで[有効]と表示されている項目が、標準でインストールされるパッケージである。


MySQL8.0のインストール

インストールを行う前に、パッケージのバージョンを確認する。

sudo zypper search --detail mysql-community-server

表示されているパッケージのバージョンが8.0.xxであれば、インストールを開始する。

sudo zypper install mysql-community-server

インストールの途中において、mysql公開鍵が無いというメッセージが表示されるが、インストール時に鍵も一緒にインストールされるのでそのまま続ける。

インストール完了後、MySQLのバージョンを確認する。

mysqld –-version


最後に、自動起動の設定をしてMySQLを起動する。

sudo systemctl enable mysqld
sudo systemctl start mysqld



MySQLのrootパスワードの確認

MySQLのインストール時にrootのパスワードがログに出力されているので確認する。
ここでは、V9djjjWFd_wfがrootのパスワードである。

grep password /var/log/mysqld.log

# 結果
2019-02-17T01:49:46.433912Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: V9djjjWFd_wf



MySQLの初期設定

MySQLの初期設定は、いくつかの質問に答えるだけで完了する。以下に、質問箇所を抜粋して記載する。
パスワードは8文字以上+大文字小文字+数値+記号を含める必要がある。

sudo mysql_secure_installation

Enter current password for root (enter for none):(何も入力せずエンター)
Set root password? [Y/n] y(設定する方が良いのでy)
New password:(設定したいパスワードを入力)
Re-enter new password:(設定したいパスワードを再入力)
Remove anonymous users? [Y/n] y(匿名ユーザーは不要なのでy)
Disallow root login remotely? [Y/n] y(rootでリモートログインはNGなのでy)
Remove test database and access to it? [Y/n]y(テスト用のデータベースはいらないのでy)
Reload privilege tables now? [Y/n]y(ここまでの設定を反映させるのでy)


続いて、文字コードの設定を行うため、以下のファイルを開く。
この設定を行わないと、日本語が文字化けする可能性がある。

sudo vi /etc/my.cnf


[mysqld_safe]の上部辺りに、以下の4行を追加する。

character_set_server=utf8mb4
explicit_defaults_for_timestamp=true
skip-character-set-client-handshake
table_definition_cache=400


MySQLを再起動するため、以下のコマンドを実行する。

sudo systemctl restart mysqld



MySQLユーザの作成

rootユーザでデータベースを操作するわけにはいかないので、ユーザを作成する。
まず、MySQLにログインする。

sudo mysql -p

Enter password:(rootユーザに設定したパスワード)


ローカル環境でのみ使用するサーバなので、全ての権限を持ったユーザを作成する。(通常はこのようなユーザは作成しない)

mysql> CREATE USER 'ユーザ名'@'ホスト名' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'ユーザ名'@'ホスト名';
mysql> FLUSH PRIVILEGES;


以降は、このユーザで操作をするため、再ログインする。

mysql> exit;
sudo mysql -u ユーザ名 -p

Enter password:(作成したユーザに設定したパスワード)



パスワードを忘れた場合の対処

もし、パスワードを忘れてログインできない場合は、まず、MySQLをセーフモードで起動して、パスワードなしでログインする。
まず、/etc/my.cnfファイルの[mysqld]セクションに以下の設定を追記する記述する。

sudo vi /etc/my.cnf

# /etc/my.cnfファイル
[mysqld]
skip-grant-tables ; skip-grant-tablesで認証をOFF
skip-networking   ; skip-networkingで外部(リモート)からの接続を禁止


MySQLを再起動をして設定を反映する。

sudo systemctl restart mysql


MySQLにログインする。

mysql -u root


MySQLのテーブルに格納されているrootユーザのパスワードを空にする。

USE mysql;
UPDATE mysql.user SET authentication_string=null WHERE User='root';


/etc/my.cnfファイルの[mysqld]セクションの設定を元に戻す。

sudo vi /etc/my.cnf

[mysqld]
# skip-grant-tables
# skip-networking


MySQLを再起動して設定を反映させる。

sudo systemctl restart mysql


上記で設定した空のパスワード(rootユーザ)でログインして、rootユーザのパスワードを再設定する。

mysql -u root -p 

USE mysql;
ALTER USER 'root'@'localhost' identified BY 'HogeHoge1';