kakiro-webカキローウェブ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# rpm -Uvh mysql-community-release-el6-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コマンドでパッケージのインストールを行う際には、以下のような警告メッセージが表示されます。

警告: rpmts_HdrFromFdno: ヘッダ V3 DSA/SHA1 Signature, key ID xxxxxxxx: NOKEY
Retrieving key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
Importing GPG key 0xXXXXXXXX:
 Userid : MySQL Release Engineering <mysql-build@oss.oracle.com>
 Package: mysql-community-release-el6-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のサービスを起動することができます。

# service mysqld start

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

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

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

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

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

# chkconfig --list mysqld
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off

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

# chkconfig mysqld on

自動で起動するように設定した後の状態は、以下のようになります。

# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off

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

# chkconfig mysqld off

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によってデフォルトでは拒否されています。

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

データベースの作成

データベースの作成については、当サイトの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に関するおすすめの書籍の紹介も行っておりますので、ご覧ください。