20191002のMySQLに関する記事は3件です。

主要RDBMSの比較

ちょっと気になったのでまとめてみた。(SQLServerはちょっと内容薄め..ww)

主な特徴

  • Oracle 高額なライセンスフィーだが高機能。RACは独自機能。
  • SQLServer Microsoftのお膝元。
  • MYSQL シンプルかつ軽量。高速にSQL文を処理することで定評。
  • Postgre 拡張性重視。小さいサービスなどに使われることが多い。

プロセス管理

マルチプロセス:クライアントからの接続毎にプロセスを起動する。特定のプロセスに問題があっても影響範囲が少ない。
マルチスレッド:単一のプロセスで動き、クライアントからの接続毎にスレッドが作成。(スレッドの方がオーバーヘッド少ないと言われる。)

  • Oracle マルチプロセス。必須プロセスと接続毎に起動するサーバープロセスで構成される。インスタンスとは独立してクライアントから接続を受けるリスナープロセスも存在。
  • SQLServer マルチスレッド。
  • MYSQL マルチスレッド。
  • Postgre マルチプロセス。postmasterという管理者プロセスがあり、これが落ちるとおしまい。

メモリ管理

  • Oracle プロセス共有のメモリとコネクション単位のメモリがあり、パラメーターで指定可能。
  • SQLServer ローカルメモリのみ。インスタンスで最大と最小のメモリ数を指定するシンプルなやりかた。
  • MYSQL 全体管理のグローバルバッファ、スレッド毎のバッファ、ログバッファに分割。グローバルバッファはテーブルやインデックスを管理。多数の接続があると競合を防ぐ目的で分割することもある。
  • Postgre プロセス共有のメモリとSQL文実行のメモリ領域に分かれる。

ストレージ

通常、RDBMSはテーブル等情報を保存するデータファイル領域と差分データを保存するストレージを持つ。ストレージはクラッシュ時のリカバリに使われる。

  • Oracle ストレージ管理用インスタンスを使うことができる。DBはそれが管理するディスクグループにファイルを保存。データファイルは初期サイズ等設定可能。ストレージはパスの指定が可能。
  • SQLServer シンプルな構成で、少数ファイルから成り立つ。DB単位でデータファイルを作成。TXログは動的サイズかつ単一のファイル(他のRDBMSは固定の複数ファイルを循環利用する)
  • MYSQL 複数のストレージエンジンを利用可。ストレージは任意のデータディレクトリに保存。トランザクションログとして、バイナリログとInnoDBがあり、前者はレプリケーション用のイベント、後者はクラッシュ時のロールフォーワードで使われる。
  • Postgre ファイルシステムの階層構造をそのままDBに利用。単一のデータベースクラスタ上に保存する。レコードが更新前のデータはそのまま保持され、バキューム処理で領域の開放がなされる(MySQL/Oracleでは更新時には更新前データはロールバック・セグメントに移動される)
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Railsアプリ〜デプロイへの道〜その②Ruby・MySQLインストール編【ConoHa VPS・CentOS・Capistrano3・Nginx・Unicorn】

Railsアプリケーションをデプロイした時の手順をまとめた記事の第2弾です。

今回はRubyおよびMySQLのインストール・設定の手順をまとめました。

前回同様こちらの記事がベースとなっています。
https://qiita.com/ryo2132/items/f62690f0b16ec11270fe

〈前回記事〉
Railsアプリ〜デプロイへの道〜その①リモートサーバーへのSSH接続編

開発環境

・Mac OS
・Rails 5.2.3
・Ruby 2.5.1
・ConoHa VPS
・CentOS 7.6
・Capistrano3
・Nginx
・Unicorn

Rubyのインストール

ConoHa VPSにRubyをインストールしていきます。

1.Gitインストール

まずGitをインストールします。

$ sudo yum -y install git

$ git --version
# version名出力されればOK

2.rbenvインストール

続いてrbenvをインストール。
rbenvはRubyのバージョン管理ツールです。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

ruby-burildインストール

こちらもRubyをインストールするために必要になります。

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

3.rbenv設定

rbenvコマンドを使えるようにするためにbash_profileに以下の内容を追加します。

# PATHにrbenvコマンドを追加
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# rbenvの初期化
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# bashの再読込
$ source ~/.bash_profile
# rbenvのバージョン確認 バージョンが出ればOK
$ rbenv -v

