kakiro-webカキローウェブ

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

CentOS7.1 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストール

CentOS7.1の64bit版のyumリポジトリにMySQLを追加し、最新バージョンをインストールする方法を以下に示します。

※CentOS6 64bitをご使用の場合は、当サイトのCentOS6 64bitのyumリポジトリにMySQLを追加し、最新バージョンをインストールのページをご覧ください。

CentOS7になり、標準リポジトリからMySQLはインストールできなくなっています。MySQLのyumリポジトリを利用することで、最新バージョンのMySQLをyumコマンドによりインストールすることができるようになります。

※MySQLをRPMからインストールすることも可能です。詳細は当サイトのCentOS7 64bitにMySQLをRPMからインストールのページをご覧ください。

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

MySQLのリポジトリ設定パッケージをダウンロード

以下のコマンドを実行して、MySQLのリポジトリ設定パッケージのダウンロードを行います。

※ダウンロード元のURLは、MySQLの公式サイトから遷移できるCentOS7用のyumリポジトリのダウンロードページにリンクがあります。

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

$ wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm

MySQLのリポジトリのインストール

以下のコマンドを実行して、MySQLのリポジトリ設定パッケージのインストールを行います。

# rpm -Uvh mysql-community-release-el7-5.noarch.rpm

デフォルトの設定では、yumコマンドの実行時にMySQLのいくつかのリポジトリは、自動的に使用されるようになっています。明示的に使用されるようにしたい場合は、インストールされたMySQLのリポジトリの設定ファイル「/etc/yum.repos.d/mysql-community.repo」を以下のように編集します。

[mysql-connectors-community]
:(略)
enabled=1
↓変更
enabled=0
[mysql-tools-community]
:(略)
enabled=1
↓変更
enabled=0
[mysql56-community]
:(略)
enabled=1
↓変更
enabled=0

yumコマンドの実行時にMySQL5.6のリポジトリを使用するには、以下のようにオプション「--enablerepo=mysql56-community」を付けて実行します。

# yum --enablerepo=mysql56-community install mysql-community-server

MySQLのインストール

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

# rm -rf /var/lib/mysql/

以下のコマンドを実行して、MySQL5.6の最新バージョンのインストールを行うことができます。

# yum --enablerepo=mysql56-community install mysql-community-server

尚、MySQLのリポジトリから初めてyumコマンドでパッケージのインストールを行う際には、以下のような警告メッセージが表示されます。

警告: /var/cache/yum/x86_64/7/mysql56-community/packages/mysql-community-common-5.6.26-2.el7.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID xxxxxxxx: NOKEY
mysql-community-common-5.6.26-2.el7.x86_64.rpm の公開鍵がインストールされていません
(1/12): mysql-community-common-5.6.26-2.el7.x86_64.rpm                                                | 256 kB  00:00:00
(2/12): mysql-community-libs-5.6.26-2.el7.x86_64.rpm                                                  | 2.0 MB  00:00:00
(3/12): perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm                                                |  32 kB  00:00:00
(4/12): perl-Compress-Raw-Zlib-2.061-4.el7.x86_64.rpm                                                 |  57 kB  00:00:00
(5/12): net-tools-2.0-0.17.20131004git.el7.x86_64.rpm                                                 | 304 kB  00:00:00
(6/12): perl-Data-Dumper-2.145-3.el7.x86_64.rpm                                                       |  47 kB  00:00:00
(7/12): perl-IO-Compress-2.061-2.el7.noarch.rpm                                                       | 260 kB  00:00:00
(8/12): perl-Net-Daemon-0.48-5.el7.noarch.rpm                                                         |  51 kB  00:00:00
(9/12): perl-DBI-1.627-4.el7.x86_64.rpm                                                               | 802 kB  00:00:00
(10/12): perl-PlRPC-0.2020-14.el7.noarch.rpm                                                          |  36 kB  00:00:00
(11/12): mysql-community-client-5.6.26-2.el7.x86_64.rpm                                               |  19 MB  00:00:13
(12/12): mysql-community-server-5.6.26-2.el7.x86_64.rpm                                               |  58 MB  00:00:19
-----------------------------------------------------------------------------------------------------------------------------
合計                                                                                         3.9 MB/s |  81 MB  00:00:20
file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql から鍵を取得中です。
Importing GPG key 0xXXXXXXXX:
 Userid     : "MySQL Release Engineering <mysql-build@oss.oracle.com>"
 Fingerprint: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
 Package    : mysql-community-release-el7-5.noarch (installed)
 From       : file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
