<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: yuki777</title>
    <description>The latest articles on Forem by yuki777 (@yuki777).</description>
    <link>https://forem.com/yuki777</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F111542%2F3a5f147b-9710-47da-9d87-60af420e634e.jpeg</url>
      <title>Forem: yuki777</title>
      <link>https://forem.com/yuki777</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/yuki777"/>
    <language>en</language>
    <item>
      <title>Create a Virtual Office with WorkAdventure on Your Server</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Wed, 24 May 2023 09:32:38 +0000</pubDate>
      <link>https://forem.com/yuki777/create-a-virtual-office-with-workadventure-on-your-server-4l1o</link>
      <guid>https://forem.com/yuki777/create-a-virtual-office-with-workadventure-on-your-server-4l1o</guid>
      <description>&lt;h2&gt;
  
  
  About WorkAdventure
&lt;/h2&gt;

&lt;p&gt;WorkAdventure is a collaborative web application presented in the form of a 16-bit RPG video game. This innovative approach to remote collaboration offers a unique, engaging, and virtual office-like environment.&lt;/p&gt;

&lt;p&gt;For more information, visit the &lt;a href="https://workadventu.re/"&gt;Official Website&lt;/a&gt; or check out the project's &lt;a href="https://github.com/thecodingmachine/workadventure"&gt;GitHub page.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivation
&lt;/h2&gt;

&lt;p&gt;Installing WorkAdventure can seem a bit challenging at first. I have written this guide to make the process simpler for others. If it can assist even one person, I will be satisfied.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before we begin, it's worth mentioning that the steps in this guide have been tested and confirmed to work on a server with the following specifications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Distribution: Canonical, Ubuntu Server Pro, 22.04 LTS, amd64 jammy image built on 2023-05-16&lt;/li&gt;
&lt;li&gt;CPU Architecture: x86_64 (This guide does not support ARM-based CPUs)&lt;/li&gt;
&lt;li&gt;AMI: ami-0702b27a97d5bbcba&lt;/li&gt;
&lt;li&gt;Instance type: t2.medium (4GB Memory)&lt;/li&gt;
&lt;li&gt;Storage: 20GB&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Please note that while the steps should generally work on servers with different specifications, this guide cannot guarantee the same results for other configurations or CPU architectures. Always ensure your server meets the requirements of the software you are installing.&lt;/p&gt;

&lt;p&gt;Set your environment with the following variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;v1.15.11
&lt;span class="nv"&gt;domain&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;your.example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 1: Install Docker
&lt;/h3&gt;

&lt;p&gt;We'll be using Docker for our installation. If you haven't installed Docker on your Ubuntu server yet, you can do so by following the instructions available on &lt;a href="https://docs.docker.com/engine/install/ubuntu/"&gt;Docker's official documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Alternatively, you can use the following script to install Docker:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' &amp;gt; ~/install-docker.sh

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="sh"&gt;
  "deb [arch="&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;--print-architecture&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="sh"&gt;
  "&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;" stable" | &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="sh"&gt;
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-compose
sudo docker run hello-world
&lt;/span&gt;&lt;span class="no"&gt;
EOF
&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

/bin/bash ~/install-docker.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Clone WorkAdventure Repository and Prepare Deployment Files
&lt;/h3&gt;

&lt;p&gt;The next step is to clone the WorkAdventure repository and prepare the necessary deployment files. Use the following commands to achieve this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;

&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; ~/copy-deployment-files

mkdir -p ~/git
cd ~/git
sudo rm -fr ~/git/workadventure
git clone https://github.com/thecodingmachine/workadventure.git -b &lt;/span&gt;&lt;span class="nv"&gt;$version&lt;/span&gt;&lt;span class="sh"&gt;
cd ~/git/workadventure/contrib/docker
cp .env.prod.template .env
cp docker-compose.prod.yaml docker-compose.yaml
&lt;/span&gt;&lt;span class="no"&gt;
EOF
&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

/bin/bash ~/copy-deployment-files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Configure Your Environment
&lt;/h3&gt;

&lt;p&gt;Once Docker is installed and the repository is cloned, configure your environment using the following script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt;

&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt; ~/configure-your-environment.sh

cd ~/git/workadventure/contrib/docker
sed -i 's/^SECRET_KEY=&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;SECRET_KEY=foobar/' .env
sed -i "s/^DOMAIN=workadventure.localhost&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;DOMAIN=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;domain&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;/" .env
sed -i "s/workadventure.localhost/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;domain&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;/" .env
sed -i "s/^VERSION=master&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;VERSION=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;version&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;/" .env
sed -i "s/^MAP_STORAGE_AUTHENTICATION_USER=&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;MAP_STORAGE_AUTHENTICATION_USER=map-storage-user/" .env
sed -i "s/^MAP_STORAGE_AUTHENTICATION_PASSWORD=&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;MAP_STORAGE_AUTHENTICATION_PASSWORD=map-storage-pass/" .env
sed -i 's/^ADMIN_API_URL=&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="sh"&gt;#ADMIN_API_URL=/' .env
echo PLAY_HOST=play.&lt;/span&gt;&lt;span class="nv"&gt;$domain&lt;/span&gt;&lt;span class="sh"&gt; &amp;gt;&amp;gt; .env
&lt;/span&gt;&lt;span class="no"&gt;
EOF
&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

/bin/bash ~/configure-your-environment.sh

&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'/PROMETHEUS_AUTHORIZATION_TOKEN: "$PROMETHEUS_AUTHORIZATION_TOKEN"/a \
      AUTHENTICATION_STRATEGY: "Basic"\
      AUTHENTICATION_TOKEN: "token"\
      AUTHENTICATION_USER: "user"\
      AUTHENTICATION_PASSWORD: "pass"'&lt;/span&gt; ~/git/workadventure/contrib/docker/docker-compose.yaml

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4: Launch the WorkAdventure Environment
&lt;/h3&gt;

