Vol.2本連載では、MySQLのインストールと初期設定手順をステップ・バイ・ステップで分かりやすく解説します。初心者の方でも簡単にインストールが出来るよう、基礎的な内容を中心に構成しています。前回はtar.gzのバイナリを使ってMySQLのインストールを行いました。ファイルをダウンロードして展開するだけなので、短い時間で簡単にインストールできたのではないでしょうか。インストールが完了したら、続いてMySQLの初期設定を行います。インストールはあくまでもファイルをサーバー上に展開しただけなので、環境に合わせて最適に動作するための設定が必要になります。難しく感じるかもしれませんが、作業は簡単なので初心者の方でも心配ありません。第2回目となる今回は、MySQLの初期設定手順について解説します。オプション設定ファイルの作成MySQLには表や索引をキャッシュするために使用するメモリサイズやキャラクタ・セットといった様々なオプションがあり、環境に合わせてカスタマイズしながら使うことができます。オプションはMySQLの起動時やクライアントからの接続に使用するコマンドラインの引数として渡すことができますが、複数のオプションをその都度コマンドラインで指定するのは面倒ですし、抜け漏れが発生する恐れがあります。そのため、MySQLにはmy.cnfというオプション設定ファイルが提供されています。このテキストファイルにオプションを記述しておき、MySQLの起動時に自動で読み込ませることで、コマンドラインからオプションを指定する手間を省くことができます。1サンプルファイルの選択tar.gzのバイナリを使用してインストールした直後はmy.cnfファイルが存在しないので、support-filesディレクトリにあるサンプルをコピー(リネーム)して使います。サンプルは複数用意されているため、サーバーのメモリ量を基準にどれを使用するか判断します。オプション設定ファイルのサンプル今回用意したサーバーは16GBのメモリを搭載しているため、my-huge.cnfを使用します。使用するサンプルが決まったら、続いて配置場所を考えます。my.cnfを配置できる場所は複数あり、あらかじめ決められた順序に従って読み込まれます。配置場所は自由に決めて構いませんが、複数の場所にmy.cnfを配置すると後から読み込まれたオプションの値が優先されます。複数のMySQLをインストールする場合は、/etc/my.cnfや/etc/mysql/my.cnfを使用すると全てのMySQLが同じ設定ファイルを参照することになるため注意してください。今回はmy-huge.cnfを/usr/local/mysql/my.cnfとしてコピー(リネーム)して使用します。3my.cnfの確認と編集コピーが完了したら、my.cnfの中身を確認してみましょう。my.cnfは通常のテキストファイルなので、OSのコマンドで参照/更新することができます。my.cnfの記述方法は非常にシンプルで、[client]や[mysqld]といったグループのあとにオプション名と値を書くだけです。[mysqld]グループにはデフォルトで以下のようなオプションが設定されているので、この値を変更するか新しいオプションを追記すれば、MySQL起動時に設定が反映されます。サンプルとして書かれているオプションをそのまま使用しても構いませんが、最低限以下のオプションについては見直しを行ってください。5.5のデフォルトストレージエンジンであるInnoDB関連のオプションがデフォルトでは全てコメント化(無効化)されています。従って、InnoDBを使用する場合は、以下のようにコメントを解除してください。InnoDBストレージエンジンのデータをキャッシュするために使われるメモリサイズであるinnodb_buffer_pool_sizeが小さめの値に設定されているため、my.cnf内のコメントにある通り物理メモリの50%~80%程度まで大きな値に変更します。実際にはinnodb_buffer_pool_sizeに指定した値より若干多めのメモリが割り当てられるため、同じサーバー内で複数のMySQLが稼働する場合や、MySQL以外のデータベースやアプリケーションが稼働する場合は、あまり大きな値にしすぎないよう注意してください。InnoDBのREDOログサイズを指定するinnodb_log_file_sizeもinnodb_buffer_pool_sizeの25%程度に設定しておきます。日本語のデータを扱う場合のオプションMySQLのデフォルトキャラクタセットはlatin1になっているので、このままでは日本語のデータを扱うことができません。日本語を使用する場合は、[mysqld]と[client]に以下のオプションを追加します。MySQLの起動LinuxにおけるMySQLの起動方法は複数ありますが、手動で起動させる場合はmysqld_safeスクリプトを使用するのが便利です。このスクリプトを使用するとMySQLをただ起動させるだけでなく、MySQLが異常終了した場合に自動で再起動を行ってくれます。mysqld_safeスクリプトをそのまま実行してしまうと、MySQLが停止するまで端末のプロンプトが戻らなくなるため、『&』をつけてバックグラウンドで実行するようにしてください。これでMySQLが起動しました。psコマンドで確認すると、mysqldというプロセスが起動していることが分かります。OracleやPostgreSQLのようなマルチプロセス型のRDBMSの場合、複数のプロセスが同時に起動していますが、MySQLはマルチスレッド型のプログラムなのでプロセスは1つだけです。MySQLはコマンド1つで簡単に起動できますが、「サーバーの計画停止やメンテナンスのたびに手動で起動するのは面倒だ」という場合もあります。MySQLにはmysql.serverというスクリプトがあらかじめ用意されており、以下の通り設定することでMySQLの自動起動/停止が可能になります。MySQLが起動したら、mysqlコマンドを使ってMySQLに接続してみましょう。MySQLには管理者権限を持つrootユーザがあらかじめ作成されているので、-uオプションの引数にrootを指定して接続します。statusコマンドで状態を確認すると、rootユーザとして接続されていることが分かります。root)でしたが、MySQLではログインパスワードを設定できないのでしょうか?実はインストール直後のrootユーザにはパスワードが設定されていません。そのため、パスワードの入力なしで簡単に接続できてしまいます。ユーザの情報が格納されているmysql.user表をSELECT文で確認すると、password列が全て空白になっているのが分かります。※mysqltestは今回使用したサーバーのホスト名ですrootユーザは管理者権限を持っているため、パスワードなしで接続できる状態はセキュリティ上好ましくありません。テスト利用などの場合を除き、必ずパスワードを設定しましょう。事前に用意されているmysql_secure_installationスクリプトを実行すると、以下のセキュリティ設定を一括で行うことができます。・あらかじめ作成されているtestデータベースを削除これでrootユーザにパスワードが設定されました。ユーザ名のみを指定したコマンドでは、もうMySQLに接続することができません。パスワードを入力するには、-pオプションを指定します。パスワードの入力が求められますので、先ほどmysql_secure_installationスクリプトで設定した値を入力して接続します。mysql.user表のpassword列をSELECT文で確認すると、暗号化された値が入っていることが分かります。user列が空白の匿名ユーザも削除されています。以上でMySQLの基本的な初期設定は終了です。コマンドをフルパスで指定するのが手間だという場合は、ユーザの環境変数を以下のように設定しておくと便利です。次回はMySQLのブランチであるMariaDBについて、インストールと初期設定方法を解説します。隆ビジネスインフラ技術本部1995年入社。現在は「データベースのアシスト」を目指した事業戦略やプロダクトマーケティングを担当している。趣味:フットサル、ゴルフ、スキー、キャンプ、子供のサッカーチームのカメラマン担当。俊洋ビジネスインフラ技術本部2006年入社。データベース・システムの構築や運用トラブルの解決といった業務を経験し、その後新製品の検証やソリューションの立ち上げを経てエバンジェリストへ。2016年にクラウド事業を立ち上げ、現在はクラウドとデータベースの二足の草鞋を履いている。最後までご覧いただきありがとうございました。本記事でご紹介した製品・サービスに関するコンテンツをご用意しています。この記事の他にも、IT技術情報に関する執筆記事を多数公開しておりますのでぜひご覧ください。Database)DB(その他)2019.01.28ゼロからのリレーショナルデータベース入門データベースに対する敷居を少しでも低くするために、初心者の方に必要なデータベースの基本から、障害対策やチューニングといった実践に即した内容までを幅広く解説していきます。膨大なデータを活用することが求められる一方で、安全に扱うための制約も増加しています。データ活用の中でもテストデータに関する課題を例に、ビジネスに変革を与えるDelphixの新しいデータ活用をご紹介します。DB(その他)2018.07.02AIブームを支える「機械学習」~AIの現実的な始め方とは?~AIブームは着実に広まっています。先進的な事例が先行し、裏側の仕組みや現実的な取り組みについての理解が追い付いていないように見受けられます。AIを支えるディープラーニングと機械学習技術の紹介を中心に、導入までに必要な具体的なステップを見ていきます。