kakiro-webカキローウェブ

システム開発情報とコンピューター書籍の紹介サイト

CentOS7.1 64bitにMySQL5.6.25をRPMからインストール

CentOS7.1の64bit版にMySQL5.6.25をRPMからインストールする方法を以下に示します。

※CentOS6 64bitをご使用の場合は、当サイトのCentOS6 64bitにMySQLをRPMからインストールのページをご覧ください。

CentOS7になり、標準リポジトリからMySQLはインストールできなくなっています。MySQLの公式サイトからRPMをダウンロードすることで、新しいバージョンのインストールを行うことができます。

※MySQLのyumリポジトリを使用して、最新バージョンをインストールすることも可能です。詳細は当サイトのCentOS7 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストールのページをご覧ください。

依存関係にあるパッケージで、CentOS7.1の標準リポジトリからインストールできるものについては、特別なものでない限り省略しています。

以下の各コマンドで、プロンプトが「#」で開始しているものはrootユーザーでの実行、「$」で開始しているものは一般ユーザーでの実行となります。

MariaDB関連のパッケージのアンインストール

MySQL-serverのインストール時に、以下のようなエラーになってしまう場合、

ファイル /usr/share/mysql/charsets/README (パッケージ MySQL-server-5.6.25-1.el7.x86_64 から) は、パッケージ mariadb-libs-1:5.5.41-2.el7_0.x86_64 からのファイルと競合しています。
:(略)

CentOS7になり標準リポジトリからはMySQLではなく、MariaDBがインストールできるようになっており、MariaDB関連のパッケージがインストールされていると、MySQLと競合してしまうのが原因です。

以下のようなコマンドを実行して、インストールされているMariaDB関連のパッケージのアンインストールを行います。

# yum remove mariadb-libs

perl-Data-Dumperのインストール

MySQL-serverのインストール時に、以下のようなエラーになってしまう場合、

FATAL ERROR: please install the following Perl modules before executing /usr/bin/mysql_install_db:
Data::Dumper

Data::DumperというPerlのモジュールが必要となるのですが、これにはperl-Data-Dumperをインストールすればよいです。

これは以下のコマンドで確認できます。

# yum provides *Data::Dumper*
:(略)
perl-Data-Dumper-2.145-3.el7.x86_64 : Stringify perl data structures, suitable for printing and eval
リポジトリー        : base
一致          :
ファイル名    : /usr/share/man/man3/Data::Dumper.3pm.gz
その他        : perl(Data::Dumper) = 2.145

以下のコマンドを実行してperl-Data-Dumperのインストールを行います。

# yum install perl-Data-Dumper

※MySQL-serverのインストール時にこのエラーになった場合は、perl-Data-Dumperのインストール後もMySQLのサービスの起動に失敗してしまうようですので、一度MySQL-serverをアンインストールして、再度MySQL-serverインストールを行ったほうがよいかと思います。

MySQL-server5.6.25のインストール

MySQLの公式サイトからMySQL5.6.25のRPMを一式ダウンロードし、インストールを行います。

MySQL5.6.25のRPMを一式ダウンロード

以下のコマンドを実行して、MySQL5.6.25のRPMが一式揃ったtarファイルのダウンロードを行います。

※ダウンロード元のURLは、MySQLの公式サイトから遷移できるRed Hat Enterprise Linux 7 64bit用のRPM Bundleのダウンロードページにリンクがあります。

※ページ下部の「No thanks, just start my download.」のリンクを利用すれば、Oracleのアカウントでログインを行う必要はありません。

(新しいバージョンがリリースされてリンク切れになっている場合は、アーカイブページにダウンロードのリンクがあると思いますので、こちらを参照してみてください。)

$ wget http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.25-1.el7.x86_64.rpm-bundle.tar

以下のコマンドを実行して、ダウンロードしたtarファイルを展開します。

$ tar -xvf MySQL-5.6.25-1.el7.x86_64.rpm-bundle.tar

MySQL-server5.6.25のインストール

以前にMySQLをインストールして、そのアンインストールを行っている場合、以前に使用していたデータはアンインストールを行っても残っています。以前のデータが不要な場合は、以下のコマンドを実行して削除を行います。

# rm -rf /var/lib/mysql/

以下のコマンドを実行して、MySQL-server5.6.25のインストールを行います。

# rpm -Uvh MySQL-server-5.6.25-1.el7.x86_64.rpm

インストール中に以下のようなメッセージが表示されます。

これはMySQLを起動して最初にrootユーザーで接続するときのパスワードが、ファイル「/root/.mysql_secret」に記載されていて、接続後に「SET PASSWORD」でパスワードの変更を行うまでは、他のステートメントは実行できないことを示しています。

A RANDOM PASSWORD HAS BEEN SET FOR THE MySQL root USER !
You will find that password in '/root/.mysql_secret'.

You must change that password on your first connect,
no other statement but 'SET PASSWORD' will be accepted.
See the manual for the semantics of the 'password expired' flag.

MySQL-client5.6.25のインストール

サーバー上でMySQLに接続するときに使用するmysqlコマンドが含まれている、MySQL-client5.6.25のインストールを行います。

MySQL-client5.6.25のrpmは、上記でダウンロードしたRPM Bundleに含まれています。

MySQL-client5.6.25のインストール

以下のコマンドを実行して、MySQL-client5.6.25のインストールを行います。

# rpm -Uvh MySQL-client-5.6.25-1.el7.x86_64.rpm

MySQL-shared5.6.25、またはMySQL-shared-compat5.6.25のインストール

