20200523のMySQLに関する記事は9件です。

MacにMySQLインストール

本当に自分が忘れないようにメモとして

HomeBrew

https://brew.sh/index_ja

CatalinaはzshがデフォルトだからHomebrewをzshでできるようにしないとだけどやり方忘れた。

Install

brew install mysql

起動

brew services start mysql

ログイン

mysql -uroot

停止

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

Windows10 home +VirtualBox + Vagrantの仮想環境にCentOS6 + Apache2.4 + PHP5.3 + MySQL5.5を入れる

Windowsの設定

Windows homeならBIOSを開いて、仮想化支援機構を有効化し、Hyper-Vを無効化する。

BIOS

基本的というか大体のPCでは下記の手順でBIOSにアクセスできる。
BIOSにアクセスできなかったら、各メーカーやPCの製品名のBIOSへアクセスする手順を調べる。

1. Shiftキーを押しながらシャットダウン。
2. F2キーを押しながら起動
3. AdvancedタブのCPU Configuration欄にあるIntel(R) VirtualizationTechnologyEnabledにする

3はメーカーやBIOSによって名前などが異なることがあるので、記載されてなかったら調べる。

Hyper-Vの無効化

1. 管理者権限でをコマンドプロントを開いて、下記のコードを実行する。
コードはWin10にVirtualBox+Vagrantを用いた環境構築する為の下準備から。

> bcdedit /copy {current} /d "Disable Hyper-V"
エントリは {文字列X} に正常にコピーされました。

>bcdedit /set {文字列X} hypervisorlaunchtype off

2. Shiftを押しながら電源を再起動
3. 再起動するとWindows 10 homeDisable Hyper-Vを選択できる画面が表示されるので、Disable Hyper-Vを選択。

VirtualBox + Vagrant + CentOS

VirtualBox: windowsといったPCに搭載されているホストOSの上で実行できるゲストOSを実行できるソフトウェア
Vagrant: VirtualBoxといったゲストOSでの仮想環境を実用的なものにするためのソフトウェア

以上を参考に、導入していく。

1. VirturalBoxとVagrantのインストール

VirtualBoxVagrantからWindows用の実行パッケージをインストールして実行。
~.exeを起動しても特に注意すべき点などはないので各自の作業環境に合わせて導入。

2. VirtualBoxにCentOSを登録する

Vagrantbox.esから導入したいCentOSのBOXのURLをコピーし、$ vagrant box addを実行。
今回はCentOS6を導入したいので、CentOS 6.6 x64 (Minimal, VirtualBox Guest Additions, Puppet 3.7.5 - see here for more infos)を選ぶ。

コマンドの意味はvagrant box {付けたい名前} {boxのURL}

$ vagrant box add CentOS6.6 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'CentOS6.6' (v0) for provider:
    box: Downloading: https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box
    box:
==> box: Successfully added box 'CentOS6.6' (v0) for 'virtualbox'!

3. Vagrant用のディレクトリを作成する

BOXの追加に成功したら、仮想環境用のディレクトリを作成

C:\>mkdir CentOS6.6
C:\>cd CentOS6.6

4. 仮想環境を定義する.Vagrantfileなどの初期化を行う

C:\CentOS6.6>vagrant init CentOS6.6
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

5. 初期化が完了したら、CentOSを起動する

C:\CentOS6.6>vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'CentOS6.6'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: CentOS66_default_1589977223313_63395
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)

  (中略)

==> default: Mounting shared folders...
    default: /vagrant => C:/CentOS6.6

6. ssh接続を行う

sshクライアントがないようだったら、Tera TermCygwinを用意する。
ターミナルからの接続だと、ログインするときにパスワードを聞かれることがある。
パスワードはvagrantで大丈夫(なはず)。

C:\CentOS6.6>vagrant ssh

その後、現在のディレクトリを確認。
今後の導入作業でディレクトリを転々とすることが多いので、最初はどこに居たのか覚えておく。