&lt;p&gt;With your environment configured, start the WorkAdventure environment with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/git/workadventure/contrib/docker &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;docker-compose up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 5: Create and Upload Your First Map
&lt;/h3&gt;

&lt;p&gt;WorkAdventure operates with maps that define the virtual space. Here is how you can create your first map and upload it to your server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Delete old repository and clone repository&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/git
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/git
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-fr&lt;/span&gt; workadventure-map-starter-kit
git clone https://github.com/thecodingmachine/workadventure-map-starter-kit.git &lt;span class="nt"&gt;-b&lt;/span&gt; v3.3.3
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/git/workadventure-map-starter-kit

&lt;span class="c"&gt;# volta pin node@20 # Use Node.js v20 via volta&lt;/span&gt;
npm ci

&lt;span class="c"&gt;# Build&lt;/span&gt;
npm run build
&lt;span class="nb"&gt;mv &lt;/span&gt;dist map
zip &lt;span class="nt"&gt;-r&lt;/span&gt; map.zip map
&lt;span class="nb"&gt;cp &lt;/span&gt;map.zip ~/Desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing Your Installation
&lt;/h2&gt;

&lt;p&gt;Now that you have installed WorkAdventure and uploaded your first map, it's time to test it out. Here are some useful links:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload map

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://map-storage.YOUR.EXAMPLE.COM/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;user : pass&lt;/li&gt;
&lt;li&gt;Directory: &lt;code&gt;/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;View maps

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://map-storage.YOUR.EXAMPLE.COM/maps&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;Play

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://play.YOUR.EXAMPLE.COM/_/global/map-storage.YOUR.EXAMPLE.COM/map/map.tmj&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Future Work
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Integrate Jitsi for video conferencing capabilities&lt;/li&gt;
&lt;li&gt;Set the correct timezone for server operations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember, installing and setting up WorkAdventure is just the beginning of the journey. Have fun exploring and creating your own unique virtual office!&lt;/p&gt;

</description>
      <category>workadventure</category>
    </item>
    <item>
      <title>Install multiple PHP versions and automatically switch versions for each directory</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Thu, 17 Nov 2022 01:33:14 +0000</pubDate>
      <link>https://forem.com/yuki777/install-multiple-php-versions-and-automatically-switch-versions-for-each-directory-1jop</link>
      <guid>https://forem.com/yuki777/install-multiple-php-versions-and-automatically-switch-versions-for-each-directory-1jop</guid>
      <description>&lt;h2&gt;
  
  
  Description
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Translated from &lt;a href="https://qiita.com/yuki777/items/c8e33ca3290b55862c6a"&gt;Qiita&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;I want to use multiple versions of PHP&lt;/li&gt;
&lt;li&gt;I want to automatically switch between different versions of PHP for each directory&lt;/li&gt;
&lt;li&gt;I don't want to do php builds because they are too difficult&lt;/li&gt;
&lt;li&gt;I want to support Mac and Ubuntu&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install brew
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install &lt;a href="https://brew.sh/"&gt;Brew&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;I thought brew was for macs only, but it can be installed on ubuntu too!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install php
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install php&lt;/li&gt;
&lt;li&gt;Additional packages can be installed as needed, such as imagemagick&lt;/li&gt;
&lt;li&gt;In this article, *&lt;em&gt;PHP is installed with brew. *&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew update
brew tap shivammathur/php
brew &lt;span class="nb"&gt;install &lt;/span&gt;php@8.1
brew &lt;span class="nb"&gt;install &lt;/span&gt;php@8.0
brew &lt;span class="nb"&gt;install &lt;/span&gt;php@7.4
brew &lt;span class="nb"&gt;install &lt;/span&gt;pkg-config
brew &lt;span class="nb"&gt;install &lt;/span&gt;imagemagick
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install phpenv
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install phpenv&lt;/li&gt;
&lt;li&gt;phpenv is used to switch between PHP versions using &lt;code&gt;phpenv global&lt;/code&gt;, &lt;code&gt;phpenv local&lt;/code&gt;, etc.&lt;/li&gt;
&lt;li&gt;In this article, &lt;strong&gt;phpenv does not install PHP&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install phpenv&lt;/span&gt;
curl &lt;span class="nt"&gt;-L&lt;/span&gt; https://raw.githubusercontent.com/phpenv/phpenv-installer/master/bin/phpenv-installer | bash

&lt;span class="c"&gt;# Setup phpenv&lt;/span&gt;
&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' &amp;gt;&amp;gt; ~/.zshrc
# phpenv
export PHPENV_ROOT="&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="sh"&gt;/.phpenv"
if [ -d "&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PHPENV_ROOT&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;" ]; then
  export PATH="&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PHPENV_ROOT&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;/bin:&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"
  eval "&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;phpenv init -&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;"
fi
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# restart shell&lt;/span&gt;
&lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nv"&gt;$SHELL&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Link each version of php installed by brew to ~/.phpenv/versions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You need to link the php installed by brew so that phpenv can manage them. Manual work is tedious, so &lt;a href="https://gist.github.com/yuki777/6244823b8aa8cf4457e97e6407ada5ad/"&gt;I wrote a script.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://gist.githubusercontent.com/yuki777/6244823b8aa8cf4457e97e6407ada5ad/raw/e988f8a1c112e4063768664104ba14d799e63782/link-phps.bash | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-au&lt;/span&gt;