これでRubyインストールの準備は完了です。
いよいよRubyをインストールします。

4.Rubyインストール

ローカルで使用中のRubyバージョンを確認
サーバーにインストールする前に、開発で使用したRubyのバージョンを確認します。

ローカル

$ ruby -v

ローカルと同じバージョンのRubyをインストール

サーバー

$ rbenv install 2.5.1 
# globalで使用するrubyの設定
$ rbenv global 2.5.1
# rbenvの再起動?
$ rbenv rehash
# rubyのバージョン確認
$ ruby -v

5.bundleインストール

Gemの管理ツールであるbundlerをインストールします。

bundlerのバージョンを開発したRailsアプリのGemfile.lockのものと合わせる必要があります。
バージョンが合っていないとデプロイ時にエラーが発生します。
参考:https://qiita.com/MotohiroSiobara/items/c0d343a160cffc2902ef

RailsアプリのGemfile.lockを確認

BUNDLED WITH 2.0.1

サーバー
同じバージョンのbundlerをインストール。

$ gem install bundle -v 2.0.1

6.関連パッケージインストール

必要なパッケージを諸々インストール
これらがないとデプロイ時にエラー起こします。

<参考>
https://teratail.com/questions/13430
https://qiita.com/jaxx2104/items/2277cec77850f2d83c7a

サーバー

#gcc-c++インストール
$ sudo yum install gcc-c++

#node.jsインストール
$ sudo yum install nodejs npm --enablerepo=epel 

#yarnインストール
$ sudo npm install -g yarn

MySQL

1.事前準備:MariaDBの削除

CentOS7系では標準でMariaDB(MySQL互換のDB)がインストールされている場合があるので、MySQLと競合しないようMariaDBを削除します。

参考:https://qiita.com/miqpim/items/5c519a9979d9b269d47e

サーバー

$ rpm -qa | grep maria     # mariaDBが存在するか確認
$ sudo yum remove mariadb-libs  # 本体削除
$ sudo rm -rf /var/lib/mysql  # データ削除

rmコマンドのオプションについてはこちらをご覧ください。
参考:https://eng-entrance.com/linux_command_rm

2.MySQLのリポジトリを登録

Mysql公式のYumリポジトリをインストールします。
最新版はMysql公式で確認できます。

サーバー

〈参考〉
https://qiita.com/rutko/items/56a33d1ecd70c0480202
https://qiita.com/nooboolean/items/7efc5c35b2e95637d8c1

CentOSのバージョンの確認

$ cat /etc/redhat-release

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

yumコマンドのlocalinstallオプションを使うことでリモートにあるrpmファイルをインストールすることができます。
rpmコマンドを使ってのインストールも可能ですが、依存関係とかを考慮したインストールまではしてくれないので、yumでインストールしましょう。
URLはリモートにあるrpmファイルをインストールするためのもので、公式サイトのリポジトリを、 http://dev.mysql.com/get/の後に付け加えて完成です。(お使いのOSに合わせたものを選んでください)

詳しくはこちらの記事をご覧ください。
https://qiita.com/nooboolean/items/7efc5c35b2e95637d8c1

$ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

リポジトリの確認

/etc/yum.repos.d配下に、mysql-community-source.repoとmysql-community.repoというリポジトリが作成されてるはずです。

$ cd /etc/yum.repos.d/
$ ls
mysql-community-source.repo  mysql-community.repo

このリポジトリが作成されて入れば、リポジトリの追加の確認は完了

インストールできたか確認

$ yum repolist all | grep mysql

mysql-connectors-community/x86_64 MySQL Connectors Community      有効:
mysql-connectors-community-source MySQL Connectors Community - So 無効
mysql-tools-community/x86_64      MySQL Tools Community           有効:
mysql-tools-community-source      MySQL Tools Community - Source  無効
mysql55-community/x86_64          MySQL 5.5 Community Server      無効
mysql55-community-source          MySQL 5.5 Community Server - So 無効
mysql56-community/x86_64          MySQL 5.6 Community Server      無効  <-ここ注目
mysql56-community-source          MySQL 5.6 Community Server - So 無効
mysql57-community/x86_64          MySQL 5.7 Community Server      有効: <-ここ注目
mysql57-community-source          MySQL 5.7 Community Server - So 無効

