- 投稿日:2019-03-02T23:36:12+09:00
MAMP(Windows)のMySQLに接続する
MAMP(Windows)のMySQLに接続する
$dsn = 'mysql:dbname=mysql;host=localhost;charset=utf8;port=3306'; $user = 'root'; $pass = 'root'; $pdo = new PDO($dsn, $user, $pass);ちなみにMAMPのサーバー起動中に下記にアクセスするとphpMyAdminも確認できた
http://127.0.0.1/phpMyAdmin/
- 投稿日:2019-03-02T17:19:09+09:00
docker-compose で PHP7.2 + Apache + MySQL + phpMyAdmin 環境を構築
Docker の学習メモです。
本記事でのコンテナ作成は全て Docker Hub の image を使用して行なっています。
Dockerfile からのイメージ作成はまた今度。ディレクトリ構造
. ├── docker-compose.yml └── html │ └── index.php └── php.inidocker-compose.yml
docker-compose.ymlversion: '3' services: php: image: php:7.2-apache volumes: - ./php.ini:/usr/local/etc/php/php.ini - ./html:/var/www/html ports: - 8080:80 mysql: image: mysql:5.7 volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=test - MYSQL_USER=test - MYSQL_PASSWORD=test phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=test - PMA_PASSWORD=test links: - mysql ports: - 4040:80 volumes: - ./phpmyadmin/sessions:/sessionsindex.php
html/index.php<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>php7.2-apache</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <?php phpinfo(); ?> </body> </html>php.ini
php.ini[Date] date.timezone = "Asia/Tokyo" [mbstring] mbstring.internal_encoding = "UTF-8" mbstring.language = "Japanese"現在のコンテナ稼働状況を確認
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
稼働中のコンテナが存在していないため、何も表示されない。
コンテナの作成と開始
$ docker-compose up -d Creating network "php72-apache_default" with the default driver Creating php72-apache_mysql_1 ... done Creating php72-apache_php_1 ... done Creating php72-apache_phpmyadmin_1 ... doneコンテナの稼働状況を確認する。
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 120e4b86b987 phpmyadmin/phpmyadmin "/run.sh supervisord…" About a minute ago Up About a minute 9000/tcp, 0.0.0.0:4040->80/tcp php72-apache_phpmyadmin_1 bf42cd71d3d4 php:7.2-apache "docker-php-entrypoi…" About a minute ago Up About a minute 0.0.0.0:8080->80/tcp php72-apache_php_1 699f32a6424e mysql:5.7 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp php72-apache_mysql_1PHP の確認
ローカルの html/index.php の内容を変更すると反映される。
MySQL + phpMyAdmin の確認
サービスの停止
docker-compose.yml に記載されているサービスのコンテナが全て停止される。
$ docker-compose stop Stopping php72-apache_phpmyadmin_1 ... done Stopping php72-apache_php_1 ... done Stopping php72-apache_mysql_1 ... doneコンテナの稼働状況を確認する。
停止しているコンテナを表示する為に-a
オプションを使用します。$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 120e4b86b987 phpmyadmin/phpmyadmin "/run.sh supervisord…" 3 minutes ago Exited (0) 11 seconds ago php72-apache_phpmyadmin_1 bf42cd71d3d4 php:7.2-apache "docker-php-entrypoi…" 3 minutes ago Exited (0) 11 seconds ago php72-apache_php_1 699f32a6424e mysql:5.7 "docker-entrypoint.s…" 3 minutes ago Exited (0) 11 seconds ago php72-apache_mysql_1サービスの開始
docker-compose.yml に記載されているサービスのコンテナが稼働する。
あらかじめ、コンテナが作成されている必要がある。$ docker-compose start Starting php ... done Starting mysql ... done Starting phpmyadmin ... done$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 120e4b86b987 phpmyadmin/phpmyadmin "/run.sh supervisord…" 8 minutes ago Up 10 seconds 9000/tcp, 0.0.0.0:4040->80/tcp php72-apache_phpmyadmin_1 bf42cd71d3d4 php:7.2-apache "docker-php-entrypoi…" 8 minutes ago Up 11 seconds 0.0.0.0:8080->80/tcp php72-apache_php_1 699f32a6424e mysql:5.7 "docker-entrypoint.s…" 8 minutes ago Up 12 seconds 3306/tcp, 33060/tcp php72-apache_mysql_1コンテナの削除
docker-compose.yml に記載されているサービスのコンテナを停止、コンテナとネットワークが削除される。
$ docker-compose down Stopping php72-apache_phpmyadmin_1 ... done Stopping php72-apache_php_1 ... done Stopping php72-apache_mysql_1 ... done Removing php72-apache_phpmyadmin_1 ... done Removing php72-apache_php_1 ... done Removing php72-apache_mysql_1 ... done Removing network php72-apache_default$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 投稿日:2019-03-02T16:07:47+09:00
ノンプログラマー、はじめてのSQL
全く知識のない状態からSQLを叩けるようになるまで何をしたかをざっくりまとめました。因みに大体二週間程度でそこそこ書けるようになりました。
自己紹介
元公務員志望のバリバリ文系大学生。プログラミングはPythonをたまに書くくらいの感じで知識は特にない。Qiita初投稿なのでなにか変なところあったら言ってください。
SQLを始めた背景
ノリと勢いで某IT企業の長期インターンに参加。そこでSQLに触れることに。Redashを自由に使っていいとのことだったのでアサインされていた業務で練習をはじめました。
はじめにやったこと
とりあえず『 SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus) 』を一周だけさらっと読んでおく。
![]()
基本を押さえておいて、あとは手を動かしながら覚えようと思っていたので、基本の構文と本のどこにどの内容が載っているかを意識して読み進めていきました。実際に書き始める
辞書の代わりに先ほどの本と『 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ』を準備。
意識したこと
- 検索・質問をしまくる
- 紙に書き出す
検索・質問をしまくる
はじめたてで、知識がないため考えたところでわからないという状態でした。少しでも躓いたら即検索、即質問が効率的だなと。便利な世の中になりましたね。どんなに些細なことでもすぐにやりました。あと、詳しい人に書いたコードについてレビューしてもらったりも。
紙に書き出す
想像してる内容を文でも図でもいいので書いてみる。私の場合、集合で考えていたのでベン図書いてそこに適宜情報追加していくような感じでした。それを設計図にすることもしばしば。
スパゲッティ職人
2週間ほどが経ち、業務にも慣れてきた・そこそこSQLにも慣れてきたという状況で怠惰な心が「一気に必要なデータを集めてしまえ」と語りかけてきて、実行。超大作イケイケコードが見事に出来上がりました。しかし、実行すると返ってこない。おかしい。これは他部署にも迷惑がかかるぞと焦りまくりサーバーの管理をしている方に頼み、キューを削除してもらいました。
原因と対処
単純な指令を集めて書いたが、元のデータが大きい+集めすぎて結局複雑すぎる指令になった(所謂スパゲッティクエリ)ことが原因となった。めっちゃ反省したとともに、いかにサーバーに負担をかけず、高速なクエリを書くかというところに焦点を当て始めた。
そこで、『SQLアンチパターン』を読むことに。この本にはわかりやすくアンチパターンや事例が掲載されており、とても勉強になりました。
最後に
といった雑な感じですがこんな感じで3週間ほど勉強したら粗削りなりにそこそこMySQLが書けるようになりました。拙い文章で恐縮でしたが、ここまで読んでいただきありがとうございました。
- 投稿日:2019-03-02T00:14:16+09:00
MySQL8.0 にしたら Sequel Pro が使えなくなっちゃった
はじめに
Docker で DB コンテナを MySQL のイメージを使って作った。
(この認識で合っているのか?)
その時、バージョンの指定をしていないので最新が入った(のか?)mysql# mysql --version mysql Ver 8.0.15 for Linux on x86_64 (MySQL Community Server - GPL)まあ、なんにせよ、バージョンは 8.0 なわけである。
研修で sequel pro と言う MySQL の GUI ツールの存在を知ったので、
せっかくなら自習でも使ってみようと言うことでインストールをした。やったことと起こったと
1. インストール
brew$ brew cask install sequel-pro2. 接続
サーバの立ち上げについては割愛
接続が成功しました
を確認
⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️⬇️は???成功したんじゃねえのかよ
と、このように、キレてはいけません。
冷静に
⬇️3. ググった
なんと パンケーキは MySQL8.0 に対応していないらしい。
パンケーキの夜版???をインストールする必要があるらしい。4. 解決黒頭巾
リンク先の方法に習って、 sequel pro の再インストールをした
夜バージョンに交換
同じ名前のアプリを2つ持てないから削除する必要があるのであーるbrew$ brew cask uninstall sequel-pro $ brew cask install homebrew/cask-versions/sequel-pro-nightlyパンケーキ(はがねタイプ)
...かっこいい...とてもクールだ、さすが夜バージョン
まとめ
『メタルコート』を持たせた『 Sequel Pro 』 を夜に通信交換したら進化する