&lt;span class="c"&gt;## Check cellar dir&lt;/span&gt;
&lt;span class="nv"&gt;cellarDir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;brew &lt;span class="nt"&gt;--prefix&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;/Cellar
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$cellarDir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Not found. brew package path &lt;/span&gt;&lt;span class="nv"&gt;$cellarDir&lt;/span&gt;&lt;span class="s2"&gt; :("&lt;/span&gt;
  &lt;span class="nb"&gt;echo
  exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nv"&gt;parentDirs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="nv"&gt;$cellarDir&lt;/span&gt;/php&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 0&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"# Link the php installed by Brew to ~/.phpenv/versions"&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;parentDir &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$parentDirs&lt;/span&gt;
&lt;span class="k"&gt;do
  &lt;/span&gt;&lt;span class="nv"&gt;childDirs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;find &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$parentDir&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 0&lt;span class="si"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;childDir &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$childDirs&lt;/span&gt;
  &lt;span class="k"&gt;do
    &lt;/span&gt;&lt;span class="nv"&gt;phpPath&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$childDir&lt;/span&gt;/bin/php
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$phpPath&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
      continue
    fi
    &lt;/span&gt;&lt;span class="nv"&gt;major&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$phpPath&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'echo PHP_MAJOR_VERSION;'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;minor&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$phpPath&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'echo PHP_MINOR_VERSION;'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="nv"&gt;patch&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nv"&gt;$phpPath&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'echo PHP_RELEASE_VERSION;'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

    &lt;span class="c"&gt;# unlink&lt;/span&gt;
    &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/.phpenv/versions/&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$major&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$minor&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/.phpenv/versions/&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$major&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$minor&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;.&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$patch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

    &lt;span class="c"&gt;# link&lt;/span&gt;
    &lt;span class="nv"&gt;linkCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ln -s &lt;/span&gt;&lt;span class="nv"&gt;$childDir&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.phpenv/versions/&lt;/span&gt;&lt;span class="nv"&gt;$major&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$minor&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$linkCommand&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nv"&gt;$linkCommand&lt;/span&gt;
    &lt;span class="nv"&gt;linkCommand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ln -s &lt;/span&gt;&lt;span class="nv"&gt;$childDir&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.phpenv/versions/&lt;/span&gt;&lt;span class="nv"&gt;$major&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$minor&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="nv"&gt;$patch&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$linkCommand&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nv"&gt;$linkCommand&lt;/span&gt;
  &lt;span class="k"&gt;done
done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
  
  
  Tests
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Test that running &lt;code&gt;php -v&lt;/code&gt; in global will use php 8.1&lt;/li&gt;
&lt;li&gt;Test that php 7.4 is automatically switched to php 7.4 when you move to the /tmp/php7.4
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;mkdir &lt;/span&gt;php74 php80 php81

&lt;span class="c"&gt;# set version&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp         &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; phpenv global 8.1 &lt;span class="c"&gt;# set 8.1 as a global&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php74   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; phpenv &lt;span class="nb"&gt;local  &lt;/span&gt;7.4 &lt;span class="c"&gt;# pin 7.4 in this dir&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php80   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; phpenv &lt;span class="nb"&gt;local  &lt;/span&gt;8.0 &lt;span class="c"&gt;# pin 8.0 in this dir&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php81   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; phpenv &lt;span class="nb"&gt;local  &lt;/span&gt;8.1 &lt;span class="c"&gt;# pin 8.1 in this dir&lt;/span&gt;

&lt;span class="c"&gt;# test version&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp         &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# =&amp;gt; 8.1&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php74   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# =&amp;gt; 7.4&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php80   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# =&amp;gt; 8.0&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp/php81   &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; php &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# =&amp;gt; 8.1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Notes on brew upgrade
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;When php is upgraded by brew upgrade, symlink will be broken, so you need to re-run the link.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://gist.githubusercontent.com/yuki777/6244823b8aa8cf4457e97e6407ada5ad/raw/e988f8a1c112e4063768664104ba14d799e63782/link-phps.bash | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Want to use multiple versions of PHP =&amp;gt; with phpenv.&lt;/li&gt;
&lt;li&gt;Want to automatically switch between different versions of php for each directory =&amp;gt; with phpenv.&lt;/li&gt;
&lt;li&gt;Don't want to waste time with php builds =&amp;gt; install php with brew.&lt;/li&gt;
&lt;li&gt;I want to support Mac and Ubuntu =&amp;gt; with brew and my own scripts.&lt;/li&gt;
&lt;li&gt;Special thanks, uzulla-san's &lt;a href="https://speakerdeck.com/uzulla/phpfalsebirudonitukareta-falsede-phpenv-plus-homebrew?slide=11"&gt;slide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  and others
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;About pecl installation&lt;/li&gt;
&lt;li&gt;This article is written assuming a clean installation, but there are cases where php, direnv, brew-php-switcher, etc. have already been installed.&lt;/li&gt;
&lt;li&gt;About specifying php version in vscode and phpstorm&lt;/li&gt;
&lt;li&gt;I will write more if there is demand for it.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>mac</category>
      <category>ubuntu</category>
      <category>php</category>
      <category>phpenv</category>
    </item>
    <item>
      <title>Have you ever mistakenly created test data on production's admin panel?</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Tue, 21 Jun 2022 05:37:18 +0000</pubDate>
      <link>https://forem.com/yuki777/have-you-ever-mistakenly-used-a-development-server-for-a-production-server-3cke</link>
      <guid>https://forem.com/yuki777/have-you-ever-mistakenly-used-a-development-server-for-a-production-server-3cke</guid>
      <description>&lt;p&gt;I made so many mistakes, so I wrote a little code.&lt;br&gt;
Hope it helps you.&lt;/p&gt;

&lt;p&gt;Chrome extension: &lt;a href="https://chrome.google.com/webstore/detail/peacekeeper/dfhhnlmecdgbidblhlidkgiagikjgfip"&gt;https://chrome.google.com/webstore/detail/peacekeeper/dfhhnlmecdgbidblhlidkgiagikjgfip&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source code: &lt;a href="https://github.com/yuki777/peacekeeper"&gt;https://github.com/yuki777/peacekeeper&lt;/a&gt;&lt;/p&gt;

</description>
      <category>peacekeeper</category>
      <category>chrome</category>
      <category>extension</category>
    </item>
    <item>
      <title>Bash script to make ECS Exec (aws ecs execute-command) useful</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Mon, 08 Nov 2021 01:22:03 +0000</pubDate>
      <link>https://forem.com/yuki777/bash-script-to-make-ecs-exec-aws-ecs-execute-command-useful-1lba</link>
      <guid>https://forem.com/yuki777/bash-script-to-make-ecs-exec-aws-ecs-execute-command-useful-1lba</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Translated from &lt;a href="https://qiita.com/yuki777/items/e7bcb80e32eca355ddac"&gt;qiita.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Bash script(&lt;a href="https://gist.github.com/yuki777/640cba3e0a68587c36165b8a87d25390"&gt;gist&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download it, save it any name you like, `chmod` it.&lt;/span&gt;
curl https://gist.githubusercontent.com/yuki777/640cba3e0a68587c36165b8a87d25390/raw/5bfa8242ba00ed336da76711d602e6df4f76a452/sssh &lt;span class="nt"&gt;-o&lt;/span&gt; sssh
&lt;span class="nb"&gt;chmod &lt;/span&gt;744 sssh
./sssh

&lt;span class="c"&gt;# Select aws profile from `aws configure list-profiles`&lt;/span&gt;
Select aws profile.
1&lt;span class="o"&gt;)&lt;/span&gt; default
2&lt;span class="o"&gt;)&lt;/span&gt; foo-bar
&lt;span class="c"&gt;#? 2&lt;/span&gt;
profile: foo-bar