(環境によっては有効がenabled、無効がdisabledと表示される)
上記の例では、5.7が有効、5.6が無効になっています。
このままインストールすると、有効になっている5.7がインストールされてしまうので、5.6をインストールするには有効無効の切り替えをします。
この切り替えをするためにはyumの設定変更用のyum-utilsパッケージが必要なので、インストールされていない場合はインストールします。

$ yum list installed | grep yum-utils  #yum-utilsがインストールされているか確認
$ yum -y install yum-utils #入ってなければyum-utilsをインストールする
$ yum-config-manager --disable mysql57-community     #5.7を無効に設定
$ yum-config-manager --enable mysql56-community       #5.6を有効に設定

設定ができているか再度確認。

$ yum repolist all | grep mysql

mysql-connectors-community/x86_64  MySQL Connectors Community       有効:    
mysql-connectors-community-source  MySQL Connectors Community - Sou 無効
mysql-tools-community/x86_64       MySQL Tools Community            有効:     
mysql-tools-community-source       MySQL Tools Community - Source   無効
mysql55-community/x86_64           MySQL 5.5 Community Server       無効
mysql55-community-source           MySQL 5.5 Community Server - Sou 無効
mysql56-community/x86_64           MySQL 5.6 Community Server       有効:    
mysql56-community-source           MySQL 5.6 Community Server - Sou 無効
mysql57-community/x86_64           MySQL 5.7 Community Server       無効
mysql57-community-source           MySQL 5.7 Community Server - Sou 無効

5.6が有効になっていればOK。

#バージョン確認
$ yum info mysql-community-server
# インストール
$ sudo yum install mysql-community-server mysql-devel

mysql-develは必要です。
ないとデプロイ時にエラーが出ます。
参考:https://teratail.com/questions/181707

# 確認。バージョン出ればOK
$ mysqld --version

Mysqlの起動/自動起動設定

起動

$ sudo systemctl start mysqld.service   #起動

自動起動設定

$ sudo systemctl enable mysqld.service   #自動起動 ON
$ systemctl disble mysqld   #自動起動 OFF

自動起動になっているか確認

$ systemctl is-enabled mysqld

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

enabledになっていれば自動起動 ONに設定されています。

基本操作

$ sudo systemctl start mysqld.service   #起動
$ systemctl stop mysqld    #停止
$ systemctl status mysqld  #ステータス確認
$ systemctl restart mysqld #再起動

ちなみに、mysqldのdはデーモン (daemon)のdらしいです。
デーモンについてはこちらの記事をご覧ください。
https://wa3.i-3-i.info/word11000.html

簡単に言うと「いつでも動けるようにスタンバイしてる常駐プログラム」だそうです。

3.パスワード、セキュリティ設定

続いてMySQLの設定をしていきます。
今回の山場です。
参考:https://weblabo.oscasierra.net/mysql-57-init-setup/

ログインするために、まず自動生成された初期パスワードを確認します。

$ sudo cat /var/log/mysqld.log | grep password
2017-12-31T11:31:07.946947Z 1 [Note] A temporary password is generated for root@localhost: .7ogGO4yokDh
# 「.7ogGO4yokDh」の部分が初期パスワードです

確認できたらmysql_secure_installationで初期設定を行います。
以下対話形式で進むので適宜コマンド入力してください。

$ mysql_secure_installation


Securing the MySQL server deployment.

Enter password for user root: # ログファイルから取得した初期パスワードを入力します

The existing password for the user account root has expired. Please set a new password.

New password: # root ユーザの新規パスワードを入力します

Re-enter new password: # 確認用にもう一度入力します
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y # 匿名ユーザーアカウントを削除
Success.


Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y # ローカルホスト以外からアクセス可能な root アカウントを削除
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.


Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y # test データベースの削除
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

4.日本語化

日本語を扱うために文字コードを設定します。
日本語の文字コードはutf8に設定すると思いますが、utf8mb4は絵文字に対応した文字コードなので、僕はutf8ではなくutf8mb4で設定しています。

現状、問題なく使えています。

〈参考〉
https://qiita.com/okamu_/items/5eb81688849fbe351350
https://qiita.com/jkr_2255/items/74fc79e764378b59355a

$ sudo vi /etc/my.cnf