[vagrant@localhost ~]$ pwd
/home/vagrant

8. localeの変更

localeは言語や日時などの設定。
今回導入したCentOSは初期設定だとドイツ語だったので、作業しやすいように日本語に変更する。
locale変更方法(CentOS6.5) - Qiitaを参考に実行していく。

$ localeで現在の設定を確認。

[vagrant@localhost ~]$ locale
LANG=de_DE.UTF-8
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=

$ locale -aで設定できるlocale一覧を表示。
一覧の中にja_JP.utf8があるのを確認する。

[vagrant@localhost ~]$ locale -a
[vagrant@localhost ~]$ sudo vim /etc/sysconfig/i18n

LANG="ja_JP.UTF-8"にする。

LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

. {ファイル}で{ファイル}を読み込む。
最後に$ localeを入力して、ja_JP.UTF-8になっているかを確認。

[vagrant@localhost ~]$ . /etc/sysconfig/i18n
[vagrant@localhost ~]$ locale
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

9. 既存パッケージのアップグレード

CentOsではyumというパッケージマネージャーが使用されている。
これから色んなソフトをインストールしていくのに備えて、yumで管理されているパッケージのアップグレードを行う。

[vagrant@localhost ~]$ sudo yum -y upgrade

Apache2.4

Apache: 世界中で利用されているWebサーバーツール。

以下の記事を参考にApacheを導入していく。
基本は、

エラーの対応に使ったのは、

1. ディレクトリの移動

[vagrant@localhost /]$ cd /usr/local/src

2. Apacheの導入に必要なyumパッケージのインストール

[vagrant@localhost src]$ sudo yum install -y wget apr-devel apr-util-devel gcc pcre pcre-devel perl perl-devel libtool libtool-devel systemd-devel

3. Apacheの構築に必要なアプリをインストール

makeyumなどとは違う方法でアプリをインストールする方法。
Index of /apache/aprから最新のapr-{バージョン},apr-util-{バージョン}を確認。下記は実行当時の物。
pcrePCRE - Browse /pcre/8.44 at SourceForge.netから最新のバージョンを確認し、pcre-{バージョン}.tar.gzを入力。

[vagrant@localhost src]$ sudo wget http://mirrors.ocf.berkeley.edu/apache//apr/apr-1.7.0.tar.gz
[vagrant@localhost src]$ tar xzf apr-1.5.2.tar.gz
[vagrant@localhost src]$ cd apr-1.7.0
[vagrant@localhost apr-1.7.0]$ ./configure
[vagrant@localhost apr-1.7.0]$ make
[vagrant@localhost apr-1.7.0]$ make install

[vagrant@localhost apr-1.7.0]$ cd ..
[vagrant@localhost src]$ sudo wget http://mirrors.ocf.berkeley.edu/apache//apr/apr-util-1.6.1.tar.gz
[vagrant@localhost src]$ sudo tar xzf apr-util-1.6.1.tar.gz 
[vagrant@localhost src]$ cd apr-util-1.6.1
[vagrant@localhost apr-util-1.6.1]$ sudo ./configure --with-apr=/usr/local/src/apr-1.7.0
[vagrant@localhost apr-util-1.6.1]$ sudo make
[vagrant@localhost apr-util-1.6.1]$ sudo make install

[vagrant@localhost apr-util-1.6.1]$ cd ..
[vagrant@localhost src]$ sudo wget https://sourceforge.net/projects/pcre/files/pcre/8.44/pcre-8.44.tar.gz
[vagrant@localhost src]$ sudo tar xzf pcre-8.44.tar.gz
[vagrant@localhost src]$ cd pcre-8.44
[vagrant@localhost pcre-8.44]$ sudo ./configure
[vagrant@localhost pcre-8.44]$ sudo make
[vagrant@localhost pcre-8.44]$ sudo make install

4. Apacheのインストール

httpd: CentOSなどのサーバーに在住してるHTTPSの処理を行うデーモン
Index of /software/apache/httpdからhttpd-{バージョン}.tar.gzを確認。下記は実行当時の物。