&lt;span class="c"&gt;# Select cluster from `aws ecs list-clusters`&lt;/span&gt;
Select cluster.
1&lt;span class="o"&gt;)&lt;/span&gt; dev-foo-bar-cluster          9&lt;span class="o"&gt;)&lt;/span&gt; prod-foo-app-cluster
2&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-hoge-ad-cluster      10&lt;span class="o"&gt;)&lt;/span&gt; stg-foo-app-cluster
3&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-hoge-cluster         11&lt;span class="o"&gt;)&lt;/span&gt; stg-foo-hoge-cluster
4&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-piyo2021-ad-cluster  12&lt;span class="o"&gt;)&lt;/span&gt; stg-foo-piyo2021-cluster
5&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-piyo2021-cluster     13&lt;span class="o"&gt;)&lt;/span&gt; stg-foo-bar-cluster
6&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-bar-ad-cluster       14&lt;span class="o"&gt;)&lt;/span&gt; stg-foo-tags-cluster
7&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-bar-cluster          15&lt;span class="o"&gt;)&lt;/span&gt; hoge-foo-bar-cluster
8&lt;span class="o"&gt;)&lt;/span&gt; prd-foo-tags-cluster
&lt;span class="c"&gt;#? 1&lt;/span&gt;
cluster: dev-foo-bar-cluster

&lt;span class="c"&gt;# Select service from `aws ecs list-services`&lt;/span&gt;
 1&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1125-service
 2&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1206-service
 3&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1249-service
 4&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1275-service
 5&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1323-service
 6&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1348-service
 7&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1349-service
 8&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1384-service
 9&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1386-service
10&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1391-service
11&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1397-service
12&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1399-service
13&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1412-service
14&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1413-service
15&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1419-service
16&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-qa-1420-service
17&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-service
&lt;span class="c"&gt;#? 16&lt;/span&gt;
service: arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:service/dev-foo-bar-cluster/dev-foo-bar-qa-1420-service

&lt;span class="c"&gt;# Select task from `aws ecs list-tasks`&lt;/span&gt;
1&lt;span class="o"&gt;)&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:task/dev-foo-bar-cluster/&lt;span class="k"&gt;********************************&lt;/span&gt;
&lt;span class="c"&gt;#? 1&lt;/span&gt;
task: arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:task/dev-foo-bar-cluster/&lt;span class="k"&gt;********************************&lt;/span&gt;

&lt;span class="c"&gt;# Select container from `aws ecs describe-tasks`&lt;/span&gt;
1&lt;span class="o"&gt;)&lt;/span&gt; container-foo
2&lt;span class="o"&gt;)&lt;/span&gt; container-bar
3&lt;span class="o"&gt;)&lt;/span&gt; container-hoge
4&lt;span class="o"&gt;)&lt;/span&gt; container-piyo
&lt;span class="c"&gt;#? 1&lt;/span&gt;
container: container-foo

&lt;span class="c"&gt;# Show command&lt;/span&gt;
aws ecs execute-command &lt;span class="nt"&gt;--profile&lt;/span&gt; foo-bar &lt;span class="nt"&gt;--cluster&lt;/span&gt; dev-foo-bar-cluster &lt;span class="nt"&gt;--container&lt;/span&gt; container-foo &lt;span class="nt"&gt;--task&lt;/span&gt; arn:aws:ecs:ap-northeast-1:&lt;span class="k"&gt;************&lt;/span&gt;:task/dev-foo-bar-cluster/&lt;span class="k"&gt;********************************&lt;/span&gt; &lt;span class="nt"&gt;--interactive&lt;/span&gt; &lt;span class="nt"&gt;--command&lt;/span&gt; &lt;span class="s1"&gt;'/bin/sh'&lt;/span&gt;

The Session Manager plugin was installed successfully. Use the AWS CLI to start a session.

&lt;span class="c"&gt;# Start your session and run command from `aws ecs execute-command`&lt;/span&gt;
Starting session with SessionId: ecs-execute-command-&lt;span class="k"&gt;*****************&lt;/span&gt;
/path/to/home &lt;span class="c"&gt;# :)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source
&lt;/h2&gt;

