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

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動
95行目: 95行目:
   
   
  Enter password:(作成したユーザに設定したパスワード)
  Enter password:(作成したユーザに設定したパスワード)
<br><br>
== パスワードを忘れた場合の対処 ==
もし、パスワードを忘れてログインできない場合は、まず、MySQLをセーフモードで起動して、パスワードなしでログインする。<br>
まず、/etc/my.cnfファイルの[mysqld]セクションに以下の設定を追記する記述する。<br>
sudo vi /etc/my.cnf
# /etc/my.cnfファイル
[mysqld]
skip-grant-tables ; skip-grant-tablesで認証をOFF
skip-networking  ; skip-networkingで外部(リモート)からの接続を禁止
<br>
MySQLを再起動をして設定を反映する。<br>
sudo systemctl restart mysql
<br>
MySQLにログインする。<br>
mysql -u root
<br>
MySQLのテーブルに格納されているrootユーザのパスワードを空にする。<br>
USE mysql;
UPDATE mysql.user SET authentication_string=null WHERE User='root';
<br>
/etc/my.cnfファイルの[mysqld]セクションの設定を元に戻す。<br>
sudo vi /etc/my.cnf
[mysqld]
# skip-grant-tables
# skip-networking
<br>
MySQLを再起動して設定を反映させる。<br>
sudo systemctl restart mysql
<br>
上記で設定した空のパスワード(rootユーザ)でログインして、rootユーザのパスワードを再設定する。<br>
mysql -u root -p
USE mysql;
ALTER USER 'root'@'localhost' identified BY 'HogeHoge1';
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:SUSE]]
[[カテゴリ:SUSE]]

2020年4月2日 (木) 04:40時点における版

概要

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


MariaDBのアンインストール

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

sudo zypper search -i --detail | grep maria

mariadbと表示される場合、このパッケージをアンインストールする。

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

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


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

MySQL8.0をインストールするには、まず、MySQL公式サイトからリポジトリをインストールする必要がある。
openSUSE15用のリポジトリをダウンロードする。
または、以下のコマンドを実行して直接インストールする。

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

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

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

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';