在docker中使用MySQL

2021-10-10 11:18:40 字數 2063 閱讀 6216

docker pull mysql:5.7.32
版本查詢:

檢視常用docker 命令

建立目錄,用於宿主機與容器的對映,以便將資料儲存在宿主機,而不是容器中。

/usr/local/docker/mysql/conf,配置檔案

/usr/local/docker/mysql/logs,日誌檔案

/usr/local/docker/mysql/data,資料檔案

在/usr/local/docker/mysql/conf目錄下建立檔案:my.cnf。新增內容

[mysql]

# 客戶端預設字符集

default-character-set=utf8mb4

[mysqld]

#服務端使用的字符集

character-set-server=utf8mb4

init_connect='set names utf8mb4'

# 允許的最大連線數

max-connections=200

sql_mode ='strict_trans_tables,error_for_division_by_zero,no_auto_create_user,no_engine_substitution'

# 每個資料表使用乙個檔案

innodb_file_per_table=1

配置根據自己實際情況設定

docker run -itd \

--name mysql \

-p 3306:3306 \

-v /usr/local/docker/mysql/conf:/etc/mysql \

-v /usr/local/docker/mysql/logs:/var/log/mysql \

-v /usr/local/docker/mysql/data:/var/lib/mysql \

-e mysql_root_password=123456 \

mysql:5.7.32

docker exec -it mysql /bin/bash
進入容器後,使用設定的密碼(123456)登入mysql並操作

mysql -uroot -p
# 建立資料庫

create database onlinecourse default charset utf8mb4;

use onlinecourse;

# 建立測試表

create table t_user (

`id` char(32) not null,

`cn_name` varchar(100) default null,

primary key (`id`))

engine innodb;

可在/usr/local/docker/mysql/data/onlinecourse目錄看到新建表對應的檔案:t_user.frm, t_user.ibd

前提是宿主機可執行mysql命令。

mysql -uroot -p -h172.17.0.1
-h:指定mysql容器的ip位址,這個172.17.0.1是docker虛擬網絡卡的ip。

通常不需要設定就可以在宿主機使用root賬號登入容器中的mysql

現象:宿主機無法登入

解決方案:登入mysql容器後,登入mysql,新增可遠端訪問的賬戶

grant all privileges on *.* to 'akio'@'%' identified by '123321';

flush privileges;

重新在宿主機登入

mysql -uakio -p -h172.17.0.1

在 Docker 中使用 MongoDB

如果你是一名 mongodb 的初學者,那麼你入門 mongodb 的第一件事就是安裝,但是安裝 mongodb 還需要自己配置一些服務。這時候,docker 就能幫上大忙,它能夠讓你不需要本地安裝 mongodb 就能使用。首先你的電腦上需要 安裝 docker,然後在 docker 的映象中查詢...

在docker中使用U盤

最初的解決方案是對映host中固定的目錄到container中,但是只能把u盤中的資料拷貝到固定的目錄中,在container中才可以看到。如果在container建立前把u盤mount到固定目錄,這個也沒有問題。如果在container建立以後,再把u盤mount到固定的目錄中,在containe...

在MySQL中使用memcached

這裡提供了一組mysql的udf函式,可以直接在sql中操作memcached。安裝比較簡單,需要安裝 libmemcached 0.12.tar.gz,然後安裝 memcached functions mysql 0.1.tar.gz就可以了。它的幫助檔案中提供了使用方法。只是需要設定ld lib...