&lt;p&gt;Bash script(&lt;a href="https://gist.github.com/yuki777/640cba3e0a68587c36165b8a87d25390"&gt;gist&lt;/a&gt;)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Bash script to run ecs-exec on Amazon ECS Fargate containers.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Usage: See --help.&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Installation: Download the script and `chmod u+x the script`.&lt;/span&gt;
&lt;span class="c"&gt;#  curl https://gist.githubusercontent.com/yuki777/640cba3e0a68587c36165b8a87d25390/raw/5bfa8242ba00ed336da76711d602e6df4f76a452/sssh -o sssh &amp;amp;&amp;amp; chmod u+x sssh&lt;/span&gt;
&lt;span class="c"&gt;#  ./sssh&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Prerequisites (validated)&lt;/span&gt;
&lt;span class="c"&gt;# - aws cli&lt;/span&gt;
&lt;span class="c"&gt;# - session-manager-plugin&lt;/span&gt;
&lt;span class="c"&gt;# - jq&lt;/span&gt;
&lt;span class="c"&gt;#&lt;/span&gt;
&lt;span class="c"&gt;# Special thanks to contributor&lt;/span&gt;
&lt;span class="c"&gt;# - leewc&lt;/span&gt;

&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-eu&lt;/span&gt;

selectProfile&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="c"&gt;# profile parameter not supplied.&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;+x&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
        &lt;span class="c"&gt;# only works with AWS CLIv2.&lt;/span&gt;
        &lt;span class="k"&gt;select &lt;/span&gt;selected &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;aws configure list-profiles&lt;span class="sb"&gt;`&lt;/span&gt;
        &lt;span class="k"&gt;do
            &lt;/span&gt;&lt;span class="nb"&gt;break
        &lt;/span&gt;&lt;span class="k"&gt;done
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$selected&lt;/span&gt;
    &lt;span class="k"&gt;else
        &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$profile&lt;/span&gt;
    &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

params&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;profileParam&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;regionParam&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

profileParam&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$profile&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"--profile &lt;/span&gt;&lt;span class="nv"&gt;$profile&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

regionParam&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$region&lt;/span&gt; &lt;span class="o"&gt;]]&lt;/span&gt; &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"--region &lt;/span&gt;&lt;span class="nv"&gt;$region&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

selectCluster&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="k"&gt;select &lt;/span&gt;selected &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ecs list-clusters &lt;span class="si"&gt;$(&lt;/span&gt;params&lt;span class="si"&gt;)&lt;/span&gt;|jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;".clusterArns[]"&lt;/span&gt;|sort|cut &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"/"&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;break
    &lt;/span&gt;&lt;span class="k"&gt;done
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$selected&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

selectService&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="k"&gt;select &lt;/span&gt;selected &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ecs list-services &lt;span class="si"&gt;$(&lt;/span&gt;params&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;--cluster&lt;/span&gt; &lt;span class="nv"&gt;$cluster&lt;/span&gt;|jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;".serviceArns[]"&lt;/span&gt;|sort&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;break
    &lt;/span&gt;&lt;span class="k"&gt;done
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$selected&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

selectTask&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="k"&gt;select &lt;/span&gt;selected &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ecs list-tasks &lt;span class="si"&gt;$(&lt;/span&gt;params&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;--cluster&lt;/span&gt; &lt;span class="nv"&gt;$cluster&lt;/span&gt; &lt;span class="nt"&gt;--service-name&lt;/span&gt; &lt;span class="nv"&gt;$service&lt;/span&gt; &lt;span class="nt"&gt;--desired-status&lt;/span&gt; RUNNING |jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.taskArns[]'&lt;/span&gt;|sort&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;break
    &lt;/span&gt;&lt;span class="k"&gt;done
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$selected&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

selectContainer&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="k"&gt;select &lt;/span&gt;selected &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;aws ecs describe-tasks &lt;span class="si"&gt;$(&lt;/span&gt;params&lt;span class="si"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;--cluster&lt;/span&gt; &lt;span class="nv"&gt;$cluster&lt;/span&gt; &lt;span class="nt"&gt;--tasks&lt;/span&gt; &lt;span class="nv"&gt;$task&lt;/span&gt; | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s2"&gt;".tasks[].containers[].name"&lt;/span&gt;|sort&lt;span class="si"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;do
        &lt;/span&gt;&lt;span class="nb"&gt;break
    &lt;/span&gt;&lt;span class="k"&gt;done
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$selected&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

colorEcho&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="nv"&gt;red&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'\033[0;31m'&lt;/span&gt;
    &lt;span class="nv"&gt;green&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'\033[0;32m'&lt;/span&gt;
    &lt;span class="nv"&gt;yellow&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'\033[0;33m'&lt;/span&gt;
    &lt;span class="nv"&gt;reset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'\033[0m'&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$@&lt;/span&gt; | egrep &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"prd|prod|production"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$red&lt;/span&gt;
    &lt;span class="k"&gt;elif &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$@&lt;/span&gt; | egrep &lt;span class="nt"&gt;-q&lt;/span&gt; &lt;span class="s2"&gt;"stg|stage|staging|beta|devo"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;&lt;span class="nv"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$yellow&lt;/span&gt;
    &lt;span class="k"&gt;else
        &lt;/span&gt;&lt;span class="nv"&gt;color&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$green&lt;/span&gt;
    &lt;span class="k"&gt;fi

    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;color&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;reset&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

echo_stderr&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2
&lt;span class="o"&gt;}&lt;/span&gt;

die&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    echo_stderr &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$@&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="o"&gt;}&lt;/span&gt;

validatePrereq&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; jq  &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; die &lt;span class="s2"&gt;"jq not installed on host. Please install jq. See https://stedolan.github.io/jq/download/"&lt;/span&gt;
    &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; session-manager-plugin &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; die &lt;span class="s2"&gt;"session-manager-plugin not installed. See https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-install-plugin.html"&lt;/span&gt;
    &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; aws &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; die &lt;span class="s2"&gt;"AWS CLI not found, AWS CLI version 1.16.12 or later must be installed. See https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html"&lt;/span&gt;
    &lt;span class="c"&gt;# Checks if AWS CLI is outdated or not., v1 of AWS CLI pipes to std error, redirect&lt;/span&gt;
    &lt;span class="nv"&gt;AWS_CLI_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;aws &lt;span class="nt"&gt;--version&lt;/span&gt; 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;awk&lt;/span&gt; &lt;span class="s1"&gt;'{ print $1 }'&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;/ &lt;span class="nt"&gt;-f2&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
    echo_stderr &lt;span class="s2"&gt;"You have AWS CLI v&lt;/span&gt;&lt;span class="nv"&gt;$AWS_CLI_VERSION&lt;/span&gt;&lt;span class="s2"&gt; installed."&lt;/span&gt;
    &lt;span class="c"&gt;# Do a best effort check for v1 (so that it's at least 1.10 and up.&lt;/span&gt;
    &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$AWS_CLI_VERSION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^1.1[0-9] &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nv"&gt;$AWS_CLI_VERSION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^2 &lt;span class="o"&gt;]]&lt;/span&gt; &amp;amp;&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; die &lt;span class="s2"&gt;"AWS CLI version 1.16.12 or later must be installed to support ecs-exec, Run 'aws --version' to see what you have. See https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html"&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;function &lt;/span&gt;print_help&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;amp;2 &lt;span class="o"&gt;&amp;lt;&amp;lt;-&lt;/span&gt;&lt;span class="no"&gt;END&lt;/span&gt;&lt;span class="sh"&gt;

This script simplifies the process of getting the required information to drop into an
interactive shell script on your container hosted on Fargate/ECS.

Example:

./sssh --region us-west-2
./sssh --profile default

Supported input parameters:
 -r | --region  : AWS Region to fetch the cluster, service, task
 -p | --profile : AWS Profile for credentials and region.
 -c | --command : Command to execute, defaults to '/bin/sh'/

The default command executed on the selected container is '/bin/sh'.
If a region is not provided, the script will attempt to use your region set in the profile.
If you want to execute a different command or shell, you can pass it in like so:

./sssh --command '/bin/bash'

You need active (unexpired) AWS credentials, otherwise, the script will crash.

Updates on https://gist.githubusercontent.com/leewc/e4c3a16551b06c2b0b4640fa5a3d9c00
&lt;/span&gt;&lt;span class="no"&gt;
END
&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;

main&lt;span class="o"&gt;(){&lt;/span&gt;
    &lt;span class="nb"&gt;command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'/bin/sh'&lt;/span&gt;
    &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="s2"&gt;"$#"&lt;/span&gt; &lt;span class="nt"&gt;-gt&lt;/span&gt; 0 &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
        case&lt;/span&gt; &lt;span class="nv"&gt;$1&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt;
            &lt;span class="nt"&gt;-h&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--help&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                print_help
                &lt;span class="nb"&gt;exit&lt;/span&gt;
                &lt;span class="p"&gt;;;&lt;/span&gt;
            &lt;span class="nt"&gt;-r&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--region&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;shift
                &lt;/span&gt;&lt;span class="nv"&gt;region&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;:?Region&lt;span class="p"&gt; must be specified in --region&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
                &lt;span class="nb"&gt;shift&lt;/span&gt;
                &lt;span class="p"&gt;;;&lt;/span&gt;
            &lt;span class="nt"&gt;-p&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;shift
                &lt;/span&gt;&lt;span class="nv"&gt;profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;:?Profile&lt;span class="p"&gt; must be specified in --profile&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
                &lt;span class="nb"&gt;shift&lt;/span&gt;
                &lt;span class="p"&gt;;;&lt;/span&gt;
            &lt;span class="nt"&gt;-c&lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="nt"&gt;--command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="nb"&gt;shift
                command&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;1&lt;/span&gt;:?Command&lt;span class="p"&gt; must be specified in --command&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
                &lt;span class="nb"&gt;shift&lt;/span&gt;
                &lt;span class="p"&gt;;;&lt;/span&gt;
            &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                die &lt;span class="s2"&gt;"Unknown param &lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
                &lt;span class="p"&gt;;;&lt;/span&gt;
        &lt;span class="k"&gt;esac&lt;/span&gt;
    &lt;span class="k"&gt;done

    &lt;/span&gt;echo_stderr &lt;span class="s2"&gt;"Validating pre-requisites...."&lt;/span&gt;
    validatePrereq

    &lt;span class="c"&gt;# spaces matter :)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nv"&gt;$AWS_CLI_VERSION&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;~ ^2 &lt;span class="o"&gt;]]&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
        &lt;/span&gt;echo_stderr &lt;span class="s2"&gt;"Select AWS Profile."&lt;/span&gt;
        &lt;span class="nv"&gt;profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;selectProfile&lt;span class="sb"&gt;`&lt;/span&gt;
        colorEcho profile: &lt;span class="nv"&gt;$profile&lt;/span&gt;
    &lt;span class="k"&gt;else &lt;/span&gt;echo_stderr &lt;span class="s2"&gt;"[INFO] AWS CLI is not v2, unable to select profile. --region or --profile must be set."&lt;/span&gt;
    &lt;span class="k"&gt;fi
    &lt;/span&gt;echo_stderr

    echo_stderr &lt;span class="s2"&gt;"Select cluster."&lt;/span&gt;
    &lt;span class="nv"&gt;cluster&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;selectCluster&lt;span class="sb"&gt;`&lt;/span&gt;
    colorEcho cluster: &lt;span class="nv"&gt;$cluster&lt;/span&gt;
    echo_stderr

    echo_stderr &lt;span class="s2"&gt;"Select service."&lt;/span&gt;
    &lt;span class="nv"&gt;service&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;selectService&lt;span class="sb"&gt;`&lt;/span&gt;
    colorEcho service: &lt;span class="nv"&gt;$service&lt;/span&gt;
    echo_stderr

    echo_stderr &lt;span class="s2"&gt;"Select task."&lt;/span&gt;
    &lt;span class="nv"&gt;task&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;selectTask&lt;span class="sb"&gt;`&lt;/span&gt;
    colorEcho task: &lt;span class="nv"&gt;$task&lt;/span&gt;
    echo_stderr

    echo_stderr &lt;span class="s2"&gt;"Select container."&lt;/span&gt;
    &lt;span class="nv"&gt;container&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;selectContainer&lt;span class="sb"&gt;`&lt;/span&gt;
    colorEcho container: &lt;span class="nv"&gt;$container&lt;/span&gt;
    echo_stderr

    echo_stderr &lt;span class="s2"&gt;"Executing command (you might have to upgrade your AWS CLI if this fails)"&lt;/span&gt;
    &lt;span class="nv"&gt;cmd&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"aws ecs execute-command &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;params&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; --cluster &lt;/span&gt;&lt;span class="nv"&gt;$cluster&lt;/span&gt;&lt;span class="s2"&gt; --container &lt;/span&gt;&lt;span class="nv"&gt;$container&lt;/span&gt;&lt;span class="s2"&gt; --task &lt;/span&gt;&lt;span class="nv"&gt;$task&lt;/span&gt;&lt;span class="s2"&gt; --interactive --command '&lt;/span&gt;&lt;span class="nv"&gt;$command&lt;/span&gt;&lt;span class="s2"&gt;'"&lt;/span&gt;
    colorEcho &lt;span class="nv"&gt;$cmd&lt;/span&gt;

    &lt;span class="nv"&gt;$cmd&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# Execute main function and pass all params over&lt;/span&gt;