[vagrant@localhost pcre-8.44]$ cd ..
[vagrant@localhost src]$ sudo wget http://ftp.tsukuba.wide.ad.jp/software/apache//httpd/httpd-2.4.43.tar.gz
[vagrant@localhost src]$ sudo tar xzf httpd-2.4.43.tar.gz
[vagrant@localhost src]$ sudo cp -Rp /usr/local/src/apr-1.7.0 /usr/local/src/httpd-2.4.43/srclib/apr
[vagrant@localhost src]$ sudo cp -Rp /usr/local/src/apr-util-1.6.1 /usr/local/src/httpd-2.4.43/srclib/apr-util
[vagrant@localhost src]$ cd httpd-2.4.43
[vagrant@localhost httpd-2.4.43]$ ./configure --with-pcre=/usr/local/src/pcre-8.44/pcre-config --enable-rewrite --with-icluded-apr

Server Version: 2.4.43
    Install prefix: /usr/local/apache2
    C compiler:     gcc -std=gnu99
    CFLAGS:          -g -O2 -pthread
    CPPFLAGS:        -DLINUX -D_REENTRANT -D_GNU_SOURCE
    LDFLAGS:
    LIBS:
    C preprocessor: gcc -E

[vagrant@localhost httpd-2.4.43]$ sudo make
[vagrant@localhost httpd-2.4.43]$ sudo make install

5. Apache起動スクリプトの作成

[vagrant@localhost httpd-2.4.43]$ cd /home/vagrant
[vagrant@localhost ~]$ sudo cp -ip /usr/local/src/httpd-2.4.43/build/rpm/httpd.init /etc/init.d/httpd
[vagrant@localhost ~]$ sudo vim /etc/init.d/httpd
/etc/init.d/httpd
#60行目あたり
httpd=${HTTPD-/usr/local/apache2/bin/httpd}
pidfile=${PIDFILE-/usr/local/apache2/logs/httpd.pid}
#追記
CONFFILE=/usr/local/apache2/conf/httpd.conf

yumなどを使ってパッケージインストールからApacheを導入したようにhttpdを使えるようにする。

[vagrant@localhost ~]$ sudo vim /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
#164行目あたり
User apache
Group apache
[vagrant@localhost ~]$ sudo groupadd -g 48 apache
[vagrant@localhost ~]$ sudo useradd -g apache -u 48 apache

6. Apacheの起動

[vagrant@localhost ~]$ sudo chkconfig --add httpd
[vagrant@localhost ~]$ sudo chkconfig httpd on

一旦、仮想環境をシャットダウン。

[vagrant@localhost ~]$ sudo shutdown -h now

7. .Vagrantfileの編集

windowsのエディターとかから、仮想環境用のディレクトリにある.Vagrantfileを編集する。
この編集によって、windowsのブラウザからCentOSで操作したファイルを共有したり、ブラウザで確認できるようになる。
以下のように編集する。

Vagrantfile.
 (中略)

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  config.vm.network "private_network", ip: "192.168.33.10"

  (中略)

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
  end
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Enable provisioning with a shell script. Additional provisioners such as
  # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
   config.vm.synced_folder "../VB_share", "/usr/local/apache2/htdocs", mount_options:['dmode=777','fmode=777']
end

仮想環境用のディレクトリを作成した所にVB_shareを作成。
その中に下記ファイルを追加。

index.html
 <h1>Helo,World!!</h1>

8. Apacheが稼働しているか確認

C:\CentOS6.6>vagrant reload
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
  
  (中略)

==> default: Mounting shared folders...
    default: /vagrant => C:/CentOS6.6
    default: /var/www/html => C:/VB_share
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run.

C:\CentOS6.6>vagrant ssh

以下のURLをクリックして、その下の画像のような表示がされたらApacheは無事起動している。
http://192.168.33.10/index.html

screeenshot.png

PHP5.3

