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

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


== MySQL WorkBenchのインストール ==
== MySQL WorkBenchのインストール ==
==== パッケージ管理システムを使用してインストール ====
MySQL WorkBenchと依存関係のライブラリをインストールする。<br>
sudo zypper install mysql-workbench libOpenCL1 libantlr4-runtime4_7_2 libfreexl1 libgdal26 libgeos-3_6_2 libgeos_c1 libgeotiff5 libhdf5-103 \
                    libhdf5_cpp103 libhdf5_hl100 libkea1_4 libmariadb-devel libmysqlcppconn7 libnetcdf15 libproj19 libscintilla3 \
                    libspatialite7 libvsqlitepp3 proj python python-enum34 python-ipaddress python-xml python2-PyNaCl python2-appdirs \
                    python2-asn1crypto python2-bcrypt python2-cffi python2-cryptography python2-idna python2-packaging python2-paramiko \
                    python2-pexpect python2-ptyprocess python2-pyasn1 python2-pycparser python2-pyparsing python2-setuptools python2-six
<br>
==== ソースコードからインストール ====
[https://dev.mysql.com/downloads/ MySQLの公式Webサイト]にアクセスして、MySQL WorkBenchのソースコードをダウンロードする。<br>
MySQL WorkBenchのビルドに必要なライブラリをインストールする。<br>
MySQL WorkBenchのビルドに必要なライブラリをインストールする。<br>
  sudo zypper install cmake autoconf automake pkg-config libtool libzip-devel libxml2-devel libsigc++2-devel libglade2-devel \
  sudo zypper install cmake autoconf automake pkg-config libtool libzip-devel libxml2-devel libsigc++2-devel libglade2-devel \
180行目: 190行目:
                     mysql-client python-pysqlite sqlite3-devel swig vsqlite++-devel gdal-devel gtk3-devel gtkmm3-devel \
                     mysql-client python-pysqlite sqlite3-devel swig vsqlite++-devel gdal-devel gtk3-devel gtkmm3-devel \
                     libopenssl-devel libsecret-devel proj-devel
                     libopenssl-devel libsecret-devel proj-devel
<br>
* ANTLR(推奨)
*: MySQLパーサ用のファイルを生成するには、ANTLR 4.7以降が必要である。
*: [http://www.antlr.org/download.html ANTLRの公式Webサイト]にアクセスして、antlr-<バージョン>-complete.jarファイルをダウンロードする。
*: cmakeコマンドを実行する時、このjarファイルのパスをcmakeの引数として渡す必要がある。
*: -DWITH_ANTLR_JAR=<antlr-<バージョン>-complete.jarファイルのパス>
*: <br>
* iodbc
*: ミドルウェアにおいて、iodbcの代わりにunixODBCを使用する場合を記載する。
*: まず、unixODBCをインストールする。
*: cmakeコマンドを実行する時、<code>-DUSE_UNIXODBC=True</code>オプションを付加する。<br>
*: <br>
* gdal
*: Ubuntuの場合、unixodbcが必須である。
*: もし、iodbcを使用する場合は、MySQL WorkBenchをソースコードからビルドする必要がある。
<br>
<br>
cmakeコマンドを実行して、MySQL WorkBenchをコンパイルする。<br>
cmakeコマンドを実行して、MySQL WorkBenchをコンパイルする。<br>
  cmake -DCMAKE_INSTALL_PREFIX=<MySQL WorkBenchのインストールディレクトリ> ..
mkdir build && cd build
  cmake -DCMAKE_INSTALL_PREFIX=<MySQL WorkBenchのインストールディレクトリ> -DWITH_ANTLR_JAR=<antlr-<バージョン>-complete.jarファイルのパス> ..
  make -j 8
  make -j 8
<br>
<br>

2021年1月14日 (木) 18:12時点における版

概要

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

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


MariaDBのアンインストール

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

# CentOS
sudo rpm -qa | grep maria

# SUSE
sudo zypper search -i | 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 mariadb-client mariadb-errormessages libmariadb3
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のインストール

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

# CentOS
sudo yum info mysql-community-server

# SUSE
sudo zypper search --detail mysql-community-server


表示されているパッケージのバージョンが8.0.xxであれば、インストールを開始する。
インストールの途中において、MySQLのGPG公開鍵が無いというメッセージが表示されるが、
インストール時にGPG公開鍵も同時にインストールされるので、そのまま続ける。

# CentOS
sudo yum install mysql-community-server

# SUSE
sudo zypper install mysql-community-server


インストール完了後、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';



MySQL WorkBenchのインストール

パッケージ管理システムを使用してインストール

MySQL WorkBenchと依存関係のライブラリをインストールする。

sudo zypper install mysql-workbench libOpenCL1 libantlr4-runtime4_7_2 libfreexl1 libgdal26 libgeos-3_6_2 libgeos_c1 libgeotiff5 libhdf5-103 \
                    libhdf5_cpp103 libhdf5_hl100 libkea1_4 libmariadb-devel libmysqlcppconn7 libnetcdf15 libproj19 libscintilla3 \
                    libspatialite7 libvsqlitepp3 proj python python-enum34 python-ipaddress python-xml python2-PyNaCl python2-appdirs \
                    python2-asn1crypto python2-bcrypt python2-cffi python2-cryptography python2-idna python2-packaging python2-paramiko \
                    python2-pexpect python2-ptyprocess python2-pyasn1 python2-pycparser python2-pyparsing python2-setuptools python2-six


ソースコードからインストール

MySQLの公式Webサイトにアクセスして、MySQL WorkBenchのソースコードをダウンロードする。
MySQL WorkBenchのビルドに必要なライブラリをインストールする。

sudo zypper install cmake autoconf automake pkg-config libtool libzip-devel libxml2-devel libsigc++2-devel libglade2-devel \
                    Mesa-libGL1 Mesa-libGL-devel Mesa-devel libmysqlclient-dev libmysqlcppconn-devel libuuid-devel \
                    libpixman-1-0-devel pcre-devel pango-devel cairo-devel python-devel libboost_headers1_66_0-devel \
                    mysql-client python-pysqlite sqlite3-devel swig vsqlite++-devel gdal-devel gtk3-devel gtkmm3-devel \
                    libopenssl-devel libsecret-devel proj-devel


  • ANTLR(推奨)
    MySQLパーサ用のファイルを生成するには、ANTLR 4.7以降が必要である。
    ANTLRの公式Webサイトにアクセスして、antlr-<バージョン>-complete.jarファイルをダウンロードする。
    cmakeコマンドを実行する時、このjarファイルのパスをcmakeの引数として渡す必要がある。
    -DWITH_ANTLR_JAR=<antlr-<バージョン>-complete.jarファイルのパス>

  • iodbc
    ミドルウェアにおいて、iodbcの代わりにunixODBCを使用する場合を記載する。
    まず、unixODBCをインストールする。
    cmakeコマンドを実行する時、-DUSE_UNIXODBC=Trueオプションを付加する。

  • gdal
    Ubuntuの場合、unixodbcが必須である。
    もし、iodbcを使用する場合は、MySQL WorkBenchをソースコードからビルドする必要がある。


cmakeコマンドを実行して、MySQL WorkBenchをコンパイルする。

mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=<MySQL WorkBenchのインストールディレクトリ> -DWITH_ANTLR_JAR=<antlr-<バージョン>-complete.jarファイルのパス> ..
make -j 8


MySQL WorkBenchをインストールする。

make install DESTDIR=<MySQL WorkBenchのインストールディレクトリ>



phpMyAdmin

phpMyAdminのインストール

常にコマンドラインから操作することは面倒であるので、Webブラウザから操作できるphpMyAdminをインストールする。
PHPからMySQLを使用するために必要なパッケージが一式インストールできるので、phpMyAdminを使用する予定がなくても、
インストールしておくと便利である。

# CentOS
sudo yum --enablerepo=epel,remi,remi-php73 install phpMyAdmin
sudo yum --enablerepo=epel,remi,remi-php73 install php-pecl-mcrypt

# SUSE
sudo zypper install phpMyAdmin


phpMyAdminの設定

まず、設定ファイルであるconfig.inc.phファイルを編集する。
config.inc.phpファイルに暗号化用のパスフレーズを設定する。これを行わないと、phpMyAdmin上でエラーが表示される。
(設定ファイルに暗号化(blowfish_secret)用の非公開パスフレーズの設定を必要とするようになった)

面倒な時は以下のコマンドを実行して、32桁のパスフレーズを作成する。

sudo openssl rand -base64 100 | fold -w 32 | head -1

出力例 : GgP1/5FMW7Nf3iX1rXmqeQj4k/mHAZDv


設定ファイルはサンプルがあるので、それをコピーして編集する。

sudo cp -a /usr/share/doc/phpMyAdmin-4.9.0.1/config.sample.inc.php /etc/phpMyAdmin/config.inc.php
sudo nano /etc/phpMyAdmin/config.inc.php


ファイルの先頭のあたりに、以下の行がある。
$cfg['blowfish_secret']の値に、上記で作成したパスフレーズを入力する。

/**
* This is needed for cookie based authentication to encrypt password in
* cookie. Needs to be 32 chars long.
*/
$cfg['blowfish_secret'] = ; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */


次に、phpMyAdmin.conf”ファイルの設定を行う。
まず、アクセス権に関する設定を行う。(これを行わないとphpMyAdminにアクセスできない)

sudo nano /etc/httpd/conf.d/phpMyAdmin.conf

16行目と30行目にある”Require local”の1つ下の行に以下の設定を追加する。

# Apache 2.4
Require ip 192.168.xxx.0/24


編集を完了したら、Apacheを再起動する。

sudo systemctl restart httpd


Webブラウザから、http://localost/phpmyadmin/ にアクセスし、ログイン画面が表示されることを確認する。

※上記のURLでエラーが表示される場合
もし、下記のようなエラーが出力される場合は、外部と通信しないローカル環境のみのサーバなので、
セッション情報を保存するsessionディレクトリの権限を変更する。

# エラー内容
phpMyAdmin - Error
Error during session start; please check your PHP and/or webserver log file and configure your PHP installation properly. Also ensure that cookies are enabled in your browser.
session_start(): open(SESSION_FILE, O_RDWR) failed: Permission denied (13)
session_start(): Failed to read session data: files (path: /var/lib/php/session)

sudo chmod 777 /var/lib/php/session


また、下記のようなエラーが出力される場合は、tempディレクトリの権限を変更する。

# エラー内容
$cfg['TempDir'] (/var/lib/phpMyAdmin/temp/)にアクセスできません。
phpMyAdmin はテンプレートをキャッシュすることができないため、低速になります。

sudo chmod 777 /var/lib/phpMyAdmin/temp


※phpMyAdminにログインできない場合
接続方式を変更するために、rootユーザでMySQLにログインする。

sudo mysql -u root -p


次に、以下のクエリを発行する。

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'パスワード';
mysql> FLUSH PRIVILEGES;

最後に、MySQLを再起動する。

sudo systemctl restart mysqld


phpMyAdminにログインできるか確認する。