main &lt;span class="nv"&gt;$@&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Start MySQL database server on Mac startup</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Thu, 25 Mar 2021 06:47:22 +0000</pubDate>
      <link>https://forem.com/yuki777/start-mysql-database-server-on-mac-startup-40n4</link>
      <guid>https://forem.com/yuki777/start-mysql-database-server-on-mac-startup-40n4</guid>
      <description>&lt;h1&gt;
  
  
  Set cron by crontab
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;You can use &lt;code&gt;@reboot&lt;/code&gt; in crontab.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.unix.com/man-page/osx/5/crontab/"&gt;crontab osx man page&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;crontab &lt;span class="nt"&gt;-e&lt;/span&gt;

&lt;span class="c"&gt;# Start MySQL 8.0.23 with port 13306 on startup&lt;/span&gt;
@reboot &lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/my.cnf &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13306 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_13306.sock &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysqld.err &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysql.pid

&lt;span class="c"&gt;# Start MySQL 8.0.23 with port 23306 on startup&lt;/span&gt;
@reboot &lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/my.cnf &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;23306 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_23306.sock &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysqld.err &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysql.pid

&lt;span class="c"&gt;# Start MySQL 5.7.31 with port 33306 on startup&lt;/span&gt;
@reboot &lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/my.cnf &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;33306 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_33306.sock &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysqld.err &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysql.pid