上記の処理を行います。よろしいでしょうか? [y/N]

これはyumコマンドでパッケージのインストールを行う際には、GPG署名というものを使用して、パッケージの検証を行うようになっているのですが、その際に必要なキーが存在しないため、インポートしてよいか確認するメッセージになります。

キーのインポートを行うので、「y」を入力します。

尚、インポートされているキーは、以下のコマンドで確認できます。

# rpm -qa gpg-pubkey*
gpg-pubkey-xxxxxxxx-xxxxxxxx
gpg-pubkey-xxxxxxxx-xxxxxxxx

キーは、CentOSのリポジトリのもの、MySQLのリポジトリのもの等、使用しているリポジトリ別に管理されます。

インストール後の設定

MySQLのサービスを起動

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

# systemctl start mysqld.service

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

# rpm -ql mysql-community-server | grep /usr/lib/systemd/system/
/usr/lib/systemd/system/mysqld.service

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

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

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

# systemctl is-enabled mysqld.service
enabled

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

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

# systemctl enable mysqld.service

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

# systemctl disable mysqld.service

MySQLへの接続

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

# mysql -u root

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

デフォルトでは、rootユーザーにパスワードが設定されていません。以下のようなステートメントを実行して、パスワードの設定を行うことができます。

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('xxxxxxxxxx');
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」には、設定したいパスワードを指定します。

rootユーザーは、hostが「localhost」、「localhost.localdomain」、「127.0.0.1」、「::1」の4種類存在しますので、それぞれにパスワードの設定を行う必要があります。

パスワードの設定後に、ローカルのMySQLにコマンドラインで接続するには、以下のコマンドを実行します。

# mysql -u root -p
Enter password:

設定したパスワードを入力すると、接続することができます。

匿名ユーザーの削除

ローカルのMySQLにパスワード付きのユーザーで接続を行う際に、以下のようなエラーになってしまう場合、

ERROR 1045 (28000): Access denied for user 'xxxxx'@'localhost' (using password: YES)

※「xxxxx」はログイン時に指定したユーザー名。

MySQLにデフォルトでユーザー名、パスワードが空のユーザーが存在することが原因になっています。

尚、MySQLにログインを行う際に、以下のようにパスワードの指定を行わないようにするとログインすることができますが、実際には指定したユーザーではなく、匿名ユーザーでのログインになっています。

# mysql -u xxxxx

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

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

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

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

デフォルトでは、hostが「localhost」、「localhost.localdomain」でuser、passwordが空のユーザーが存在しています。

※該当のユーザーのhostがローカルホストになっているため、外部からのアクセス時には影響がありません。

これらのユーザーが不要な場合は、以下のステートメントで削除を行うことができます。

mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'localhost.localdomain';

※ユーザーの削除をmysql.userテーブルからDELETE文を使用して削除を行い、FLUSH PRIVILEGESを実行する方法もあり、以前のバージョンのMySQLの公式ドキュメントでも紹介されていましたが、現在はMySQLの公式ドキュメントでもDROP USER文を使用するようになっていますので、こちらを使用したほうがよいかと思います。

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をログに出力のページをご覧ください。

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

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

yumリポジトリにMySQLを追加し、最新バージョンをインストールについては、以上です。

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

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

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

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

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

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