他のパッケージをインストールする際に依存関係としてmariadb-libsが必要な場合、MySQL-shared、またはMySQL-shared-compatのインストールを行うことで依存関係を解決できます。

※CentOS7になり、MySQLは標準のリポジトリからインストールできなくなり、MariaDBが標準となっているため、依存関係もmysql-libsからmariadb-libsに変わっていますが、MariaDBはMySQLと互換性を持つため、mysql-libsに対応するMySQL-shared、またはMySQL-shared-compatをインストールすることでも依存関係を解決できます。

MySQL-shared-compatは、古いバージョンのMySQLに対応したものになっています。

MySQL-shared5.6.25、MySQL-shared-compat5.6.25のrpmは、上記でダウンロードしたRPM Bundleに含まれています。

MySQL-shared5.6.25のインストール

以下のコマンドを実行して、MySQL-shared5.6.25のインストールを行います。

# rpm -Uvh MySQL-shared-5.6.25-1.el7.x86_64.rpm

MySQL-shared-compat5.6.25のインストール

以下のコマンドを実行して、MySQL-shared-compat5.6.25のインストールを行います。

# rpm -Uvh MySQL-shared-compat-5.6.25-1.el7.x86_64.rpm

インストール後の設定

MySQLのサービスを起動

以下のコマンドを実行して、MySQLのサービスを起動することができます。

# systemctl start mysql.service

尚、サービス名は以下のコマンドで確認することができます。

# rpm -ql MySQL-server | grep init.d
/etc/init.d/mysql

MySQLのサービスを自動で起動させる

MySQLのサービスは、インストール時点で自動で起動するようになっています。

自動起動設定の状態は、以下のコマンドで確認できます。

# systemctl is-enabled mysql.service
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql --level=5
enabled

※自動起動する設定になっている場合は「enabled」、なっていない場合は「disabled」と表示されます。

自動起動する設定になっていない場合、以下のコマンドで自動で起動するように設定できます。

# systemctl enable mysql.service

自動起動しないようにしたい場合は、以下のコマンドを実行します。

# systemctl disable mysql.service

MySQLへの接続

最初にローカルのMySQLにコマンドラインで接続するには、以下のコマンドを実行します。

# mysql -u root -p
Enter password:

最初の接続時は、ファイル「/root/.mysql_secret」に記載されているパスワードを入力すると接続できます。

rootユーザーにパスワードを設定

MySQL-serverのインストール時のメッセージにあったように、最初の接続後にパスワードの変更を行うまでは、他のステートメントを実行しても以下のようにエラーになってしまいます。

mysql> SHOW DATABASES;
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

以下のステートメントを実行して、ログイン中のrootユーザーのパスワードの変更を行います。

mysql> SET PASSWORD = PASSWORD('xxxxxxxxxx');

※「xxxxxxxxxx」には、設定したいパスワードを指定します。

これで通常通りステートメントが実行できるようになります。

rootユーザーはhostが「localhost」、「localhost.localdomain」、「127.0.0.1」、「::1」の4種類存在し、上記のステートメントでのパスワード変更はログイン中のrootユーザーである「localhost」のみに行われますので、他のhostのrootユーザーにもパスワードの変更を行う必要があります。

以下のステートメントを実行して、他のhostのrootユーザーのパスワードの変更を行います。

mysql> SET PASSWORD FOR 'root'@'localhost.localdomain' = PASSWORD('xxxxxxxxxx');
mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('xxxxxxxxxx');
mysql> SET PASSWORD FOR 'root'@'::1' = PASSWORD('xxxxxxxxxx');

※「xxxxxxxxxx」には、設定したいパスワードを指定します。

尚、MySQLに存在しているユーザーは、以下のようなステートメントで確認することができます。

mysql> SELECT host,user,password FROM mysql.user;

現在ログイン中のユーザーは、以下のステートメントで確認することができます。

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

MySQLへの外部からのアクセスを許可

外部からアクセス可能なデータベース接続ユーザーの作成については、当サイトのMySQL データベース接続ユーザーの作成のページをご覧ください。

また、MySQLへの外部からのアクセスは、iptablesによってデフォルトでは拒否されています。CentOS7になってiptablesの設定には、firewalldを使用するようになっています。

firewalldによるMySQLへの外部アクセス許可の設定については、当サイトのCentOS7 64bit firewalldによるアクセス制御のページをご覧ください。

データベースの作成

データベースの作成については、当サイトのMySQL データベースの作成のページをご覧ください。

テーブルの作成

テーブルの作成については、当サイトのMySQL テーブルの作成のページをご覧ください。

データベース接続ユーザーの作成

データベース接続ユーザーの作成については、当サイトのMySQL データベース接続ユーザーの作成のページをご覧ください。

SQLモードについて

MySQLでSQLの動作を指定するものとして、SQLモードというものがあります。SQLモードについては、当サイトのMySQL SQLモードの設定、確認についてのページMySQL SQLモードの内容についてのページをご覧ください。

実行されたSQLをログに出力

実行されたSQLのログ出力については、当サイトのMySQL 実行されたSQLをログに出力のページをご覧ください。

データベースのバックアップとリカバリー

データベースのバックアップとリカバリーについては、当サイトの以下のページをご覧ください。

MySQL5.6.25のインストールについては、以上です。

SQLのテクニックに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのテクニックに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

SQLのパフォーマンスに関するおすすめの書籍

当サイトの書籍紹介ページで、SQLのパフォーマンスに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。

DB設計、SQLに関するおすすめの書籍

当サイトの書籍紹介ページで、DB設計、SQLに関するおすすめの書籍の紹介も行っておりますので、ご覧ください。