---
# System prepended metadata

title: '[Docker]MySQL安裝'
tags: [Docker]

---

# [Docker]MySQL安裝

## Docker映像
### 拉 image
```
D:\Users\00592227>docker pull mysql
```
### 列 image 列表
```
D:\Users\00592227>docker image ls
```
或是
```
D:\Users\00592227>docker images
```



## Docker容器
### 運行mysql容器
==方式一==
```
D:\Users\00592227>docker run --name mysql -p 3306:3306 --privileged  -e MYSQL_ROOT_PASSWORD=00592227 mysql
```
- run : docker 建立 container 並且執行的指令
- --name: 將容器取名為mysql
- -p 3306:3306 : 將容器的 3306 端口映射到主機的 3306 端口。
- --privileged: 提升至特權容器。
- -e MYSQL_ROOT_PASSWORD=Dev127336 : 初始化 root 用戶的密碼為00592227。
    - root-user:root(root的用戶名稱為root)
- 指令最後的mysql:指定要運行的是mysql image

==方式二==
```
docker run --name mysql -p 3306:3306 --privileged -e MYSQL_ROOT_PASSWORD=00592228 -d mysql
```
- -d mysql: 背景執行mysql映像，這樣就不需要再多開一個命令提示字元視窗，可以在同一個視窗繼續打指令。

### 列出啟動跟未啟動 container
```
D:\Users\00592227>docker ps -a
```

### 停止 mysql container
```
D:\Users\00592227>docker stop mysql
```

### 啟動 mysql container
```
D:\Users\00592227>docker start mysql
```


### 刪除 container
```
D:\Users\00592227>docker rm <container id or name>
```
:::info
:bulb: 刪除container並不會將volume(數據捲)一起刪除! 請參考下面的指令。
:::
### 刪除container同時刪除數據捲
```
docker rm -v containerId|containerName
```
### 透過volumeName來刪除數據捲
```
docker volume rm volumeName
```
- 會嘗試去刪除數據捲，如果該數據捲還被容器使用，那麼將刪除不成功。

## 進入mysql容器
### 方式一
- 執行 container mysql 啟動終端機 輸入bash mysql username root paseword 等下一行繼續
- 指令的第一個mysql為container name
- `docker exec -it mysql`代表進入mysql容器
- `mysql -u root -p` 使用root權限登入
```
D:\Users\00592227>docker exec -it mysql mysql -u root -p
Enter password:
mysql> create database demo;
mysql> use demo;
mysql> create table employee (EMPLOYEE_ID int primary key, NAME varchar(45), ROLE varchar(45));
mysql> insert into employee (EMPLOYEE_ID,NAME, ROLE) values (92228,'gina', 'PG');
mysql> select * from employee;
mysql> exit
```
### 方式二
- 執行 container mysql 啟動終端機 輸入bash。
- `docker exec -it mysql bash`進入到Linux操作環境。
- `mysql -u root -p`登入mysql
```
D:\Users\00592227>docker exec -it mysql bash
bash-4.4# mysql -u root -p
mysql> use demo;
mysql> select * from employee;
mysql> exit
bash-4.4# exit
```

## Docekr數據捲與掛載點
### 查看數據卷
```
D:\Users\00592227>docker volume ls
```

### 查看掛載點
```
D:\Users\00592227>docker container inspect mysql
```
看到output後搜尋Mounts，可看到數據捲的Name。
```
"Mounts"[
{ "Type": "volume",
  "Name": "......",
  ......
}
]
```
- container.mounts.name 有寫掛載點

## MySQL常用語法
### 資料庫/資料表相關
```sql=

-- 新建/刪除 資料庫/資料表
CREATE DATABASE test_db;
DROP DATABASE test_db;


CREATE TABLE employee
(
    name VARCHAR(10)  NOT NULL,
    age INT
);
DROP TABLE employee;

-- 資料表重新命名
RENAME TABLE employee TO employee1;

-- 資料庫之間資料表搬移
RANAME TABLE db1.employee TO db2.employee;

-- 清空資料表
TRUNCATE TABLE employee;


```

### 欄位變更
```sql=
-- 增加欄位
ALTER TABLE employee ADD nickname VARCHAR(10);

-- 更改欄位資料型別
ALTER TABLE employee MODIFY COLUMN age VARCHAR(3);

-- 刪除欄位
ALTER TABLE employee DROP COLUMN age;
```
 
###### tags: `Docker`