&lt;span class="c"&gt;# Start MySQL 5.7.31 with port 43306 on startup&lt;/span&gt;
@reboot &lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31 &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/my.cnf &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;43306 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_43306.sock &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysqld.err &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysql.pid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>dbdb</category>
      <category>database</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Delete multiple MySQL database server on local Mac</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Tue, 23 Mar 2021 07:34:18 +0000</pubDate>
      <link>https://forem.com/yuki777/delete-multiple-mysql-database-server-on-local-mac-1ig8</link>
      <guid>https://forem.com/yuki777/delete-multiple-mysql-database-server-on-local-mac-1ig8</guid>
      <description>&lt;h1&gt;
  
  
  Delete MySQL datadir
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The datadir contains your data.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir

&lt;span class="c"&gt;# Delete "mysql8-name1"&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-fr&lt;/span&gt; mysql/versions/8.0.23/datadir/mysql8-name1

&lt;span class="c"&gt;# Delete "mysql8-name2"&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-fr&lt;/span&gt; mysql/versions/8.0.23/datadir/mysql8-name2

&lt;span class="c"&gt;# Delete "mysql5-name3"&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-fr&lt;/span&gt; mysql/versions/5.7.31/datadir/mysql5-name3

&lt;span class="c"&gt;# Delete "mysql5-name4"&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-fr&lt;/span&gt; mysql/versions/5.7.31/datadir/mysql5-name4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Delete MySQL basedir(option)
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;The basedir contains MySQL programs.&lt;/li&gt;
&lt;li&gt;If you want to delete basedir too, you can do that.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>dbdb</category>
      <category>database</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Connect multiple MySQL database server on local Mac</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Fri, 19 Mar 2021 16:22:26 +0000</pubDate>
      <link>https://forem.com/yuki777/connect-multiple-mysql-database-server-on-local-mac-4ikb</link>
      <guid>https://forem.com/yuki777/connect-multiple-mysql-database-server-on-local-mac-4ikb</guid>
      <description>&lt;h1&gt;
  
  
  Connect MySQL with custom port and socket
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# MySQL 8.0.23 with port 13306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_13306.sock

&lt;span class="c"&gt;# MySQL 8.0.23 with port 23306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;23306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_23306.sock

&lt;span class="c"&gt;# MySQL 5.7.31 with port 33306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;33306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_33306.sock