#ファイル内の末尾に以下を追記
[mysqld]
character-set-server=utf8mb4

[client]
default-character-set=utf8mb4

#再起動
$ sudo systemctl restart mysqld.service

#文字コード確認
$ mysql -u root -p

$ show variables like "chara%";

utf8mb4になってたらOK!

5.Time-zone設定

〈参考〉
https://dev.mysql.com/doc/refman/8.0/en/time-zone-support.html
https://agohack.com/mysql-change-timezone/

現在のタイムゾーンを確認

$ show variables like '%time_zone%';

system_time_zone : UTC
time_zone : SYSTEM

タイムゾーンデータの確認

$ select * from mysql.time_zone;

空の場合は、データをインポートする。

タイムゾーンのインポート

$ /usr/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo > ~/timezone.sql
# passwordを聞かれるのでmysqlのパスワードを入力
$ mysql -u root -p -Dmysql < ~/timezone.sql

設定の追加

$ sudo vi /etc/my.cnf

# 末尾に以下を追加
[mysqld]
default-time-zone = 'Asia/Tokyo'

再起動

$ sudo systemctl restart mysqld.service

確認

mysql > show variables like '%time_zone%';

# 以下表示が出ればOK
+------------------+------------+
| Variable_name    | Value      |
+------------------+------------+
| system_time_zone | JST        |
| time_zone        | Asia/Tokyo |
+------------------+------------+
2 rows in set (0.00 sec)

MySQLの自動起動設定
サーバーの再起動の際にも、mysqlが自動的に起動するよう設定します。

chkconfig mysqld on

まとめ

以上、Railsアプリ〜デプロイへの道〜その②Ruby・MySQLインストール編でした。

次回はいよいよCapistrano3・Nginx・Unicornの設定です。(予定)

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【初心者でも簡単!!】WordPressをダウンロード及びインストールする方法

1.事前知識

事前知識として、上記リンクの内容が必要です。

2.WordPressとは

  • WordPress とは、オープンソースのブログソフトウェアである。
  • 言語は PHP で開発されており、データベース管理システムとして MySQL を利用している。
  • 単なるブログではなく コンテンツ管理システム としても利用されている。

3.事前準備

01.png

17.png

MySQLコマンド
# 1.rootユーザーでログイン
$ mysql -uroot

# 2.データベースの作成
mysql> create database wordpress default character set utf8;

# 3.ユーザー作成&権限付与
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@localhost IDENTIFIED BY 'password';

# 4.権限の反映
mysql> FLUSH PRIVILEGES;

# 5.データベース一覧表示
mysql> show databases;

# 6.mysqlを選択
mysql> USE mysql;

# 7.登録されているユーザを確認
mysql> SELECT user, host FROM user;

# 8.データベース終了
mysql> exit;
  1. Oracle VM VirtulaBox を起動し、 仮想マシン を起動する。
  2. コマンドライン を起動する。
  3. 上記の コマンド を入力する。
  4. 画像のように表示されれば成功です。

4.WordPressのダウンロード

Wordpressのダウンロードコマンド
# 1.フォルダの移動
$ cd /var/www/html

# 2.wordpress-4.4.2-ja.zipをダウンロード
$ wget https://ja.wordpress.org/wordpress-4.4.2-ja.zip

# 3.wordpress-4.4.2-ja.zipの展開
$ unzip wordpress-4.4.2-ja.zip

# 4.wordpress-4.4.2-ja.zipの削除
$ rm wordpress-4.4.2-ja.zip
  1. 上記のコマンドを コマンドライン に入力。

5.WordPressのインストール

URL
例: http://localhost/wordpress/
  1. ブラウザを開き、 https://サーバのホスト名、又はIPアドレス/wordpress/ にアクセスする。(上記のURL参照)
  2. さあ、始めましょう! をクリックする。 02.png
  3. データベース名ユーザー名パスワードデータベースのホスト名テーブル接頭辞 を入力し、 送信 をクリックする。
項目 内容
データベース名 wordpress
ユーザー名 wordpress_user
パスワード password
データベースのホスト名 localhost
テーブル接頭辞 wp_

