「インストール - MySQL8」の版間の差分
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';