&lt;span class="c"&gt;# MySQL 5.7.31 with port 43306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;43306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_43306.sock
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>dbdb</category>
      <category>database</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Start and Stop multiple MySQL database server on local Mac</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Wed, 17 Mar 2021 02:55:30 +0000</pubDate>
      <link>https://forem.com/yuki777/start-multiple-mysql-database-server-on-local-mac-5e3h</link>
      <guid>https://forem.com/yuki777/start-multiple-mysql-database-server-on-local-mac-5e3h</guid>
      <description>&lt;h1&gt;
  
  
  Create my.cnf
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;touch &lt;/span&gt;mysql/versions/8.0.23/datadir/mysql8-name1/my.cnf
&lt;span class="nb"&gt;touch &lt;/span&gt;mysql/versions/8.0.23/datadir/mysql8-name2/my.cnf
&lt;span class="nb"&gt;touch &lt;/span&gt;mysql/versions/5.7.31/datadir/mysql5-name3/my.cnf
&lt;span class="nb"&gt;touch &lt;/span&gt;mysql/versions/5.7.31/datadir/mysql5-name4/my.cnf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Start MySQL server with custom datadir and port
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# MySQL 8.0.23 with port 13306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/my.cnf &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_13306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysql.pid

&lt;span class="c"&gt;# MySQL 8.0.23 with port 23306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/my.cnf &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;23306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_23306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysql.pid

&lt;span class="c"&gt;# MySQL 5.7.31 with port 33306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/my.cnf &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;33306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_33306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysql.pid

&lt;span class="c"&gt;# MySQL 5.7.31 with port 43306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--defaults-extra-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/my.cnf &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--daemonize&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;43306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_43306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysql.pid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Stop MySQL
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# MySQL 8.0.23 with port 13306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqladmin &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_13306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 shutdown

&lt;span class="c"&gt;# MySQL 8.0.23 with port 23306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqladmin &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;23306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_23306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 shutdown

&lt;span class="c"&gt;# MySQL 5.7.31 with port 33306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqladmin &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;33306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_33306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 shutdown

&lt;span class="c"&gt;# MySQL 5.7.31 with port 43306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqladmin &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;root &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;43306 &lt;span class="se"&gt;\&lt;/span&gt;
 &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_43306.sock &lt;span class="se"&gt;\&lt;/span&gt;
 shutdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Connect MySQL&lt;/li&gt;
&lt;li&gt;or just try &lt;a href="https://github.com/yuki777/dbdb"&gt;dbdb&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dbdb</category>
      <category>database</category>
      <category>mysql</category>
    </item>
    <item>
      <title>Create multiple MySQL database server on local Mac</title>
      <dc:creator>yuki777</dc:creator>
      <pubDate>Wed, 17 Mar 2021 02:50:55 +0000</pubDate>
      <link>https://forem.com/yuki777/create-multiple-mysql-database-server-on-local-mac-4k2m</link>
      <guid>https://forem.com/yuki777/create-multiple-mysql-database-server-on-local-mac-4k2m</guid>
      <description>&lt;h1&gt;
  
  
  Description
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;This section explains how to create multiple mysql servers locally.&lt;/li&gt;
&lt;li&gt;However, if you don't want to read that already, you can use &lt;a href="https://github.com/yuki777/dbdb" rel="noopener noreferrer"&gt;dbdb&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxamek8nczqmzvk7ddfz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxamek8nczqmzvk7ddfz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Download
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;First of all, Let's download MySQL source from &lt;a href="https://dev.mysql.com/downloads/mysql/" rel="noopener noreferrer"&gt;mysql.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Choose one or two what you want to use.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Install MySQL
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Extract mysql source into separated directory for each version.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 8.0.23&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd&lt;/span&gt;       ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/8.0.23/basedir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23/basedir
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.23-macos10.15-x86_64.tar.gz
&lt;span class="nb"&gt;tar &lt;/span&gt;zxf mysql-8.0.23-macos10.15-x86_64.tar.gz &lt;span class="nt"&gt;--strip-components&lt;/span&gt; 1

&lt;span class="c"&gt;# 5.7.31&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;cd&lt;/span&gt;       ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/5.7.31/basedir
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31/basedir
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.31-macos10.14-x86_64.tar.gz
&lt;span class="nb"&gt;tar &lt;/span&gt;zxf mysql-5.7.31-macos10.14-x86_64.tar.gz &lt;span class="nt"&gt;--strip-components&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Initialize MySQL server with custom datadir and port
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.mysql.com/doc/refman/8.0/en/server-options.html" rel="noopener noreferrer"&gt;MySQL 8.0 server options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.mysql.com/doc/refman/5.7/en/server-options.html" rel="noopener noreferrer"&gt;MySQL 5.7 server options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;By separating the socket and port, each mysql can be started as a separate process.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# MySQL 8.0.23 with port 13306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/8.0.23/datadir/mysql8-name1
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--initialize-insecure&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;13306 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_13306.sock &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name1/mysql.pid

&lt;span class="c"&gt;# MySQL 8.0.23 with port 23306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/8.0.23/datadir/mysql8-name2
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/8.0.23
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--initialize-insecure&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;23306 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_23306.sock &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql8-name2/mysql.pid

&lt;span class="c"&gt;# MySQL 5.7.31 with port 33306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/5.7.31/datadir/mysql5-name3
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--initialize-insecure&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;33306 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_33306.sock &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name3/mysql.pid

&lt;span class="c"&gt;# MySQL 5.7.31 with port 43306&lt;/span&gt;
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/tmp/path-to-your-dir
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; mysql/versions/5.7.31/datadir/mysql5-name4
&lt;span class="nb"&gt;cd &lt;/span&gt;mysql/versions/5.7.31
&lt;span class="nb"&gt;dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/bin/mysqld &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--initialize-insecure&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;_dbdb_mysql &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;43306 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--socket&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/tmp/dbdb_mysql_43306.sock &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--basedir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--plugin-dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/basedir/lib/plugin  &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--datadir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--log-error&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysqld.err &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--pid-file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$dir&lt;/span&gt;/datadir/mysql5-name4/mysql.pid
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  What's next?
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Start multiple MySQL database server on local Mac&lt;/li&gt;
&lt;li&gt;or just use &lt;a href="https://github.com/yuki777/dbdb" rel="noopener noreferrer"&gt;dbdb&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>dbdb</category>
      <category>database</category>
      <category>mysql</category>
    </item>
  </channel>
</rss>