atton.blog: php 5.x + apache httpd 2.4.x を make するを参考に進めていく。

1. PHPのインストール

PHP: Releasesから欲しいPHPのバージョンを確認。
今回は5.3系の中で一番新しい5.3.29を。

./configure --with-apxs2=/usr/local/apache2/bin/apxsApachePHP5系を認識してもらうlibphp5.soを作るためのもの。
これを書いておくとhttpd.confLoadModuleできる場所にlibphp5.soが自動で作成される。

[vagrant@localhost /]$ cd /usr/local/src
[vagrant@localhost src]$ sudo yum install -y libxml2 libxml2-devel
[vagrant@localhost src]$ sudo wget http://jp2.php.net/get/php-5.3.29.tar.gz/from/this/mirror -O php-5.3.29.tar.gz
[vagrant@localhost src]$ sudo tar xzf php-5.3.29.tar.gz
[vagrant@localhost src]$ cd php-5.3.29
[vagrant@localhost php-5.3.29]$ sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs

+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

[vagrant@localhost php-5.3.29]$ sudo make
[vagrant@localhost php-5.3.29]$ sudo make test
[vagrant@localhost php-5.3.29]$ sudo make install
[vagrant@localhost php-5.3.29]$ php -v
PHP 5.3.29 (cli) (built: May 21 2020 04:19:38)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2014 Zend Technologies