03.png
4. サイトのタイトルユーザー名パスワードメールアドレス 、 を入力し、 検索エンジンでの表示 にチェックをつけ、 WordPressをインストール をクリックする。
※違う画面に推移した方は 6.構成ファイルのセットアップ
11.png
5. ログイン をクリックする。
12.png
6. ユーザー名パスワード を入力し、 ログイン状態を保存する にチェックをつけ、 ログイン をクリックする。
13.png
7. ダッシュボード が表示されれば成功です。
14.png

6.構成ファイルのセットアップ(インストール出来なかった人)

  1. 赤枠の中身を コピー する。 04.png
  2. アプリケーション から テキストエディター を起動する。 05.png
  3. コピーした内容を 貼り付け し、 保存 をクリックする。 06.png
  4. html ディレクトリをクリックする。 07.png
  5. wordpress ディレクトリをクリックする。 08.png
  6. ファイル名を wp-config.php にし、 保存 をクリックする。 09.png
  7. ブラウザに戻り、 インストール実行 をクリックする。 10.png
  8. 画像のようにWordPressの インストール画面 が表示されれば成功です。 11.png

8.まとめ

WordPressとは

  • WordPress とは、オープンソースのブログソフトウェアである。
  • 言語は PHP で開発されており、データベース管理システムとして MySQL を利用している。
  • 単なるブログではなく コンテンツ管理システム としても利用されている。

事前準備

Apacheのインストールコマンド
# 1.rootユーザーでログイン
$ mysql -uroot

# 2.データベースの作成
mysql> create database wordpress default character set utf8;

# 3.ユーザー作成&権限付与
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO wordpress_user@localhost IDENTIFIED BY 'password';

# 4.権限の反映
mysql> FLUSH PRIVILEGES;

# 5.データベース一覧表示
mysql> show databases;

# 6.mysqlを選択
mysql> USE mysql;

# 7.登録されているユーザを確認
mysql> SELECT user, host FROM user;

# 8.データベース終了
mysql> exit;
  1. Oracle VM VirtulaBox を起動し、 仮想マシン を起動する。
  2. コマンドライン を起動する。
  3. 上記の コマンド を入力する。

WordPressのダウンロード

Wordpressのダウンロードコマンド
# 1.フォルダの移動
$ cd /var/www/html

# 2.wordpress-4.4.2-ja.zipをダウンロード
$ wget https://ja.wordpress.org/wordpress-4.4.2-ja.zip

# 3.wordpress-4.4.2-ja.zipの展開
$ unzip wordpress-4.4.2-ja.zip

# 4.wordpress-4.4.2-ja.zipの削除
$ rm wordpress-4.4.2-ja.zip
  1. 上記のコマンドを コマンドライン に入力。

WordPressのインストール

URL
例: http://localhost/wordpress/
  1. ブラウザを開き、 https://サーバのホスト名、又はIPアドレス/wordpress/ にアクセスする。(上記のURL参照)
  2. さあ、始めましょう! をクリックする。
  3. データベース名ユーザー名パスワードデータベースのホスト名テーブル接頭辞 を入力し、 送信 をクリックする。
項目 内容
データベース名 wordpress
ユーザー名 wordpress_user
パスワード password
データベースのホスト名 localhost
テーブル接頭辞 wp_
  1. サイトのタイトルユーザー名パスワードメールアドレス 、 を入力し、 検索エンジンでの表示 にチェックをつけ、 WordPressをインストール をクリックする。 ※違う画面に推移した方は 6.構成ファイルのセットアップ
  2. ログイン をクリックする。
  3. ユーザー名パスワード を入力し、 ログイン状態を保存する にチェックをつけ、 ログイン をクリックする。
  4. ダッシュボード が表示されれば成功です。

構成ファイルのセットアップ(インストール出来なかった人)

  1. 赤枠の中身を コピー する。
  2. アプリケーション から テキストエディター を起動する。
  3. コピーした内容を 貼り付け し、 保存 をクリックする。
  4. html ディレクトリをクリックする。
  5. wordpress ディレクトリをクリックする。
  6. ファイル名を wp-config.php にし、 保存 をクリックする。
  7. ブラウザに戻り、 インストール実行 をクリックする。
  8. WordPressの インストール画面 が表示されれば成功です。

9.その他

20.png

WordPress起動時に画面が真っ白になってしまった方はこちら↓
WordPressのサイトが真っ白で表示されない場合の対処方法【初心者向け】

10.関連

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む