【MySQL】The server quit without updating PID file

事象

MySQLを起動すると以下のエラーが表示される

$ sudo mysql.server start
Starting MySQL
... ERROR! The server quit without updating PID file (/usr/local/var/mysql/user.local.pid).

対応

エラーファイル確認

$ tail /usr/local/var/mysql/user.local.err
.....
[ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Address already in use
 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /tmp/mysql.sock ?

/tmp/mysql.sock削除

$ rm /tmp/mysql.sock

削除後に起動して成功

参考

以下はエラーログ確認前に試したこと(結果は変わらず)

mysqlに権限がないため、所有者権限を追加する

sudo chown -R _mysql:_mysql /usr/local/var/mysql

-Rオプションは指定ディレクトリ配下のファイルやディレクトリにも権限を付与する
参考

mysqlの再インストール

$ brew uninstall mysql
$ brew reinstall mysql

/usr/local/var/mysql削除

$ sudo rm -rf /usr/local/var/mysql
$ brew uninstall mysql
$ brew install mysql

参考

pidファイル作成

$ touch /usr/local/var/mysql/satouseiyanoMacBook-Pro.local.pid

参考

【MySQL】ユーザー作成・権限付与コマンド

  • ユーザー作成
CREATE USER 'username'@'from_domain(ipaddress)' IDENTIFIED BY 'password';

例(ユーザー名:hoge@localhost パスワード:hogeのユーザーを登録する)

CREATE USER 'hoge'@'localhost' IDENTIFIED BY 'hoge';
  • 権限付与
GRANT 権限 ON レベル(対象DB or Table) TO 対象ユーザー;
  • 主な権限
    • all / ALL PRIVIREGES...全ての権限を与える
    • create...テーブルを作成する権限を付与する
    • alter...テーブルを変更する権限を付与する
    • drop...テーブルを削除する権限を付与する
    • index...インデックスを作成/削除する権限を付与する
    • select,update,insert,delete,truncate...各テーブル操作の権限を付与する

例(hoge@localhostというユーザーがhogeというパスワードでアクセスしてきたら、hogeというDB内の全てのリソースに全ての権限を与える)

GRANT ALL ON hoge.* TO hoge@localhost IDENTIFIED BY 'hoge';
  • 補足
    MySQL8.0からは未作成のユーザーに権限付与することは出来ない。 MySQL5.7まではGRANT文でユーザー作成も可能だったが、MySQL8.0で実行するとエラー(1064 (42000))となる。

参考

Amazon Web Services 基礎からのネットワーク&サーバー構築 復習

Chapter1

  • リージョン
    • 世界各地に存在するデータセンター群
  • アベイラビリティーゾーン
    • リージョンをさらに分割したもの
    • 物理的に距離が離された独立したファシリティ(設備)
    • 地震や洪水があっても別のアベイラビリティジーンが影響を受けない

通常はどのリージョンの幾つのアベイラビリティーゾーンにサーバーを構築するか検討する

  • Amazon Virtual Private Could(VPC)

    • 仮想的なネットワーク
    • 領域内に自由なネットワークを作成可能
  • Amazon Elastic Compute Cloud(EC2)

Chapter3

  • パブリックIPアドレス
  • プライベートIPアドレス

    • 自由に使え、社内LANを構築するときや実験に使う
  • ホスト

  • CIDR(サイダー)表記

  • サブネットマスク表記

    • プレフィックスのビット数だけ2進数の1を並べて、残りは0で記述
      • 192.168.1.0/255.255.255.0
  • サブネット

    • 細分化したCIDRブロック
    • 細分化する理由
      • 物理的な隔離
        • フロア別に分けたいときや障害時の影響を縮小するため
      • セキュリティ上の理由
        • 別のネットワーク設定することが出来るため、ネットワーク別にアクセス制御が出来る
  • パブリックサブネット

    • インターネットからアクセスするためのサブネット
  • プラベートサブネット

    • インターネットから隔離したサブネット
  • インターネットゲートウェイ

    • ゲートウェイを通じてインターネットを接続するもの
    • 自分のネットワークにインターネット回線を引き込む
  • ルーティング設定

    • ネットワークにデータを流す設定
    • AWSではルートテーブルという設定名
    • 宛先IPアドレスの値が幾つの値の時にどのネットワークに流すかの設定値
    • ディスティネーション
      • 宛先アドレス
    • ネクストホップ・ターゲット
      • 宛先ネットワーク
  • デフォルトゲートウェイ

    • デフォルトの転送先
    • 転送先が何も設定されていない場合の設定値

Chapter3

  • インスタンス

  • ルーティングプロトコル

    • ルーティングテーブルの情報をやりとりするプロトコル
  • EGP

    • ISP(インターネットサービスプロバイダー)やAWSなどの大きなネットワークはネットワーク管理するためのAS番号を持っている
    • EGPはAS番号をやりとりしてどのネットワークの先にどのネットワークが接続されているかをやりとりする
  • IGP

    • EGPの内部のルーター同士でルートテーブルの情報をやりとりする、プロバイダーやAWSの内部で詳細なやりとりを行う
  • ポート

    • 他のコンピュータとデータを送受信するためのデータの出入り口
    • TCPUDPによってデータ送受信の方法が異なる
  • ウェルノウンポート番号

    • 代表的なアプリケーションが利用するポート番号
    • ポート番号の指定が不要
  • エフェメラルポート

    • クライアント側で使用される一時的なランダムなポート番号
    • サーバーからクライアントに向けてデータを送信する際に必要
  • パケットフィルタリング

    • パケットのIPアドレスをポート番号などの付随情報を見て、通過の可否を決める仕組み
    • AWSではインタンスのセキュリティグループが設定を担当
  • SSH通信

    • Secure Shell、セキュリティの強固な通信方法

Chapter4

Chapter5

  • HTTP

  • リクエス

    • リクエストライン
      • 要求コマンド
    • ヘッダー
      • ブラウザの種類や対応言語などブラウザからの追加情報
    • ボディ
      • データをサーバーに送信すPOSTメソッドで使用する
  • レスポンス

    • ステータスライン
      • 要求の成否
    • ヘッダー
      • 追加情報
    • ボディ
      • 要求されたコンテンツデータ
  • HTTPメソッド

    • コンテンツに対する操作コマンド
    • GET
      • URLからアクセス、画像を参照などコンテンツを取得する際に使用
    • POST
      • 入力フォームでデータを送信する時に使用、ボディ部に付与される
  • HTTPステータスコード

    • 結果の成否を示す値
  • リクエストヘッダー

    • クライアントからサーバーに送信する時に送られる情報
      • Host=要求先のホスト名
      • User-Agent=ブラウザ種別
      • Cookie=Cookie情報
  • レズポンスヘッダー

    • サーバーからクラインとに返す時に送られる情報
      • Content-Type=ボディ部のコンテンツ種類
      • Date=コンテンツの日付
      • Set-cookie=Cookie設定
  • Telnet

    • リモートコンピュータと通信するプロトコル
    • 接続先ポート番号を変えることで手動でHTTPのやりとりが出来る

Chapter6

  • プライベートサブネット
    • インターネットから接続できないサブネット

Chapter7

  • NAT(Network Address Translation)
    • パブリックIPアドレスとプライベートIPアドレスを変換する
    • インターネットからプライベートサブネットには接続できない

A successful Git branching model まとめ

使用するブランチ

  • メインブランチ
    • master
    • develop
  • サポートブランチ
    • feature
    • release
    • hotfix

master

  • リリース可能な状態だけを管理するブランチ
  • コミットにタグ付けし、リリース番号を記録する
  • リリースしたものが最新から過去まで確認できる

develop

  • featureブランチを統合するためのブランチ
  • 最新の開発環境を管理する
  • 他の人が参画した際はdevelopをクローンすればすぐに開発に入れる

feature

  • 新機能の開発を行う際にdevelopから分岐するブランチ
  • バグが発生した場合に特定がしやすくなる
  • Fast Forwardを使用せずマージすることで、featureブランチで行ったコミットが分かりやすくなる

release

  • 開発が完了し、マスターに反映する準備のためのブランチ
  • バグ修正など最終調整が完了したら、masterへタグ付きでマージする
  • masterへのマージ後にreleaseブランチでの修正を取り込むため、developにもマージする

hotfix

  • リリース後に緊急で修正するためのブランチ
  • developからmasterまでリリースするまでは時間が掛かるため、masterからブランチを作成しマージする
  • masterへのマージ後、修正を反映させるためdevelopブランチ(あればreleaseにも)にマージする

尚、サポートブランチはmasterやdevelopにマージして役割を終えたら削除する

参考

もう怖くないGit!チーム開発で必要なGitを完全マスター セクション10復習

セクション10:スタッシュで作業を一次避難しよう

作業を一時避難しよう

  • 作業途中でコミットしたくないが、別ブランチで作業するとき、一時避難する
  • git stash
    • ワークツリーとステージの変更をstashに一時避難し、変更をないことにする

避難した作業を確認しよう

  • git stash list
    • 避難した回数分の変更を確認できる

避難した作業を復元しよう

  • git stash apply
    • 最新の避難した変更を元に戻す
    • git stash apply --index...ステージの状況も復元する
    • git stash apply スタッシュ名

避難した作業を削除しよう

  • git stash drop
    • 最新の一時避難した作業を削除する
    • git stash drop スタッシュ名...特定の作業を削除する
    • git stash clear...全作業を削除する