2. httpd.conf`の編集

ApachePHP5.3を認識してもらえるように/usr/local/apache2/conf/httpd.confを編集する。

[vagrant@localhost php-5.3.29]$ sudo vim /usr/local/apache2/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
#あるか確認。なかったら追加。
LoadModule php5_module modules/libphp5.so

#一番下に追記。
<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

3. ApacheがPHP5.3を認識しているか確認

先程index.htmlを作成したVB_shareに下記ファイルを追加。

info.php
<?php  phpinfo(); ?>

index.htmlの時と同様、下のURLをクリックして、その下の画像が表示されているか確認。

http://192.168.33.10/info.php
screeenshot.png

+a php.iniを編集

Apache2 PHP5 インストール | CentOSサーバー構築マニュアル.comを参考に、PHPの設定を行う。

[vagrant@localhost /]$ cd /usr/local/src/php-5.3.29
[vagrant@localhost php-5.3.29]$ sudo cp php.ini-development /usr/local/lib/php.ini
[vagrant@localhost php-5.3.29]$ sudo vim /usr/local/lib/php.ini

MySQL5.5

CentOSにMySQL 5.5をバージョン指定してインストール | 俺日記を参考に進めていく。

1. yumを使ったパッケージ操作

[vagrant@localhost ~]$ sudo yum remove mysql*
[vagrant@localhost ~]$ sudo yum -y install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
[vagrant@localhost ~]$ sudo vim /etc/yum.repos.d/mysql-community.repo

何も操作しないと、MySQL5.6がインストールされるため、MySQL5.5がインストールされるように、/etc/yum.repos.d/mysql-community.repoを編集する。

/etc/mysql-community.repo
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/6/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
[vagrant@localhost ~]$ sudo yum -y install mysql mysql-devel mysql-server mysql-utilities

2. MySQLの起動と確認

[vagrant@localhost ~]$ sudo service mysqld start
[vagrant@localhost ~]$ sudo chkconfig mysqld on
[vagrant@localhost ~]$ sudo service mysqld status
mysqld (pid  3173) を実行中...
[vagrant@localhost ~]$ mysql --version
mysql  Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using readline 5.1

3. MySQLの設定

MySQLにとって重要なmysql.sockの場所を確認する。

[vagrant@localhost ~]$ sudo /usr/bin/mysqladmin -u root password "{好きなパスワードを設定}"
[vagrant@localhost ~]$ sudo mysql -u root -p
Enter password:
mysql> show variables like "%sock%";
+---------------+---------------------------+
| Variable_name | Value                     |
+---------------+---------------------------+
| socket        | /var/lib/mysql/mysql.sock |
+---------------+---------------------------+
1 row in set (0.00 sec)

MySQLの文字コードを確認する。

mysql> show variables like "%chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

mysql> exit
Bye

[vagrant@localhost ~]$

character_set_databasecharacter_set_serverをUTF-8に変更する。
mysqlで文字コードをutf8にセットする - Qiitaを参考に作業する。

[vagrant@localhost ~]$ sudo vim /etc/my.cnf
/etc/my.cnf
[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8
[vagrant@localhost ~]$ sudo service mysqld restart
mysqld を停止中:                                           [  OK  ]
mysqld を起動中:                                           [  OK  ]
[vagrant@localhost ~]$ sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.62 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like "%chara%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

参考資料

Windowsの設定

VirtualBox + Vagrant + CentOS

Apache2.4

PHP5.3

MySQL5.5

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

MAMPのインストール

概要

自宅サーバーを立ち上げるため、MAMPを利用してみました。

MAMP とは

  • Mac
  • Apache
  • MySQL
  • PHP

の略と言われてるようですが、Win版もあるし、公式ページに特にこの事についての記載が発見できず、正確な情報は不明です。

パッケージのダウンロード

まずは、MAMP公式サイトからパッケージをダウンロードしましょう。
https://www.mamp.info/en/
公式サイトのFreeDonwloadをクリック
20190601171820-1024x725.png
Downloadページで mac のパッケージを選択
20190601171827-1024x725.png
バージョンはアクセスのタイミングで変わるかと思いますが、インストール用の pkg ファイルがダウンロードできます。
20190601171957.png

インストール

pkgファイルをダブルクリックすると、インストール手続きが始まります。

使用承諾やインストール先の選択等がありますので、指示に従いながら勧めていきます。
20190601172320.png
20190601172654.png

MAMPの起動

インストールが完了したら、MAMP起動します。デフォルト設定でインストールをしていれば、アプリケーションフォルダになっていると思うので、Launchpad等から起動できます。

※PROとFREE版があるので、FREEの方を起動。
20190601173135-1024x576.png
起動したらコントロール画面が表示されるので、「Start Servers」をクリックしてApacheとMySQLを起動します。20190601173503.png
起動が完了すると、「Start Servers」が緑になりブラウザで初期ページが表示されます。
20190601173729.png
20190601173749-1024x869.png
以上でインストールは完了です。

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

MacにMAMPをインストールする

概要

自宅のMacにWebサーバーを立ち上げるため、MAMPを利用してみました。

MAMP とは

  • Mac
  • Apache
  • MySQL
  • PHP

の略と言われてるようですが、Win版もあるし、公式ページに特にこの事についての記載が発見できず、正確な情報は不明です。

インストール手順

パッケージのダウンロード

まずは、MAMP公式サイトからパッケージをダウンロードしましょう。
https://www.mamp.info/en/
公式サイトのFreeDonwloadをクリック
20190601171820-1024x725.png
Downloadページで mac のパッケージを選択
20190601171827-1024x725.png
バージョンはアクセスのタイミングで変わるかと思いますが、インストール用の pkg ファイルがダウンロードできます。
20190601171957.png

インストール

pkgファイルをダブルクリックすると、インストール手続きが始まります。

使用承諾やインストール先の選択等がありますので、指示に従いながら勧めていきます。
20190601172320.png
20190601172654.png

MAMPの起動

インストールが完了したら、MAMP起動します。デフォルト設定でインストールをしていれば、アプリケーションフォルダになっていると思うので、Launchpad等から起動できます。

※PROとFREE版があるので、FREEの方を起動。
20190601173135-1024x576.png
起動したらコントロール画面が表示されるので、「Start Servers」をクリックしてApacheとMySQLを起動します。20190601173503.png
起動が完了すると、「Start Servers」が緑になりブラウザで初期ページが表示されます。
20190601173729.png
20190601173749-1024x869.png
以上でインストールは完了です。

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

【重複行排除_MySQL,PostgreSQL,Oracleの違い】指定したカラム以外他のカラム情報も欲しい

・SELECT DISTINCTでは重複判定に指定したカラム項目しか返されない

サンプルテーブル

ID 名前 趣味 場所
101 田中 映画 映画館
102 田中 漫画 本屋
103 田中 水泳 体育館
104 田中 散歩 公園
105 佐藤 映画 映画館
106 佐藤 水泳 体育館
107 清水 漫画 本屋
108 清水 水泳 体育館
109 清水 散歩 公園

SELECT DISTINCT 名前 FROM サンプルテーブル

とすると、返されるのは名前カラムだけです。

名前
田中
佐藤
清水

・重複判定に指定したカラム以外のカラムも取得するSQL

サンプルテーブルから取得したい情報

ID 名前 趣味 場所
101 田中 映画 映画館
105 佐藤 映画 映画館
107 清水 漫画 本屋

MySQL、PostgreSQL、Oracle、それぞれやり方が違います。

MySQL

SELECT * FROM サンプルテーブル GROUP BY 名前

PostgreSQL

SELECT DISTINCT ON(名前)* FROM サンプルテーブル

Oracle

SELECT * FROM サンプルテーブル WHERE ROWID IN (select min(ROWID) from サンプルテーブル GROUP BY 名前)

ROWIDについて

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

【SQL重複行の排除】指定したカラム以外他のカラム情報も欲しい(MySQL、PostgreSQL、Oracleの違い)

・SELECT DISTINCTでは重複判定に指定したカラム項目しか返されない

サンプルテーブル

ID 名前 趣味 場所
101 田中 映画 映画館
102 田中 漫画 本屋
103 田中 水泳 体育館
104 田中 散歩 公園
105 佐藤 映画 映画館
106 佐藤 水泳 体育館
107 清水 漫画 本屋
108 清水 水泳 体育館
109 清水 散歩 公園

SELECT DISTINCT 名前 FROM サンプルテーブル

とすると、返されるのは名前カラムだけです。

名前
田中
佐藤
清水

・重複判定に指定したカラム以外のカラムも取得するSQL

サンプルテーブルから取得したい情報

ID 名前 趣味 場所
101 田中 映画 映画館
105 佐藤 映画 映画館
107 清水 漫画 本屋

MySQL、PostgreSQL、Oracle、それぞれやり方が違います。

MySQL

SELECT * FROM サンプルテーブル GROUP BY 名前

PostgreSQL

SELECT DISTINCT ON(名前)* FROM サンプルテーブル

Oracle

SELECT * FROM サンプルテーブル WHERE ROWID IN (select min(ROWID) from サンプルテーブル GROUP BY 名前)

ROWIDについて

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

基礎からのMySQL part03 chapter08

MySQLを使いこなす

カラムの表示を工夫して「SELECT」を実行する

カラムを入れ替えて表示する

SELECT カラム2, カラム1 FROM テーブル名;

エイリアス(alias)を使う
  • カラムにわかりやすい「ニックネーム」を付けること
  • 「偽名」や「別名」という意味で「本物を参照するためにユーザが自由に付けた名前」という使われ方

SELECT カラム名 AS エイリアス FROM テーブル名;

  • ()などの都空手記号を使う場合はエイリアス名を「" "」で囲む

計算したり、文字列を処理したりして表示する

関数を使って計算する

平均
SELECT AVG(カラム名) FROM テーブル名;

合計
SELECT SUM(カラム名) FROM テーブル名

個数
SELECT COUNT(カラム名) FROM テーブル名

各種情報を表示する関数

円周率
SELECT PI();

MySQLサーバーのバージョン
SELECT VERSION();

現在使っているデータベース
SELECT DATABASE();

現在のユーザ
SELECT USER();

引数で指定した文字の文字エンコーディング
SELECT CHARSET('この文字');

文字列を結合する

SELECT CONCAT(カラム1, カラム2) FROM テーブル名;

文字列操作で活躍する関数

右から取り出す:RIGHT
SELECT RIGHT(カラム名, 文字数) FROM テーブル名;

左から取り出す:LEFT
SELECT LEFT(カラム名, 文字数) FROM テーブル名;

○番目から×個取り出す:SUBSTRING
SELECT SUBSTRING(カラム名, ○, ×) FROM テーブル名;

繰り返して表示:REPEAT
SELECT REPEAT('文字', カラム名) FROM テーブル名;

  • 「文字」をカラム名の回数繰り返す

逆さから表示:REVERSE
SELECT REVERSE(カラム名) FROM テーブル名;

日付、時刻の関数

INSERT INTO テーブル名 (カラム名) VALUES(NOW());

  • DATETIME型

条件を指定した選択

レコード数を決めて表示する

SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード数;

WHEREを使った抽出

SELECT カラム名 FROM テーブル名 WHERE 条件;

比較演算子
比較演算子 意味
<> とは異なる
○ IN × ×のリストの中に○がある
○ NOT IN × ×のリストの中に○がない
○ BETWEEN × AND △ ×から△の間に丸がある
○ NOT BETWEEN × AND △ ×から△の間に○がない
文字列を使った表現

SELECT * FROM テーブル名 WHERE カラム名='文字';

LIKE:あいまい検索

SELECT * FROM テーブル名 WHERE カラム名 LIKE '文字';

  • '文字'という表現を含む

文字列を対象としたワイルドカードとその利用例

ワイルドカード 意味
% 任意の文字列が該当
_ 任意の1文字が該当

SELECT * FROM テーブル名 WHERE カラム名 LIKE '%文字';

  • '文字%'で前方一致
  • '%文字'で後方一致
  • '%文字%'で部分一致
指定した文字列を含まないものを取り出す

SELECT * FROM テーブル名 WHERE カラム名 NOT LIKE '文字%';

NULLの場合

SELECT * FROM テーブル名 WHERE カラム名 IS NULL;

NULLでない場合

SELECT * FROM テーブル名 WHERE カラム名 IS NOT NULL;

重複したデータを省いて抽出する

SELECT DISTINCT カラム名 FROM テーブル名;

複数の条件を指定した選択

ANDを使う

SELECT * FROM テーブル名 カラム1 BETWEEN 50 AND 100;

SELECT * FROM テーブル名 WHERE カラム1>=50 AND カラム2<=100
は同じ

ORを使う

SELECT * FROM テーブル名 WHERE カラム名1 NOT BETWEEN 50 AND 200;
SELECT * FROM テーブル名 WHERE カラム名1 < 50 OR カラム名2 > 200;
は同じ

ANDやORを複数使う
  • ANDとORが混ざっている時はANDが優先される
CASE WHENを使う
SLECT
 CASE
  WHEN 条件1 THEN 表示する値
  WHEN 条件2 THEN 表示する値
  WHEN 条件2 THEN 表示する値
ELSE 全ての条件に当てはまらない時の値
END

並べ替え

昇順(小→大)に並べ替えて表示する

SELECT カラム名 FROM テーブル名 ORDER BY キートなるカラム (ASC);

  • 昇順であることを明示する時は最後にASCを付ける
降順に並べ替えて表示する

SELECT カラム名 FROM テーブル名 ORDER BY キートなるカラム DESC;

  • 必ず「DESC」を付ける
表示するレコードの範囲を決める

SELECT カラム名 FROM テーブル名 LIMIT 表示するレコード OFFSET 表示開始レコードのシフト数;

  • 表示開始レコードのシフト数:何個移動したところから始めるか

グループごとに表示する

SELECT カラム名 FROM テーブル名 GROUP BY グループ化するカラム;

グループごとの数を数えてみる

SELECT COUNT(*) FROM テーブル名 GROUP BY bang;

グループごとの合計、平均を表示する

SELECT カラム名1, SUM(カラム名2) AS 合計 FROM テーブル名 GROUP BY カラム名1;

条件付きグループで表示

グループごとに処理する

グループに分けて条件をつけて取り出す
SELECT 集計したカラム FROM テーブル名 GROUP BY グループ化するカラム HAVING 条件;

  • グループ化した値に対して条件を設定
抽出してからグループにする
  • 「WHERE」で条件を設定して最後に「GROUP BY」でグループ化
グループ化してから並び替える

-「GROUP BY」の次に「ORDER BY」

グループ化手順のまとめ

記述順序
1. WHERE条件
2. GROUP BY ××
3. ORDER BY 〇〇 (DESC)

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

Docker × Mysqlでユーザー作成出来ない

概要

Docker環境でMysqlを使用する際、docker-compose.ymlに記載した環境変数が反映されず、作業ユーザーを作成出来ないエラーに遭遇しました。

docker-compose.yml

version: "3.7"

services:

  ~~~省略~~~

  db:
    container_name: db
    build:
      context: ./db
      dockerfile: Dockerfile
    ports:
      - ${DB_PORT}:3306
    environment:
      MYSQL_DATABASE: ${DB_NAME}      # 作成するデータベース名
      MYSQL_USER: ${DB_USER}            # 作業ユーザー名→上記データベースの捜査権限をもつ
      MYSQL_PASSWORD: ${DB_PASS}        # 作業ユーザーのパスワード
      MYSQL_ROOT_PASSWORD: ${ROOT_PASS} # rootユーザーのパスワード
      TZ: ${TZ}
    volumes:
      - db-data:/var/lib/mysql
      - ./db/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
      - ./db/mysql/init:/docker-entrypoint-initdb.d
      - ./log:/var/log/mysql

volumes:
  db-data:
    driver: local

Dockerfile

FROM mysql:8.0
EXPOSE 3306

そもそもなぜ作業ユーザーを作成するか?

下記記事参照。
【MySQL】ユーザーの作成方法について解説!

原因

前作業でrootユーザーのみでdocker構築をしており、volume機能でデータが永続化していたため、後作業で記述した環境変数が反映されていないというものでした。

ビルドし直しても反映されない!そもそも消えることがないようにvolume機能を使用していたのに・・・

解決

MySQLのデータを初期化

$ docker-compose down --volumes
$ docker-compose up -d

downコマンド時に--volumesオプションを追記すれば、volumeも一緒に削除されます。
次回upコマンドで起動すれば、新しいvolumeが再構築されます。

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

MySQLのINDEX削除に時間が掛かる

経緯

IT後に試験環境に追加したINDEXを削除しようとしたら一向に終わらない。
MySQL 5.6

試したこと

MySQLのINDEX削除は絶望的に時間が掛かるらしい

MySQLのALTER TABLEは絶望的に時間が掛かるとの記事が多数。
(INDEX追加はそんなに時間が掛からなかったんだが…)

参照可能って話なのにSELECT出来ない。

更新のみ不可って記事を見たので、それなら実行しっぱなしで帰ればいいか…と思ったが、DROP INDEXを走らせて別窓からSELECTを掛けるも帰ってこない。
SHOW PROCESSLISTで実行中の処理を確認するとWaiting for table metadata lock。
参照できるって話ではなかったのか…。とりあえずKILLしてロック解除。

テーブルロックを掛けずに実行する方法を探す

ALTER TABLE に ALGORITHM=INPLACE LOCK=NONE を設定すればテーブルロックを掛けずに実行できるらしい。早速実行。
エラーは出ないので成功かと思ったが、SELECTを掛けると結局参照すら不可。

解決策

結局夜間帯に裏で実行させて朝終わってることを確認。(解決してない)
50,000件レコードのINDEX削除に8時間かかりました。

参考にさせて頂いた記事

InnoDBオンラインDDLについて
mysql 5.6~でのalter tableでやらかさない
そのALTER TABLEがオンラインALTER TABLEかどうかを確かめる方法

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